Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
KarimSoto committed Jun 3, 2024
2 parents 090f4d7 + 2b6803f commit bc2638b
Show file tree
Hide file tree
Showing 19 changed files with 234 additions and 122 deletions.
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,12 @@
</div>
<hr>

# ⚠️ AVISO: Continuación del proyecto ⚠️
Por cuestiones de tiempo y circunstancias en las que se desarrolló este proyecto, este código se archivó el día miércoles 5 de junio a las 20:00 hrs. y no será modificado en el futuro.

Si deseas continuar con el proyecto o tomar plantillas del mismo, es necesario enviarme un correo a <a href="mailto:a21490577@itmexicali.edu.mx">a21490577@itmexicali.edu.mx</a> para darte las instrucciones correspondientes y los recursos que puedas necesitar.

Muchas gracias.

# Licencia
El código íntegro de este proyecto se distribuye bajo la licencia de <a href="https://github.com/createchsoftware/armony/blob/main/LICENSE">The Unlicense</a> dado a que es un proyecto escolar. Algunas imagenes son propiedad de <a href="https://www.irasutoya.com/">いらすとや (Irasutoya)</a> o están distribuidas bajo licencias Creative Commons.
El código íntegro de este proyecto se distribuye bajo la licencia de <a href="https://github.com/createchsoftware/armony/blob/main/LICENSE">The Unlicense</a> dado a que es un proyecto escolar. Algunas imagenes son propiedad de <a href="https://www.irasutoya.com/">Irasutoya</a> o están distribuidas bajo licencias Creative Commons.
38 changes: 30 additions & 8 deletions client/src/components/ui/Carrito.jsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import React, { useEffect, useState, createContext, useContext } from 'react';
import { useEffect, useState, createContext, useContext } from 'react';
import { Rating } from '@mui/material';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faTrash, faCircleXmark, faCircleMinus, faCirclePlus } from '@fortawesome/free-solid-svg-icons';
import PagoProducto from '../../pages/PagoProducto';
const CarritoContext = createContext();
import { Navigate, useNavigate } from "react-router-dom";
import { useNavigate } from "react-router-dom";

