fix showing transport in calendar popup

This commit is contained in:
Dobromir Popov
2024-05-02 01:24:09 +03:00
parent 1348d6aaea
commit 876b235e54
5 changed files with 125 additions and 188 deletions

View File

@ -7,6 +7,8 @@ import { Availability, UserRole } from "@prisma/client";
import ProtectedRoute, { serverSideAuth } from "../components/protectedRoute";
import React, { useState, useEffect } from 'react';
import axiosInstance from '../src/axiosSecure';
// const dataHelper = require('../../src/helpers/data');
import dataHelper from '../src/helpers/data';
import { authOptions } from './api/auth/[...nextauth]'
import { getServerSession } from "next-auth/next"
@ -85,106 +87,107 @@ export default function IndexPage({ initialItems, initialUserId }: IProps) {
}
async function getAvailabilities(userId) {
const prismaClient = common.getPrismaClient();
const items = await prismaClient.availability.findMany({
where: {
publisherId: userId,
},
select: {
id: true,
name: true,
isActive: true,
isFromPreviousAssignment: true,
isFromPreviousMonth: true,
dayofweek: true,
dayOfMonth: true,
startTime: true,
endTime: true,
repeatWeekly: true,
endDate: true,
publisher: {
select: {
firstName: true,
lastName: true,
id: true,
},
},
},
});
// Convert Date objects to ISO strings
const serializableItems = items.map(item => ({
...item,
startTime: item.startTime.toISOString(),
endTime: item.endTime.toISOString(),
name: common.getTimeFomatted(item.startTime) + "-" + common.getTimeFomatted(item.endTime),
//endDate can be null
endDate: item.endDate ? item.endDate.toISOString() : null,
type: 'availability',
// Convert other Date fields similarly if they exist
}));
// async function getAvailabilities(userId) {
// const prismaClient = common.getPrismaClient();
// const items = await prismaClient.availability.findMany({
// where: {
// publisherId: userId,
// },
// select: {
// id: true,
// name: true,
// isActive: true,
// isFromPreviousAssignment: true,
// isFromPreviousMonth: true,
// dayofweek: true,
// dayOfMonth: true,
// startTime: true,
// endTime: true,
// repeatWeekly: true,
// endDate: true,
// publisher: {
// select: {
// firstName: true,
// lastName: true,
// id: true,
// },
// },
// },
// });
// // Convert Date objects to ISO strings
// const serializableItems = items.map(item => ({
// ...item,
// startTime: item.startTime.toISOString(),
// endTime: item.endTime.toISOString(),
// name: common.getTimeFomatted(item.startTime) + "-" + common.getTimeFomatted(item.endTime),
// //endDate can be null
// endDate: item.endDate ? item.endDate.toISOString() : null,
// type: 'availability',
// // Convert other Date fields similarly if they exist
// }));
/*model Assignment {
id Int @id @default(autoincrement())
shift Shift @relation(fields: [shiftId], references: [id], onDelete: Cascade)
shiftId Int
publisher Publisher @relation(fields: [publisherId], references: [id], onDelete: Cascade)
publisherId String
isActive Boolean @default(true)
isConfirmed Boolean @default(false)
isWithTransport Boolean @default(false)
Report Report[]
}*/
//get assignments for this user
const assignments = await prismaClient.assignment.findMany({
where: {
publisherId: userId,
},
select: {
id: true,
isBySystem: true,
isConfirmed: true,
isWithTransport: true,
shift: {
select: {
id: true,
name: true,
startTime: true,
endTime: true,
//select all assigned publishers names as name - comma separated
assignments: {
select: {
publisher: {
select: {
firstName: true,
lastName: true,
}
}
}
}
}
}
}
});
// /*model Assignment {
// id Int @id @default(autoincrement())
// shift Shift @relation(fields: [shiftId], references: [id], onDelete: Cascade)
// shiftId Int
// publisher Publisher @relation(fields: [publisherId], references: [id], onDelete: Cascade)
// publisherId String
// isActive Boolean @default(true)
// isConfirmed Boolean @default(false)
// isWithTransport Boolean @default(false)
// Report Report[]
// }*/
// //get assignments for this user
// const assignments = await prismaClient.assignment.findMany({
// where: {
// publisherId: userId,
// },
// select: {
// id: true,
// isBySystem: true,
// isConfirmed: true,
// isWithTransport: true,
// shift: {
// select: {
// id: true,
// name: true,
// startTime: true,
// endTime: true,
// //select all assigned publishers names as name - comma separated
// assignments: {
// select: {
// publisher: {
// select: {
// firstName: true,
// lastName: true,
// }
// }
// }
// }
// }
// }
// }
// });
const serializableAssignments = assignments.map(item => ({
...item,
startTime: item.shift.startTime.toISOString(),
endTime: item.shift.endTime.toISOString(),
// name: item.shift.publishers.map(p => p.firstName + " " + p.lastName).join(", "),
//name: item.shift.assignments.map(a => a.publisher.firstName[0] + " " + a.publisher.lastName).join(", "),
name: common.getTimeFomatted(new Date(item.shift.startTime)) + "-" + common.getTimeFomatted(new Date(item.shift.endTime)),
type: 'assignment',
//delete shift object
shift: null,
publisher: { id: userId }
}));
// const serializableAssignments = assignments.map(item => ({
// ...item,
// startTime: item.shift.startTime.toISOString(),
// endTime: item.shift.endTime.toISOString(),
// // name: item.shift.publishers.map(p => p.firstName + " " + p.lastName).join(", "),
// //name: item.shift.assignments.map(a => a.publisher.firstName[0] + " " + a.publisher.lastName).join(", "),
// name: common.getTimeFomatted(new Date(item.shift.startTime)) + "-" + common.getTimeFomatted(new Date(item.shift.endTime)),
// type: 'assignment',
// //delete shift object
// shift: null,
// publisher: { id: userId }
// }));
serializableItems.push(...serializableAssignments);
// serializableItems.push(...serializableAssignments);
return serializableItems;
// return serializableItems;
// }
}
export const getServerSideProps = async (context) => {
const auth = await serverSideAuth({
req: context.req,
@ -198,7 +201,16 @@ export const getServerSideProps = async (context) => {
console.log("server role: " + role);
const userId = session?.user.id;
var items = await getAvailabilities(session.user.id);
var items = await dataHelper.getCalendarEvents(session.user.id);
// common.convertDatesToISOStrings(items);
//serializable dates
items = items.map(item => ({
...item,
startTime: item.startTime.toISOString(),
endTime: item.endTime.toISOString(),
date: item.date.toISOString(),
}));
return {
props: {