import { JSX, useEffect, useState } from "react"; import styles from "./Calendar.module.css"; import { getMonthName, daysInMonth } from "../utils/dateUtils"; import { customerState } from "../store"; import { Box } from "../types"; import { useAtom } from "jotai"; import { markBoxPickedUp } from "../api"; export default function Calendar() { const [customerData, setCustomerData] = useAtom(customerState); const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth()); const [calendarCells, setCalendarCells] = useState([]); const [firstWeekPadding, setFirstWeekPadding] = useState([]); useEffect(() => { setCalendarCells(generateCalendarCells(selectedMonth, customerData.boxes)); setFirstWeekPadding(generateFirstWeekPadding(selectedMonth)); }, [selectedMonth]); const generateFirstWeekPadding = (month: number) => { const firstDay = new Date(new Date().getFullYear(), month, 1).getDay(); const padding = Array.from({ length: firstDay === 0 ? 6 : firstDay - 1 }, (_, index) => (
 
)); return padding; } const generateCalendarCells = (month: number, boxes: Box[]) => { const monthDays = daysInMonth[month]; const calendarCells = Array.from({ length: monthDays }, (_, index) => { const day = index + 1; const date = new Date(new Date().getFullYear(), month, day); const matchingBox = boxes.find(box => { const boxDate = new Date(box.delivery_date); return boxDate.getDate() === day && boxDate.getMonth() === month && boxDate.getFullYear() === date.getFullYear(); }); if (matchingBox) { return (
{ console.log(`Box picked up for date: ${date.toLocaleDateString("fi-FI")}`); markBoxPickedUp(matchingBox.id).then((updatedBox) => { console.log(`Box with ID ${updatedBox.id} marked as picked up.`); setCustomerData((prev) => ({ ...prev, boxes: prev.boxes.map(box => box.id === updatedBox.id ? { ...box, pickup_date: updatedBox.pickup_date } : box ), })); } ).catch((error) => { console.error("Error marking box as picked up:", error); }) }}> {date.toLocaleDateString("fi-FI", { day: "2-digit", month: "2-digit", })}
); } return (
{date.toLocaleDateString("fi-FI", { day: "2-digit", month: "2-digit", })}
); }); return calendarCells; } return ( <>

{getMonthName(selectedMonth)} {new Date().getFullYear()}

Ma Ti Ke To Pe La Su {firstWeekPadding} {calendarCells}
); }