export const CarritoProvider = ({ children }) => {

localStorage.setItem('tarjeta',null)
localStorage.setItem('monedero',-1)

const [cartItems, setCartItems] = useState(() => {
const savedCart = localStorage.getItem('cartItems');
return savedCart ? JSON.parse(savedCart) : [];
Expand Down Expand Up @@ -82,18 +84,41 @@ export const CarritoProvider = ({ children }) => {

export const useCarrito = () => useContext(CarritoContext);

const Carrito = ({ cerrar, totalProductos, logCart, loginCart }) => {
const Carrito = ({ cerrar, totalProductos, logCart }) => {
const { cartItems, eliminarDelCarrito, increaseQuantity, decreaseQuantity } = useCarrito();
const [log, setLog] = useState(false);

const navigate = useNavigate();

async function recibido() {
const respuesta = await fetch("/api/logueado", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});

if (!respuesta.ok) {
setLog(false);
}

let respuestaJson = await respuesta.json();

if (respuestaJson.logueado == true) {
setLog(true);
} else {
setLog(false);
}
}

const enviarTotal = () => {
const total = cartItems.reduce((total, item) => total + item.cantidad, 0);
totalProductos(total);
};

useEffect(() => {
enviarTotal();
recibido();
}, [])

const handleComprar = () => {
Expand Down Expand Up @@ -173,12 +198,9 @@ const Carrito = ({ cerrar, totalProductos, logCart, loginCart }) => {
<p>Total:</p>
<span className='font-bold'>${total}</span>
</div>
<button className='m-auto w-full hover:bg-opacity-90 rounded-xl py-2 px-6 text-white bg-[#45B59C]' onClick={handleComprar}>
<button className='m-auto w-full hover:bg-opacity-90 rounded-xl py-2 px-6 text-white bg-[#45B59C]' onClick={log ? (handleComprar):(logCart)}>
Comprar
{/* {loginCart ? 'Proceder al Pago' : 'Iniciar Sesión'} */}
</button>


</>
)}
</div>
Expand Down
2 changes: 1 addition & 1 deletion client/src/components/ui/Navbar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ function Navbar() {
{cart && (
<div className="overflow-y-auto cart-fondo">
<div className="overflow-y-auto cart-fx">
<Carrito cerrar={toggleCart} totalProductos={cantProductos} cartLogin={toggleLogin} />
<Carrito cerrar={toggleCart} totalProductos={cantProductos} logCart={toggleLogin} />
</div>
</div>
)}
Expand Down
5 changes: 3 additions & 2 deletions client/src/components/ui/Pago.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,10 @@ function Pago({ producto, next }) {
}


const togglePago = (tarjeta) => {
const togglePago = (tarjeta,mone) => {
setPagoRealizado(!pagoRealizado);
localStorage.setItem('tarjeta', tarjeta);
localStorage.setItem('monedero', mone);
}
// const datosRecibidos = (nuevaTarjeta) => {
// setTarjetas([...tarjetas, {id: 3, noTarjeta: {nuevaTarjeta}, tipo: "Débito", banco: "BBVA", code: "****"}]);
Expand All @@ -125,7 +126,7 @@ function Pago({ producto, next }) {
<h1 className="text-xl">{item.tipo}</h1>
{/* <h1 className="text-xl">{item.code}</h1> */}
<h1 className="text-xl">****{item.numero_tarjeta.slice(0, 4)}</h1>
<button onClick={() => togglePago(item.numero_tarjeta)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
<button onClick={()=>togglePago(item.numero_tarjeta,null)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
</li>
))) : (<div></div>)
return (
Expand Down
10 changes: 6 additions & 4 deletions client/src/components/ui/PagoDeProducto.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ function Pago({ producto, next }) {
const [Uid, setUid] = useState(null);
const [descuento, setDescuento] = useState('');
const [monedero, setMonedero] = useState(null);


const [cartItems, setCartItems] = useState(() => {
if (producto) {
Expand All @@ -34,9 +35,9 @@ function Pago({ producto, next }) {
const cantidadProductos = cartItems.reduce((sum, producto) => sum + producto.cantidad, 0);
const subTotal = cartItems.reduce((acc, item) => acc + item.precio * item.cantidad, 0).toFixed(2);
const ivaTotal = (parseFloat(subTotal) * 0.08).toFixed(2);
localStorage.setItem('totalIva',ivaTotal)
const total = (parseFloat(subTotal) + parseFloat(ivaTotal)).toFixed(2);
localStorage.setItem('total',total)
localStorage.setItem('subTotal',subTotal)


useEffect(() => {
Expand Down Expand Up @@ -111,9 +112,10 @@ function Pago({ producto, next }) {
const toggleTarjeta = (tarj) => {
setTarjeta(!tarjeta);
}
const togglePago = (tarjeta) => {
const togglePago = (tarjeta,mone) => {
setPagoRealizado(!pagoRealizado);
localStorage.setItem('tarjeta', tarjeta);
localStorage.setItem('monedero', mone);
}
// const datosRecibidos = (nuevaTarjeta) => {
// setTarjetas([...tarjetas, {id: 3, noTarjeta: {nuevaTarjeta}, tipo: "Débito", banco: "BBVA", code: "****"}]);
Expand All @@ -131,7 +133,7 @@ function Pago({ producto, next }) {
<h1 className="text-xl">{item.tipo}</h1>
{/* <h1 className="text-xl">{item.code}</h1> */}
<h1 className="text-xl">{item.numero_tarjeta.slice(0, 4)}</h1>
<button onClick={()=>togglePago(item.numero_tarjeta)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
<button onClick={()=>togglePago(item.numero_tarjeta,null)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
</li>
);
}
Expand All @@ -141,7 +143,7 @@ function Pago({ producto, next }) {
<img src={"../../../pictures/" + item.imagen} className="w-1/5 h-auto" />
<h1 className="text-xl">{item.monedero}</h1>
<h1 className="text-xl">{item.tipo}</h1>
<button onClick={()=>togglePago(item.monedero)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
<button onClick={()=>togglePago(null,item.monedero)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
</li>
);
}
Expand Down
13 changes: 8 additions & 5 deletions client/src/components/ui/PagoDeSuscripcion.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ function Pago({ producto, next }) {
const puntos = localStorage.getItem('puntosSuscripcion');
const ivaTotal = (parseFloat(subTotal) * 0.08).toFixed(2);
const total = (parseFloat(subTotal) + parseFloat(ivaTotal)).toFixed(2);

localStorage.setItem('total',total)
localStorage.setItem('subTotal',subTotal)
console.log(subTotal, puntos, ivaTotal, total);

useEffect(() => {
Expand Down Expand Up @@ -96,10 +97,12 @@ function Pago({ producto, next }) {

const toggleTarjeta = () => {
setTarjeta(!tarjeta);
localStorage.setItem('tarjeta', tarjeta);

}
const togglePago = () => {
const togglePago = (tarjeta,mone) => {
setPagoRealizado(!pagoRealizado);
localStorage.setItem('tarjeta', tarjeta);
localStorage.setItem('monedero', mone);
}
// const datosRecibidos = (nuevaTarjeta) => {
// setTarjetas([...tarjetas, {id: 3, noTarjeta: {nuevaTarjeta}, tipo: "Débito", banco: "BBVA", code: "****"}]);
Expand All @@ -117,7 +120,7 @@ function Pago({ producto, next }) {
<h1 className="text-xl">{item.tipo}</h1>
{/* <h1 className="text-xl">{item.code}</h1> */}
<h1 className="text-xl">{item.numero_tarjeta.slice(0, 4)}</h1>
<button onClick={togglePago} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
<button onClick={()=>togglePago(item.numero_tarjeta,null)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
</li>
);
}
Expand All @@ -127,7 +130,7 @@ function Pago({ producto, next }) {
<img src={"../../../pictures/" + item.imagen} className="w-1/5 h-auto" />
<h1 className="text-xl">{item.monedero}</h1>
<h1 className="text-xl">{item.tipo}</h1>
<button onClick={togglePago} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
<button onClick={()=>togglePago(null,item.monedero)} className='bg-[#ec5766] text-xl text-white px-10 py-2 rounded-full duration-200 hover:bg-[#ffb5a7]'>Continuar</button>
</li>
);
}
Expand Down
21 changes: 18 additions & 3 deletions client/src/components/ui/PagoRealizado.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,30 @@ function PagoRealizado({ cerrarPago, total, next }) {
useEffect(() => {//cuando se muestre el popup se realizara la venta y en consecuente la cita
//se hara de esta forma para poderlo adaptar al uso de una api para cobrar
const realizarVentaYCita = async () => {

if (cliente) {
let card;
let money;

console.log(localStorage.getItem('monedero'),localStorage.getItem('tarjeta'))

if(Number(localStorage.getItem('monedero'))>0){
money=1
card=null;
}
else if(localStorage.getItem('tarjeta')!==null){
card=localStorage.getItem('tarjeta')
money=0;
}
try {
const responseVenta = await fetch("/api/admin/citas/venta", {
method: "POST",
body: JSON.stringify({
idCliente: cliente.ID,
nombre: null,
phone: null,
tarjeta: localStorage.getItem('tarjeta'),
monedero: 0,
tarjeta:card,
monedero:money,
estadoPago: "pagada",
subTotal: Number(localStorage.getItem('totalIva')),
total: Number(localStorage.getItem('total')),
Expand All @@ -61,9 +75,10 @@ function PagoRealizado({ cerrarPago, total, next }) {
console.log('Respuesta de la venta:', dataVenta);


await fetch(`/api/admin/citas/idVentaCita/${cliente.ID}`)
await fetch(`/api/admin/citas/idVentaCita/${cliente.ID}/cita/${cliente.telefono}`)
.then(response => response.json())
.then(data => {
console.log(data[0].pkIdVenta)
localStorage.setItem('idventaCita',data[0].pkIdVenta);
})
.catch(error => {
Expand Down
21 changes: 18 additions & 3 deletions client/src/components/ui/PagoRealizadoProducto.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,30 @@ function PagoRealizado({ cerrarPago, total, next }) {

useEffect(() => {//cuando se muestre el popup se realizara la venta y en consecuente la cita
//se hara de esta forma para poderlo adaptar al uso de una api para cobrar

const realizarVentaYCita = async () => {
if (cliente) {
let card;
let money;

console.log(localStorage.getItem('monedero'),localStorage.getItem('tarjeta'))

if(Number(localStorage.getItem('monedero'))>0){
money=1
card=null;
}
else if(localStorage.getItem('tarjeta')!==null){
card=localStorage.getItem('tarjeta')
money=0;
}
try {
const responseVenta = await fetch("/api/admin/productos/createVentaProduct", {
method: "POST",
body: JSON.stringify({
idCliente: cliente.ID,
tarjeta: localStorage.getItem('tarjeta'),
monedero: 0,
subTotal: Number(localStorage.getItem('totalIva')),
tarjeta: card,
monedero: money,
subTotal: Number(localStorage.getItem('subTotal')),
total: Number(localStorage.getItem('total')),
impuesto: 18.00,
}),
Expand Down Expand Up @@ -104,6 +118,7 @@ function PagoRealizado({ cerrarPago, total, next }) {
};

realizarVentaYCita();

}, [cliente]);


Expand Down
Loading

0 comments on commit bc2638b

Please sign in to comment.