diff --git a/src/ConferenceEvent.jsx b/src/ConferenceEvent.jsx index 612a4648..9d6e1d04 100644 --- a/src/ConferenceEvent.jsx +++ b/src/ConferenceEvent.jsx @@ -1,12 +1,16 @@ import React, { useState } from "react"; import "./ConferenceEvent.css"; import TotalCost from "./TotalCost"; +import { toggleMealSelection } from "./mealsSlice"; +import { incrementAvQuantity, decrementAvQuantity } from "./avSlice"; import { useSelector, useDispatch } from "react-redux"; import { incrementQuantity, decrementQuantity } from "./venueSlice"; const ConferenceEvent = () => { const [showItems, setShowItems] = useState(false); const [numberOfPeople, setNumberOfPeople] = useState(1); const venueItems = useSelector((state) => state.venue); + const avItems = useSelector((state) => state.av); + const mealsItems = useSelector((state) => state.meals) const dispatch = useDispatch(); const remainingAuditoriumQuantity = 3 - venueItems.find(item => item.name === "Auditorium Hall (Capacity:200)").quantity; @@ -29,22 +33,89 @@ const ConferenceEvent = () => { } }; const handleIncrementAvQuantity = (index) => { + dispatch(incrementAvQuantity(index)); }; const handleDecrementAvQuantity = (index) => { + dispatch(decrementAvQuantity(index)); }; const handleMealSelection = (index) => { + const item = mealsItems[index]; + if (item.selected && item.type === "mealForPeople") { + // Asegurar que numberOfPeople esté configurado antes de alternar la selección + const newNumberOfPeople = item.selected ? numberOfPeople : 0; + dispatch(toggleMealSelection(index, newNumberOfPeople)); + } + else { + dispatch(toggleMealSelection(index)); + } }; const getItemsFromTotalCost = () => { const items = []; + venueItems.forEach((item) => { + if (item.quantity > 0) { + items.push({ ...item, type: "venue" }); + } + }); + avItems.forEach((item) => { + if ( + item.quantity > 0 && + !items.some((i) => i.name === item.name && i.type === "av") + ) { + items.push({ ...item, type: "av" }); + } + }); + mealsItems.forEach((item) => { + if (item.selected) { + const itemForDisplay = { ...item, type: "meals" }; + if (item.numberOfPeople) { + itemForDisplay.numberOfPeople = numberOfPeople; + } + items.push(itemForDisplay); + } + }); + return items; }; const items = getItemsFromTotalCost(); const ItemsDisplay = ({ items }) => { + console.log(items); + return <> +
No se han seleccionado elementos
} +| Nombre | +Costo Unitario | +Cantidad | +Subtotal | +
|---|---|---|---|
| {item.name} | +${item.cost} | ++ {item.type === "meals" || item.numberOfPeople + ? ` Para ${numberOfPeople} personas` + : item.quantity} + | +{item.type === "meals" || item.numberOfPeople + ? `${item.cost * numberOfPeople}` + : `${item.cost * item.quantity}`} + | +