From cf17cc74a2de7ccaa145419228bc02268a11e658 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 5 Mar 2024 23:49:23 +0200 Subject: [PATCH] import/parse and generate respects withTransport and requiresTransport properties. parsing rransport initials --- .env.development | 4 ++-- components/calendar/ShiftComponent.tsx | 26 ++++++++++++++++++++------ pages/api/shiftgenerate.ts | 4 +++- pages/cart/publishers/stats.tsx | 3 +++ src/helpers/excel.js | 17 +++++++++++++---- 5 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.env.development b/.env.development index afec269..e623f71 100644 --- a/.env.development +++ b/.env.development @@ -11,5 +11,5 @@ TELEGRAM_BOT=true SSL_KEY=./certificates/localhost-key.pem SSL_CERT=./certificates/localhost.pem -DATABASE_URL=mysql://root:Zelen0ku4e@192.168.0.10:3306/cart_dev -# DATABASE_URL=mysql://cart:cartpw@localhost:3306/cart +# DATABASE_URL=mysql://root:Zelen0ku4e@192.168.0.10:3306/cart_dev +DATABASE_URL=mysql://cart:cartpw@localhost:3306/cart diff --git a/components/calendar/ShiftComponent.tsx b/components/calendar/ShiftComponent.tsx index f78f498..488e9a6 100644 --- a/components/calendar/ShiftComponent.tsx +++ b/components/calendar/ShiftComponent.tsx @@ -194,17 +194,31 @@ function ShiftComponent({ shift, onShiftSelect, isSelected, onPublisherSelect, a } } + function toggleTransport(id: any): void { + throw new Error('Function not implemented.'); + } + return (
handlePublisherClick(ass.publisher)}> {publisherInfo.firstName} {publisherInfo.lastName} - +
+ {/* //if shift.isWithTransport, add trnsport button toggle, which sets ass.isWithTransportIn */} + {shift.requiresTransport && + ( + + ) + } + + +
+
); diff --git a/pages/api/shiftgenerate.ts b/pages/api/shiftgenerate.ts index ba61fb8..c1bc139 100644 --- a/pages/api/shiftgenerate.ts +++ b/pages/api/shiftgenerate.ts @@ -178,7 +178,8 @@ async function GenerateSchedule(axios: Axios, date: string, copyFromPreviousMont shiftNr++; const __shiftName = String(shiftStart.getHours()).padStart(2, "0") + ":" + String(shiftStart.getMinutes()).padStart(2, "0") + " - " + String(shiftEnd.getHours()).padStart(2, "0") + ":" + String(shiftEnd.getMinutes()).padStart(2, "0"); shiftAssignments = []; - console.log("[shift " + shiftNr + "] " + __shiftName); + let isTransportRequired = shiftNr == 1 || shiftEnd.getTime() == endTime.getTime(); + console.log("[shift " + shiftNr + "] " + __shiftName + ", transport: " + (isTransportRequired ? "yes" : "no") + ", " + shiftStart.toLocaleTimeString() + " - " + shiftEnd.toLocaleTimeString() + " (end time: " + endTime.toLocaleTimeString() + ", " + event.shiftDuration + " min)"); if (autoFill || copyFromPreviousMonth) { // ########################################### @@ -395,6 +396,7 @@ async function GenerateSchedule(axios: Axios, date: string, copyFromPreviousMont startTime: shiftStart, endTime: shiftEnd, name: event.dayofweek + " " + shiftStart.toLocaleTimeString() + " - " + shiftEnd.toLocaleTimeString(), + requiresTransport: isTransportRequired, cartEvent: { connect: { id: event.id, diff --git a/pages/cart/publishers/stats.tsx b/pages/cart/publishers/stats.tsx index 6945583..e69f47f 100644 --- a/pages/cart/publishers/stats.tsx +++ b/pages/cart/publishers/stats.tsx @@ -95,6 +95,9 @@ export const getServerSideProps = async (context) => { if (availability.startTime) { availability.startTime = availability.startTime.toISOString(); availability.endTime = availability.endTime.toISOString(); + if (availability.dateOfEntry) { + availability.dateOfEntry = availability.dateOfEntry.toISOString(); + } } }); diff --git a/src/helpers/excel.js b/src/helpers/excel.js index 49a62f3..40f2f1c 100644 --- a/src/helpers/excel.js +++ b/src/helpers/excel.js @@ -404,20 +404,21 @@ exports.processEvents = async function (events, year, monthNumber, progressCallb s.cartEventId === cartEvent.id && new Date(s.startTime).getTime() === new Date(start).getTime() ); - + // get only hh:mm from the date + let isTransportRequired = event.shiftNr == 1 || end.toLocaleTimeString().substring(0, 5) == cartEvent.endTime.toLocaleTimeString().substring(0, 5); if (!shift) { //if shiftnr = 1, notes = "Докарва" + event.transport //if shiftnr = 8, notes = "Взема" + event.transport - - let note = event.shiftNr === 1 ? "Докарва количка от Люлин - " + event.transport : - event.shiftNr === 6 ? "Прибира количка в Люлин - " + event.transport : ""; + let note = isTransportRequired ? event.transport : ""; + // "Докарва количка от Люлин/Прибира количка в Люлин" const shiftEntity = await prisma.shift.create({ data: { name: event.dayOfWeek + " " + event.dayOfMonth + ", " + start.toLocaleTimeString() + " - " + end.toLocaleTimeString(), startTime: start, endTime: end, notes: note, + requiresTransport: isTransportRequired, cartEvent: { connect: { id: cartEvent.id, @@ -506,6 +507,13 @@ exports.processEvents = async function (events, year, monthNumber, progressCallb } if (location != null && publisher != null && shift != null) { + let isWithTransport = false; + if (isTransportRequired) { + const pubInitials = publisher.firstName[0] + publisher.lastName[0]; + // get cotent after last - or long dash-`-` and remove spaces, trim dots and make lowercase + let transportInitials = event.transport.split("-").pop().replace(/[\s.]/g, "").toUpperCase(); + isWithTransport = transportInitials.includes(pubInitials); + } const assignment = await prisma.assignment.create({ data: { //publisherId: publisher.id, @@ -520,6 +528,7 @@ exports.processEvents = async function (events, year, monthNumber, progressCallb id: shift.id, }, }, + isWithTransport: isWithTransport, }, }); //ToDo: fix findPublisherAvailability and creation of availabilities