diff --git a/frontend/src/AppInicio.jsx b/frontend/src/AppInicio.jsx
index 0e4be85..59ce1cf 100644
--- a/frontend/src/AppInicio.jsx
+++ b/frontend/src/AppInicio.jsx
@@ -20,7 +20,7 @@ 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 Swal from 'sweetalert2';
//import PopupV from "/src/Popups/PopupLoginValido.jsx";
//import PopupIv from "/src/Popups/PopupLoginInvalido.jsx";
diff --git a/frontend/src/Pedidos.css b/frontend/src/Pedidos.css
index 47683d8..9fcc7d4 100644
--- a/frontend/src/Pedidos.css
+++ b/frontend/src/Pedidos.css
@@ -97,7 +97,7 @@
display: flex; /* Añadir esta propiedad para usar flexbox */
width: 700px;
gap: 1.5rem;
- height: 215px;
+ height: 230px;
margin: 20px;
padding: 15px;
border: 1px solid #ccc;
@@ -108,8 +108,9 @@
/* Estilos para la imagen */
.imagenPastel {
- width: 100%;
+ width: 300px;
height: 100%; /* Ajustar al 100% del contenedor padre */
+ object-fit: cover;
background-repeat: no-repeat;
background-size: 100% auto;
border-radius: 8px; /* Añadir bordes redondeados solo a la izquierda */
diff --git a/frontend/src/Pedidos.jsx b/frontend/src/Pedidos.jsx
index a546639..8bb462b 100644
--- a/frontend/src/Pedidos.jsx
+++ b/frontend/src/Pedidos.jsx
@@ -12,6 +12,12 @@ 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";
+//imagenes de pastel de fresas
+import pastel_fresa_original from "./assets/Pastel-fresa-original.png";
+import pastel_fresa_arcoiris from "./assets/Pastel-fresas-arcoiris.png";
+import pastel_fresa_oreo from "./assets/Pastel-fresas-oreo.png";
+import pastel_fresa_vainilla from "./assets/Pastel-fresas-vainilla.png";
import pastelZarza from "./assets/pastel-zarza.jpg"
@@ -20,64 +26,164 @@ function Pedidos() {
const [count, setCount] = useState(0);
const navigate = useNavigate();
+const [pedidosDePasteles, setPedidosDePasteles] = useState([]);
+
+const [datosFormulario, setDatosFormulario] = useState(
+ {correo: '',
+ password: '',
+ nombre: ''
+});
+
+
+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();
+ obtenerPedidosDePasteles();
+ console.log("obtuvo los pedidos");
+ }, []);
+
+ 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);
+ }
+ };
+
+ const mostrarAlertaPedidoFallidaLogin=()=>{
+ Swal.fire({
+ title: "Pedido Fallida",
+ text: "Inicia Sesion para poder hacer un pedido.",
+ icon: "error",
+ button: "Aceptar"
+
+ });
+ };
+
+
+
+ const obtenerPedidosDePasteles = async () => {
+ try {
+ const response = await axios.post('http://localhost:4567/frontend/obtenerPedidosDePasteles');
+ console.log("Pedidos de pasteles obtenidos:", response.data.pedidos_de_pasteles);
+ // Almacena los pedidos de pasteles en el estado
+ setPedidosDePasteles(response.data.pedidos_de_pasteles);
+ } catch (error) {
+ console.error("Error al obtener pedidos de pasteles:", error);
+ }
+ };
+
+
const redirectPersonalizarPastelArcoiris = () => {
// Redirige a la página del hotel cuando se hace clic en el botón
navigate("/PersonalizarPastel/PastelArcoiris");
- };
-
- const redirectToPedidos = () => {
- navigate("/Pedidos");
-
- };
-
- const redirectToPasteles = () => {
- navigate("/Pasteles");
- };
-
- const redirectInicio = () => {
+ };
+
+ const redirectInicio = () => {
// Redirige a la página del hotel cuando se hace clic en el botón
navigate("/");
- };
-
- useEffect(() => {
- setNombreUsuario("Mario");
- }, []);
-
- const [nombreUsuario, setNombreUsuario]=useState("");
+ };
+ const redirectToLogin = () => {
+
+ navigate("/Login");
+ };
+
+ const redirectToPedidos = () => {
+ navigate("/Pedidos");
+
+ };
+
+ const redirectToPasteles = () => {
+ navigate("/Pasteles");
+ };
const [pedidos, setPedidos] = useState([]);
const generarPedidos = () => {
-
- if(nombreUsuario==null){
+ if (nombreUsuario == null) {
return (
-
Inicia Sesion para poder ver tus reservaciones.
+ Inicia Sesión para poder ver tus pedidos de pasteles.
);
- }else{
-
- if(!pedidos){
- return(
-
- No tienes pedidos en este momento.
+ } else {
+ if (pedidosDePasteles.length === 0) {
+ return (
+ No tienes pedidos de pasteles en este momento.
);
-
-
- }else{
+ } else {
return (
-
+ {pedidosDePasteles.map(pedido => (
+
+
+
-
+ {pedido.nombre_pastel === 'Pastel de Fresas' ? (
+ pedido.relleno === 'Original' ?
:
+ pedido.relleno === 'Arcoiris' ?
:
+ pedido.relleno === 'Oreo' ?
:
+ pedido.relleno === 'Vainilla' ?
:
+
// Si el relleno no coincide con ninguno de los anteriores
+ ) : (
+
// Si el pastel no es de fresas
+ )}
+
+
-
{"Pastel Arcoiris"/*reserva.nombre_hotel*/}
-
Precio de la reservación: ${500/*reserva.precio*/}
-
mostrarAlertaEliminarRes(reserva.id_reservacion,reserva.nombre_hotel)}*/>
+ {pedido.nombre_pastel}
+ Precio del pastel: ${pedido.precio}
+ Tamaño: {pedido.tamaño}
+ Estatus: {pedido.estatus}
+ Inscripción: {pedido.inscripcion}
+ Relleno: {pedido.relleno}
+ mostrarAlertaEliminarRes(pedido.id_pedido, pedido.nombre_pastel)}>
Eliminar Pedido
-
+ ))}
);
}
@@ -119,11 +225,20 @@ function Pedidos() {
diff --git a/frontend/src/PersPastel1.jsx b/frontend/src/PersPastel1.jsx
index d02fa34..ff605a6 100644
--- a/frontend/src/PersPastel1.jsx
+++ b/frontend/src/PersPastel1.jsx
@@ -1,6 +1,8 @@
-import React, { useState } from "react";
+import React, { useState, useEffect } from "react";
import './PersPastelStyle.css';
+import { Button, Select, MenuItem, TextField, Box } from '@mui/material';
+
import { RiCustomerService2Fill } from "react-icons/ri";
import { FaUser } from "react-icons/fa";
import { LuShoppingBasket } from "react-icons/lu";
@@ -9,12 +11,50 @@ 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 pastelArcoirisFondo from "./assets/pastel-zarza.jpg"
-import pastelArcoiris from "./assets/pastel1.jpg"
+import axios from 'axios';
+import pastel_fresa_original from "./assets/Pastel-fresa-original.png";
+import pastel_fresa_arcoiris from "./assets/Pastel-fresas-arcoiris.png";
+import pastel_fresa_oreo from "./assets/Pastel-fresas-oreo.png";
+import pastel_fresa_vainilla from "./assets/Pastel-fresas-vainilla.png";
+import Swal from 'sweetalert2'
+import pastelTexto from "./assets/pastel-texto.jpg"
function Pastel() {
const navigate = useNavigate();
+ const [quantity, setQuantity] = useState(1);
+
+ const [textoEncima, setTextoEncima] = useState("");
+
+ const [textoCantidad, setTextoCantidad] = useState("");
+
+ const [textoRelleno, setTextoRelleno] = useState("");
+
+ const [textoTipo, setTextoTipo] = useState("");
+
+
+
+
+ const [datosPastel, setDatosPastel] = useState(
+ {
+ texto: '',
+ quantity: 1
+
+});
+
+const [datosPastelEnviar, setDatosPastelEnviar] = useState(
+ {
+ texto: textoEncima,
+ quantity: datosPastel.quantity
+
+});
+
+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");
@@ -24,16 +64,256 @@ function Pastel() {
// Redirige a la página del hotel cuando se hace clic en el botón
navigate("/");
};
+ const redirectToLogin = () => {
+
+ navigate("/Login");
+ };
+
+ const redirectToPedidos = () => {
+ navigate("/Pedidos");
+
+ };
+
+ const redirectToPasteles = () => {
+ navigate("/Pasteles");
+ };
- const [imagenVisible, setImagenVisible] = useState(pastelArcoiris);
-
- const cambiarImagen = () => {
- if (imagenVisible === pastelArcoiris) {
- setImagenVisible(pastelArcoirisFondo);
- } else {
- setImagenVisible(pastelArcoiris);
+ const [lastSelectedImage, setLastSelectedImage] = useState(pastel_fresa_original);
+ const [imagenVisible, setImagenVisible] = useState(pastel_fresa_original);
+ const [inputActivo, setInputActivo] = useState(false);
+ const cambiarImagenBoton = (nuevaImagen) => {
+ if (!inputActivo) {
+ setImagenVisible(nuevaImagen);
+ setLastSelectedImage(nuevaImagen);
}
};
+
+ const handleChange = (event) => {
+ setImagenVisible(pastelTexto);
+ setDatosPastel(prevState => ({
+ ...prevState, // Clona el estado actual
+ texto: event.target.value, // Establece el campo 'correo' con el valor del evento
+ }));
+
+ };
+
+ const handleInputFocus = () => {
+ console.log(textoEncima);
+ setDatosPastel(prevState => ({
+ ...prevState, // Clona el estado actual
+ texto: textoEncima, // Establece el campo 'correo' con el valor del evento
+ }));
+
+ //console.log("hola");
+
+
+ setImagenVisible(pastelTexto);
+ };
+
+ const handleInputBlur = () => {
+
+ setTextoEncima(datosPastel.texto);
+ console.log(textoEncima);
+ setDatosPastel(prevState => ({
+ ...prevState, // Clona el estado actual
+ texto: "", // Establece el campo 'correo' con el valor del evento
+ }));
+ setImagenVisible(lastSelectedImage);
+ };
+
+ const handleDocumentClick = (event) => {
+ // Comprueba si el clic ocurrió fuera del input
+ if (!event.target.matches("#inscription")) {
+ }
+ };
+
+ React.useEffect(() => {
+
+ setTextoRelleno("Original");
+ document.addEventListener("click", handleDocumentClick);
+ return () => {
+ document.removeEventListener("click", handleDocumentClick);
+ };
+ }, []);
+
+
+ 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);
+ }
+ };
+
+ const mostrarAlertaPedidoFallidaLogin=()=>{
+ Swal.fire({
+ title: "Pedido Fallida",
+ text: "Inicia Sesion para poder hacer un pedido.",
+ icon: "error",
+ button: "Aceptar"
+
+ });
+ }
+
+ const handleIncrement = () => {
+ setQuantity((prevQuantity) => prevQuantity + 1);
+ };
+
+ const handleDecrement = () => {
+ setQuantity((prevQuantity) => (prevQuantity > 1 ? prevQuantity - 1 : 1));
+ };
+
+ const mostrarAlertaReservaFallidaPers=()=>{
+ Swal.fire({
+ title: "Pedidos Info",
+ text: "Solo hay pasteles de hasta 12 personas.",
+ icon: "info",
+ button: "Aceptar"
+
+ });
+ };
+
+ const mostrarAlertaReservaExitosa=()=>{
+ Swal.fire({
+ title: "Pedido Exitosa",
+ text: "Tu Pedido se ha realizado correctamente.",
+ icon: "success",
+ button: "Aceptar"
+
+ });
+ };
+
+
+
+ const handleQuantityChange = (value) => {
+ if (value >= 1 && value <= 12) {
+ setQuantity(value);
+ setDatosPastel((prevData) => ({ ...prevData, quantity: value }));
+ } else {
+ mostrarAlertaReservaFallidaPers();
+ }
+ };
+
+ const clickBotonOriginal = () => {
+ cambiarImagenBoton(pastel_fresa_original);
+ setTextoRelleno("Original");
+
+ };
+
+ const clickBotonArcoiris = () => {
+ cambiarImagenBoton(pastel_fresa_arcoiris);
+ setTextoRelleno("Arcoiris");
+
+ };
+
+ const clickBotonOreo = () => {
+ cambiarImagenBoton(pastel_fresa_oreo);
+ setTextoRelleno("Oreo");
+
+ };
+
+ const clickBotonVainilla = () => {
+ cambiarImagenBoton(pastel_fresa_vainilla);
+ setTextoRelleno("Vainilla");
+
+ };
+
+
+ const hacerPedidoPastel1 = async () => {
+ console.log("Fresas");
+ console.log(datosPastel.quantity);
+ console.log(textoEncima);
+ console.log(textoRelleno);
+
+ try{
+
+ if(nombreUsuario==null){
+ mostrarAlertaPedidoFallidaLogin();
+
+ }else{
+
+ const response = await axios.post('http://localhost:4567/frontend/hacerPedidoPastel1', {
+ textoEncima: textoEncima,
+ textoCantidad: datosPastel.quantity,
+ textoRelleno: textoRelleno,
+ textoTipo: textoTipo
+ });
+
+ console.log(response.data);
+ mostrarAlertaReservaExitosa();
+
+ // Limpiar los estados después de hacer el pedido
+ setDatosPastel({ texto: "", quantity: 1 });
+ setTextoEncima("");
+ setTextoCantidad("");
+ setTextoRelleno("Original");
+ setTextoTipo("");
+ setDatosPastel({ texto: "", quantity: 1 });
+ setQuantity(1);
+ cambiarImagenBoton(pastel_fresa_original);
+
+
+ }
+
+ }catch(error){
+ console.error("Error al hace el pedido");
+ throw error;
+
+ }
+
+
+
+ };
+
+
+
return (
<>
@@ -59,9 +339,7 @@ function Pastel() {
@@ -72,14 +350,22 @@ function Pastel() {
+