diff --git a/components/sidemenuData.js b/components/sidemenuData.js index 1b85b1d..e747b55 100644 --- a/components/sidemenuData.js +++ b/components/sidemenuData.js @@ -15,6 +15,11 @@ const sidemenu = [ text: "График", url: "/cart/calendar/schedule", }, + // { + // id: "myshedule", + // text: "Моя График", + // url: "/cart/publishers/myschedule", + // }, { id: "locations", text: "Местоположения", diff --git a/pages/cart/publishers/myschedule.tsx b/pages/cart/publishers/myschedule.tsx new file mode 100644 index 0000000..340db55 --- /dev/null +++ b/pages/cart/publishers/myschedule.tsx @@ -0,0 +1,90 @@ +import { useState } from 'react'; +import Layout from "../../../components/layout"; +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 { useSession, getSession } from 'next-auth/react'; + +export default function MySchedulePage({ shifts }) { + + const { data: session, status } = useSession(); + if (status === "loading") { + return
Loading...
; + } + + return ( + + +
+

Моите смени

+ +
+
+
+ ); +} + +//get future assignmenrs for the current user (session.user.id) + +export const getServerSideProps = async (context) => { + const session = await getSession(context); + + context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate"); + + if (!session) { + return { + redirect: { + destination: '/auth/login', // Adjust the login path as needed + permanent: false, + }, + }; + } + + const prisma = common.getPrismaClient(); + const publisher = await prisma.publisher.findMany({ + where: { + id: session.user.id, + assignments: { + some: { + shift: { + startTime: { + gte: new Date(), + }, + }, + }, + }, + }, + include: { + assignments: { + include: { + shift: true, + }, + }, + }, + }); + + const assignments = publisher[0]?.assignments; + const transformedAssignments = assignments.map(assignment => { + if (assignment.shift && assignment.shift.startTime) { + return { + ...assignment, + shift: { + ...assignment.shift, + startTime: assignment.shift.startTime.toISOString(), + endTime: assignment.shift.endTime.toISOString(), + }, + }; + } + return assignment; + }); + + + return { + props: { + assignments: transformedAssignments, + }, + }; +};