diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 2724358..1e1462d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15,7 +15,9 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^5.1.0", - "react-router-dom": "^6.23.0" + "react-router-dom": "^6.23.0", + "sweetalert": "^2.1.2", + "sweetalert2": "^11.11.0" }, "devDependencies": { "@types/react": "^18.2.66", @@ -2412,6 +2414,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -4094,6 +4101,11 @@ "node": ">= 0.8.0" } }, + "node_modules/promise-polyfill": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz", + "integrity": "sha512-g0LWaH0gFsxovsU7R5LrrhHhWAWiHRnh1GPrhXnPgYsDkIqjRYUYSZEsej/wtleDrz5xVSIDbeKfidztp2XHFQ==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -4650,6 +4662,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sweetalert": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz", + "integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "promise-polyfill": "^6.0.2" + } + }, + "node_modules/sweetalert2": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.11.0.tgz", + "integrity": "sha512-wKCTtoE6lQVDKaJ5FFq+znk/YykJmJlD8RnLZps8C7DyivctCoRlVeeOwnKfgwKS+QJYon7s++3dmNi3/am1tw==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 4bbbe86..0694e73 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,7 +17,9 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^5.1.0", - "react-router-dom": "^6.23.0" + "react-router-dom": "^6.23.0", + "sweetalert": "^2.1.2", + "sweetalert2": "^11.11.0" }, "devDependencies": { "@types/react": "^18.2.66", diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg index e7b8dfb..40d10df 100644 --- a/frontend/public/vite.svg +++ b/frontend/public/vite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/src/AppInicio.css b/frontend/src/AppInicio.css index 4fdddf1..5f3ae1d 100644 --- a/frontend/src/AppInicio.css +++ b/frontend/src/AppInicio.css @@ -1149,4 +1149,22 @@ html { align-items: center; text-align: left; color:var(--primary-color) -} \ No newline at end of file +} + + +.enlace a { + font-weight: 500; + color: var(--texto-claro); + transition: 0.3s; + } + + .enlace a:hover { + color: var(--color-primario); + } + +.enlaceNombre{ + margin-left: 600px; +} + + + \ No newline at end of file diff --git a/frontend/src/AppInicio.jsx b/frontend/src/AppInicio.jsx index fc99861..0e4be85 100644 --- a/frontend/src/AppInicio.jsx +++ b/frontend/src/AppInicio.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import React, {useEffect, useState} from "react"; import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './AppInicio.css' @@ -10,7 +10,7 @@ import { CiHeart } from "react-icons/ci"; import { FaRegEye } from "react-icons/fa"; import { CiShare2 } from "react-icons/ci"; import { useNavigate } from "react-router-dom"; - +import axios from 'axios'; import PastelEditado1 from "./assets/Edicion1.jpg"; import PastelEditado2 from "./assets/Edicion2.jpg"; import PastelEditado3 from "./assets/Edicion3.jpg"; @@ -20,15 +20,28 @@ import PastelEditado6 from "./assets/Edicion6.jpg"; import PastelZanahoria from "./assets/Pastel-Zanahoria.jpg"; import MejoresPasteles from "./assets/MejoresPasteles.jpg"; import PastelTematico from "./assets/pastel-tematico.jpg"; +import Swal from 'sweetalert2' +//import PopupV from "/src/Popups/PopupLoginValido.jsx"; +//import PopupIv from "/src/Popups/PopupLoginInvalido.jsx"; function App() { const [count, setCount] = useState(0); const navigate = useNavigate(); + const [datosFormulario, setDatosFormulario] = useState( + {correo: '', + password: '', + nombre: '' +}); + const redirectPersonalizarPastelArcoiris = () => { - // Redirige a la página del hotel cuando se hace clic en el botón + navigate("/PersonalizarPastel/PastelArcoiris"); }; + const redirectToLogin = () => { + + navigate("/Login"); + }; const redirectToPedidos = () => { navigate("/Pedidos"); @@ -40,7 +53,7 @@ function App() { }; const redirectInicio = () => { - // Redirige a la página del hotel cuando se hace clic en el botón + navigate("/"); }; @@ -56,51 +69,116 @@ function App() { navigate("/Pasteles/PastelChocolate") }; + const mostrarAlertaLogOut = () => { + Swal.fire({ + title: "Cerrar Sesión", + text: "¿Seguro que quieres cerrar sesión?", + icon: "warning", + showCancelButton: true, // Mostrar el botón de cancelar + confirmButtonColor: "#3085d6", // Color del botón de confirmar + cancelButtonColor: "#d33", // Color del botón de cancelar + confirmButtonText: "Sí", // Texto del botón de confirmar + cancelButtonText: "No", // Texto del botón de cancelar + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + text: "Sesión cerrada correctamente. Adiós " + nombreUsuario + "", + icon: "success", + }); + cerrarSesion(); + } + }); + }; + + const [nombreUsuario, setNombreUsuario]=useState(""); + + const obtenerNombreUsuario = async () => { + try { + // Realizar la llamada al backend para obtener el nombre del usuario + const response = await axios.post('http://localhost:4567/frontend/obtenerUsuario', { datosFormulario }); + setNombreUsuario(response.data.nombre); + console.log(nombreUsuario); + console.log("hola"+ datosFormulario.nombre); + } catch (error) { + // Manejar el error según tus necesidades + console.error("Error al obtener el nombre del usuario", error); + } + }; + + useEffect(() => { + // Llamar a la función al cargar la página + obtenerNombreUsuario(); + }, []); + + const cerrarSesion = async () => { + try { + // Realizar la llamada al backend para obtener el nombre del usuario + const response = await axios.post('http://localhost:4567/frontend/cerrarSesion', { datosFormulario }); + setNombreUsuario(response.data.nombre); + console.log(nombreUsuario); + obtenerNombreUsuario(); + //mostrarAlertaLogOut(); + } catch (error) { + // Manejar el error según tus necesidades + console.error("Error al obtener el nombre del usuario", error); + } + }; + + + return ( <>