From 2e0fda7bb9d6f8dab52e5bfca304d87f43b1f0c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Veikko=20Lintuj=C3=A4rvi?= Date: Fri, 27 Jun 2025 21:12:19 +0300 Subject: [PATCH] Fix latest box pickup logic --- app/components/Calendar.tsx | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/app/components/Calendar.tsx b/app/components/Calendar.tsx index cb71c2f..b8c573d 100644 --- a/app/components/Calendar.tsx +++ b/app/components/Calendar.tsx @@ -8,13 +8,13 @@ import { markBoxDelivered, markBoxPickedUp } from "../api"; import { Modal } from "@mui/material"; export default function Calendar() { - const latestBoxStatuses = ["no boxes", "picked up", "delivered"]; //TODO: There's logic problem between "delivered" and "picked up" + const boxStatuses = ["no boxes", "picked up", "delivered"]; //TODO: There's logic problem between "delivered" and "picked up" const [customerData, setCustomerData] = useAtom(customerState); const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth()); const [calendarCells, setCalendarCells] = useState([]); const [firstWeekPadding, setFirstWeekPadding] = useState([]); const [showLatestBoxModal, setShowLatestBoxModal] = useState(false); - const [latestBoxStatus, setLatestBoxStatus] = useState(latestBoxStatuses[0]); + const [latestBoxStatus, setLatestBoxStatus] = useState(boxStatuses[0]); const generateFirstWeekPadding = (month: number) => { const firstDay = new Date(new Date().getFullYear(), month, 1).getDay(); @@ -118,7 +118,7 @@ export default function Calendar() { className={styles.latestBoxDeliveredBtn} onClick={handleLatestBoxClick} > - Kuittaa uusin laatikko haetuksi + Kuittaa viimeisin laatikko haetuksi ; default: return Virhe; @@ -130,17 +130,17 @@ export default function Calendar() { setFirstWeekPadding(generateFirstWeekPadding(selectedMonth)); setLatestBoxStatus(() => { if (!customerData.boxes || customerData.boxes.length === 0) { - return latestBoxStatuses[0]; // no boxes + return boxStatuses[0]; // no boxes } const monthBoxes = customerData.boxes.filter(box => new Date(box.delivery_date).getMonth() === selectedMonth); - if (!monthBoxes || monthBoxes.length === 0) { - return latestBoxStatuses[0]; // no boxes + const deliveredBoxes = customerData.boxes.filter(box => new Date(box.delivery_date).getMonth() === selectedMonth && !box.pickup_date); + if (monthBoxes.length === 0) { + return boxStatuses[0]; // no boxes } - const latestBox = monthBoxes[monthBoxes.length - 1]; - if (latestBox.pickup_date) { - return latestBoxStatuses[1]; // picked up + if (!deliveredBoxes || deliveredBoxes.length === 0) { + return boxStatuses[1]; // all boxes picked up } - return latestBoxStatuses[2]; // delivered + return boxStatuses[2]; // delivered } ); }, [selectedMonth, customerData.boxes]); @@ -151,11 +151,9 @@ export default function Calendar() { } const markLatestBoxPickedUp = () => { - const monthBoxes = customerData.boxes.filter(box => new Date(box.delivery_date).getMonth() === selectedMonth); - if (monthBoxes.length === 0) return; - console.log("Marking latest box as picked up"); - console.log("Month boxes:", monthBoxes); - const latestBox = monthBoxes[monthBoxes.length - 1]; + const deliveredBoxes = customerData.boxes.filter(box => new Date(box.delivery_date).getMonth() === selectedMonth && !box.pickup_date); + if (deliveredBoxes.length === 0) return; + const latestBox = deliveredBoxes[0]; markBoxPickedUp(latestBox.id).then((updatedBox) => { setCustomerData((prev) => ({ ...prev,