fix showing unpublished and old assignments to publishers

This commit is contained in:
Dobromir Popov
2024-04-27 01:19:49 +03:00
parent 4f9d0c7060
commit 6364ff3442
4 changed files with 80 additions and 67 deletions

View File

@ -9,6 +9,7 @@ const common = require('src/helpers/common');
import AvailabilityForm from "../availability/AvailabilityForm";
import { TrashIcon, PencilSquareIcon } from "@heroicons/react/24/outline";
import { Availability, AvailabilityType } from "@prisma/client";
@ -58,7 +59,10 @@ export default function AvailabilityList({ publisher, showNew }) {
{items?.sort((a, b) => new Date(a.startTime) - new Date(b.startTime)).map(item => (
<tr key={item.id} availability={item} disabled={!item.isActive} className={`${item.isFromPreviousMonth ? 'bg-yellow-200' : ''} ${!item.isActive ? 'opacity-50' : ''}`}>
<td className="px-6 py-4 whitespace-nowrap">
{item.dayOfMonth ? `${common.getDateFormated(new Date(item.startTime))}` : `Всеки(Всяка) ${common.getDayOfWeekName(new Date(item.startTime))}`}
{item.type == AvailabilityType.OneTime ? `${common.getDateFormated(new Date(item.startTime))}` :
item.type == AvailabilityType.Weekly ? `Всеки(Всяка) ${common.getDayOfWeekName(new Date(item.startTime))}` : "месечно"
}
{/* {common.getDateFormated(new Date(item.startTime))} */}
</td>
<td className="px-6 py-4 whitespace-nowrap">
@ -118,14 +122,14 @@ export default function AvailabilityList({ publisher, showNew }) {
}
export const getServerSideProps = async () => {
const { data: items } = await axiosInstance.get(
common.getBaseUrl("/api/data/availabilities")
);
// export const getServerSideProps = async () => {
// const { data: items } = await axiosInstance.get(
// common.getBaseUrl("/api/data/availabilities")
// );
return {
props: {
items,
},
};
};
// return {
// props: {
// items,
// },
// };
// };

View File

@ -2,7 +2,7 @@ import axiosServer from '../../../../src/axiosServer';
import NewPubPage from "../new";
export default NewPubPage;
import { Assignment, Shift, UserRole } from "prisma/prisma-client";
import { Assignment, Shift, UserRole, AvailabilityType } from "prisma/prisma-client";
// import { monthNamesBG } from "~/src/helpers/const"
import { monthNamesBG } from "src/helpers/const";
@ -55,6 +55,7 @@ export const getServerSideProps = async (context) => {
// item.availabilities = item.availabilities
// .sort((a, b) => b.startTime - a.startTime);
item.availabilities = item.availabilities.filter((a) => new Date(a.startTime) >= new Date() || a.type == AvailabilityType.Weekly);
item.assignments = item.assignments
.sort((a, b) => b.startTime - a.startTime)
.reduce((acc, assignment: Assignment) => {

View File

@ -87,30 +87,33 @@ export default function MySchedulePage({ assignments }) {
)}
</dd>
</div>
<div className="bg-gray-50 px-4 py-5 grid grid-cols-1 sm:grid-cols-3 gap-4 xs:gap-1 px-6 xs:py-1">
<dt className="text-sm font-medium text-gray-500">Действия</dt>
<dd className="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
<button
className="mr-2 mb-2 inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500 disabled"
disabled={true}
// disabled={assignment.isInGoogleCalendar}
onClick={() => SaveEventsInGoogleCalendar(assignment)}
>
Добави в календар
</button>
<button
className="mr-2 mb-2 inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
onClick={() => {
setАssignment(assignment);
setIsModalOpen(true)
}}
>
Избери Заместник
</button>
{!assignment.isOld &&
<SearchReplacement shiftId={assignment.shift.id} assignmentId={assignment.id} />
</dd>
</div>
<div className="bg-gray-50 px-4 py-5 grid grid-cols-1 sm:grid-cols-3 gap-4 xs:gap-1 px-6 xs:py-1">
<dt className="text-sm font-medium text-gray-500">Действия</dt>
<dd className="mt-1 text-sm text-gray-900 sm:mt-0 sm:col-span-2">
<button
className="mr-2 mb-2 inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500 disabled"
disabled={true}
// disabled={assignment.isInGoogleCalendar}
onClick={() => SaveEventsInGoogleCalendar(assignment)}
>
Добави в календар
</button>
<button
className="mr-2 mb-2 inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
onClick={() => {
setАssignment(assignment);
setIsModalOpen(true)
}}
>
Избери Заместник
</button>
<SearchReplacement shiftId={assignment.shift.id} assignmentId={assignment.id} />
</dd>
</div>
}
</dl>
</div>
</div>
@ -205,22 +208,25 @@ export const getServerSideProps = async (context) => {
},
});
const assignments = publisher?.assignments.filter(assignment => assignment.shift.startTime >= lastSunday) || [];
const assignments = publisher?.assignments.filter(a => a.shift.startTime >= lastSunday && a.shift.isPublished) || [];
const transformedAssignments = assignments?.map(assignment => {
if (assignment.shift && assignment.shift.startTime) {
return {
...assignment,
dateStr: assignment.shift.startTime.toLocaleDateString("bg-BG", { day: "numeric", month: "long" }),
shift: {
...assignment.shift,
startTime: assignment.shift.startTime.toISOString(),
endTime: assignment.shift.endTime.toISOString(),
},
};
}
return assignment;
});
const transformedAssignments = assignments?.sort((a, b) => a.shift.startTime - b.shift.startTime)
.map(assignment => {
if (assignment.shift && assignment.shift.startTime) {
return {
...assignment,
isOld: assignment.shift.startTime < new Date(),
dateStr: assignment.shift.startTime.toLocaleDateString("bg-BG", { day: "numeric", month: "long" }),
shift: {
...assignment.shift,
startTime: assignment.shift.startTime.toISOString(),
endTime: assignment.shift.endTime.toISOString(),
},
};
}
return assignment;
});

View File

@ -38,22 +38,24 @@ export default function NewPubPage(item: Publisher) {
//------------------pages\cart\publishers\edit\[id].tsx------------------
export const getServerSideProps = async (context) => {
const axios = await axiosServer(context);
// export const getServerSideProps = async (context) => {
// const axios = await axiosServer(context);
context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");
if (!context.query || !context.query.id) {
return {
props: {}
};
}
var url = process.env.NEXT_PUBLIC_PUBLIC_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,shifts";
console.log("GET PUBLISHER FROM:" + url)
const { data } = await axios.get(url);
// context.res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");
// if (!context.query || !context.query.id) {
// return {
// props: {}
// };
// }
// var url = process.env.NEXT_PUBLIC_PUBLIC_URL + "/api/data/publishers/" + context.query.id + "?include=availabilities,shifts";
// console.log("GET PUBLISHER FROM:" + url)
// const { data } = await axios.get(url);
return {
props: {
data
},
};
};
// //filter old availabilities
// data.availabilities = data.availabilities.filter((a) => new Date(a.startTime) >= new Date());
// return {
// props: {
// data
// },
// };
// };