From 0bb57ced170104ce59e2c58e3a4605c543f318cd Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 4 Mar 2024 00:20:43 +0200 Subject: [PATCH] fix and consolidate calendar dates usage and format --- components/calendar/avcalendar.tsx | 15 ++++++++----- components/publisher/ShiftsList.tsx | 4 ++-- pages/cart/publishers/myschedule.tsx | 33 +++++++++++++++++++++------- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/components/calendar/avcalendar.tsx b/components/calendar/avcalendar.tsx index e9865fe..c868f82 100644 --- a/components/calendar/avcalendar.tsx +++ b/components/calendar/avcalendar.tsx @@ -58,7 +58,9 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => { useEffect(() => { const updatedEvents = events.map(event => ({ ...event, - date: new Date(event.startTime).setHours(0, 0, 0, 0) + date: new Date(event.startTime).setHours(0, 0, 0, 0), + startTime: new Date(event.startTime), + endTime: event.endTime ? new Date(event.endTime) : undefined })); setEvents(updatedEvents); @@ -164,12 +166,15 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => { const totalHours = maxHour - minHour; const handleSelect = ({ start, end }) => { + const startdate = typeof start === 'string' ? new Date(start) : start; + const enddate = typeof end === 'string' ? new Date(end) : end; + if (!start || !end) return; - if (start < new Date() || end < new Date() || start > end) return; + if (startdate < new Date() || end < new Date() || startdate > end) return; // Check if start and end are on the same day - if (start.toDateString() !== end.toDateString()) { - end = common.setTimeHHmm(start, "23:59"); + if (startdate.toDateString() !== enddate.toDateString()) { + end = common.setTimeHHmm(startdate, "23:59"); } const startMinutes = common.getTimeInMinutes(start); @@ -186,7 +191,7 @@ const AvCalendar = ({ publisherId, events, selectedDate }) => { setDate(start); // get exising events for the selected date - const existingEvents = evts?.filter(event => (event.publisher?.id || event.publisherId) === publisherId && new Date(event.date).toDateString() === start.toDateString()); + const existingEvents = evts?.filter(event => (event.publisher?.id || event.publisherId) === publisherId && new Date(event.date).toDateString() === startdate.toDateString()); // const existingEvents = evts?.filter(event => { // return event.publisherId === publisherId && // new Date(event.startTime).getFullYear() === start.getFullYear() && diff --git a/components/publisher/ShiftsList.tsx b/components/publisher/ShiftsList.tsx index 10a8a33..07d176c 100644 --- a/components/publisher/ShiftsList.tsx +++ b/components/publisher/ShiftsList.tsx @@ -7,7 +7,7 @@ import axiosInstance from '../../src/axiosSecure'; import { monthNamesBG, GetTimeFormat, GetDateFormat } from "../../src/helpers/const" import common from "../../src/helpers/common"; -type Assignment = { +type Assignments = { items: { [key: string]: any[]; }; @@ -18,7 +18,7 @@ type Assignment = { }; type ShiftsListProps = { - assignments: Assignment; + assignments: Assignments; selectedtab: string; }; diff --git a/pages/cart/publishers/myschedule.tsx b/pages/cart/publishers/myschedule.tsx index 340db55..e1726f5 100644 --- a/pages/cart/publishers/myschedule.tsx +++ b/pages/cart/publishers/myschedule.tsx @@ -4,11 +4,11 @@ import ProtectedRoute from '../../../components/protectedRoute'; import { UserRole } from '@prisma/client'; import axiosServer from '../../../src/axiosServer'; import common from '../../../src/helpers/common'; -import { ShiftsList } from '../../../components/publisher/ShiftsList'; +import ShiftsList from '../../../components/publisher/ShiftsList'; import { useSession, getSession } from 'next-auth/react'; -export default function MySchedulePage({ shifts }) { +export default function MySchedulePage({ assignments }) { const { data: session, status } = useSession(); if (status === "loading") { @@ -20,7 +20,7 @@ export default function MySchedulePage({ shifts }) {

Моите смени

- +
@@ -67,6 +67,7 @@ export const getServerSideProps = async (context) => { }); const assignments = publisher[0]?.assignments; + const transformedAssignments = assignments.map(assignment => { if (assignment.shift && assignment.shift.startTime) { return { @@ -81,10 +82,26 @@ export const getServerSideProps = async (context) => { return assignment; }); + const singleKey = "all"; + const assignmentsStructure = { + assignments: { + items: { + [singleKey]: [], + }, + keys: [singleKey], + months: { + [singleKey]: "Всички смени", + }, + }, + selectedtab: singleKey, + }; + + transformedAssignments.forEach(assignment => { + assignmentsStructure.assignments.items[singleKey].push(assignment); + }); return { - props: { - assignments: transformedAssignments, - }, - }; -}; + props: assignmentsStructure + } +} +