diff --git a/pages/cart/calendar/index.tsx b/pages/cart/calendar/index.tsx
index 4badd31..26b5cea 100644
--- a/pages/cart/calendar/index.tsx
+++ b/pages/cart/calendar/index.tsx
@@ -910,7 +910,7 @@ export default function CalendarPage({ initialEvents, initialShifts }) {
return (
{common.getTimeRange(shift.startTime, shift.endTime)} {shift.id}
diff --git a/src/helpers/data.js b/src/helpers/data.js
index 7907847..4150cfd 100644
--- a/src/helpers/data.js
+++ b/src/helpers/data.js
@@ -212,7 +212,7 @@ async function getAvailabilities(userId) {
* This function heavily relies on the `prisma` client to query and manipulate data related to publishers.
*
* @param {Array|string} selectFields - Fields to select from the publishers data. Can be an array of field names or a comma-separated string of field names.
- * @param {string|Date} filterDate - The reference date for filtering. Can be a date string or a Date object. Used to determine relevant time frames like current month, previous month, etc.
+ * @param {string|Date|null} filterDate - The reference date for filtering. Can be a date string, a Date object, or null. Used to determine relevant time frames like current month, previous month, etc.
* @param {boolean} [isExactTime=false] - If true, filters publishers who are available at the exact time of `filterDate` plus/minus a specific duration (e.g., 90 minutes).
* @param {boolean} [isForTheMonth=false] - If true, adjusts the filtering to encompass the entire month based on `filterDate`.
* @param {boolean} [noEndDateFilter=false] - If true, removes any filtering based on the end date of publishers' availabilities.
@@ -224,9 +224,36 @@ async function getAvailabilities(userId) {
async function filterPublishersNew(selectFields, filterDate, isExactTime = false, isForTheMonth = false, noEndDateFilter = false, isWithStats = true, includeOldAvailabilities = false, id = null) {
const prisma = common.getPrismaClient();
- if (filterDate !== null) {
+
+ let filterTimeFrom, filterTimeTo;
+ if (filterDate === null || filterDate === "" || filterDate === undefined) {
+ noEndDateFilter = true;
+ isForTheMonth = false;
+ isExactTime = false;
+ } else {
filterDate = new Date(filterDate); // Convert to date object if not already
+ //check if filterDate is valid date
+ if (isNaN(filterDate.getTime())) {
+ console.error("Invalid date: " + filterDate);
+ filterTimeFrom = new Date(2024, 1, 1);
+ noEndDateFilter = true;
+ isForTheMonth = false
+ isExactTime = false;
+ } else {
+ filterTimeFrom = new Date(filterDate)
+ filterTimeTo = new Date(filterDate);
+ if (isExactTime) {
+ //add +- 90 minutes to the filterDate ToDo: should be "shift duration"
+ // filterTimeFrom.setMinutes(filterTimeFrom.getMinutes() - 90);
+ filterTimeTo.setMinutes(filterTimeTo.getMinutes() + 90);
+ }
+ else {
+ filterTimeFrom.setHours(0, 0, 0, 0);
+ filterTimeTo.setHours(23, 59, 59, 999);
+ }
+ }
}
+
const monthInfo = common.getMonthDatesInfo(filterDate);
let prevMnt = new Date(filterDate)
prevMnt.setMonth(prevMnt.getMonth() - 1);
@@ -240,7 +267,6 @@ async function filterPublishersNew(selectFields, filterDate, isExactTime = false
return acc;
}, {});
-
selectBase.assignments = {
select: {
id: true,
@@ -252,25 +278,15 @@ async function filterPublishersNew(selectFields, filterDate, isExactTime = false
}
}
},
- where: {
- shift: {
- startTime: {
- gte: prevMnt,
- }
- }
- }
+ // where: {
+ // shift: {
+ // startTime: {
+ // gte: prevMnt,
+ // }
+ // }
+ // }
};
- let filterTimeFrom = new Date(filterDate)
- let filterTimeTo = new Date(filterDate);
- //check if filterDate is valid date
- if (isNaN(filterDate.getTime())) {
- console.error("Invalid date: " + filterDate);
- filterTimeFrom = new Date(2024, 1, 1);
- noEndDateFilter = true;
- isForTheMonth = false
- }
-
let isDayFilter = true;
let whereClause = {};
if (id) {
@@ -284,17 +300,14 @@ async function filterPublishersNew(selectFields, filterDate, isExactTime = false
filterTimeTo = monthInfo.lastSunday;
isDayFilter = false;
}
- if (isExactTime) {
- //add +- 90 minutes to the filterDate ToDo: should be "shift duration"
- // filterTimeFrom.setMinutes(filterTimeFrom.getMinutes() - 90);
- filterTimeTo.setMinutes(filterTimeTo.getMinutes() + 90);
- }
- else {
- filterTimeFrom.setHours(0, 0, 0, 0);
- filterTimeTo.setHours(23, 59, 59, 999);
- }
- if (filterDate) { // if no date is provided, we don't filter by date
+
+ if (filterTimeFrom) { // if no date is provided, we don't filter by date
+ selectBase.assignments.where = {
+ shift: {
+ startTime: { gte: prevMnt },
+ }
+ };
whereClause["availabilities"] = {
some: {
OR: [