fix repeating availability dayofmonh problem
This commit is contained in:
@ -90,9 +90,9 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
|
||||
let avs = availabilities.filter(av => av.type !== "assignment");
|
||||
// Determine if we need to delete and recreate, or just update
|
||||
let shouldRecreate = avs.length > 0 && avs.length !== groupedTimeSlots.length || avs.some(av => !av.id);
|
||||
shouldRecreate = shouldRecreate || ( avs.length == 0 && availabilities.length > 0);
|
||||
shouldRecreate = shouldRecreate || (avs.length == 0 && availabilities.length > 0);
|
||||
//create availability if we open a form with assignment without availability
|
||||
|
||||
|
||||
if (shouldRecreate) {
|
||||
// Delete existing availabilities if they have an ID
|
||||
console.log("Recreating availabilities");
|
||||
@ -173,52 +173,106 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
|
||||
return groupedIntervals;
|
||||
}
|
||||
|
||||
// const firstSlotWithTransport = timeSlots[0].checked && timeSlots[0]?.isWithTransport;
|
||||
// const lastSlotWithTransport = timeSlots[timeSlots.length - 1].checked && timeSlots[timeSlots.length - 1]?.isWithTransport;
|
||||
function createAvailabilityFromGroup(group) {
|
||||
let startTime = new Date(day);
|
||||
// // const firstSlotWithTransport = timeSlots[0].checked && timeSlots[0]?.isWithTransport;
|
||||
// // const lastSlotWithTransport = timeSlots[timeSlots.length - 1].checked && timeSlots[timeSlots.length - 1]?.isWithTransport;
|
||||
// function createAvailabilityFromGroup(group) {
|
||||
// let startTime = new Date(day);
|
||||
// startTime.setHours(group[0].startTime.getHours(), group[0].startTime.getMinutes(), group[0].startTime.getSeconds(), 0);
|
||||
|
||||
// let endTime = new Date(day);
|
||||
// endTime.setHours(group[group.length - 1].endTime.getHours(), group[group.length - 1].endTime.getMinutes(), group[group.length - 1].endTime.getSeconds(), 0);
|
||||
|
||||
|
||||
// return {
|
||||
// name: common.getTimeFomatted(startTime) + "-" + common.getTimeFomatted(endTime),
|
||||
// publisherId: publisher.id,
|
||||
// startTime: startTime,
|
||||
// endTime: endTime,
|
||||
// isWithTransportIn: group[0].isFirst && timeSlots[0].isWithTransport,
|
||||
// isWithTransportOut: group[group.length - 1].isLast && timeSlots[timeSlots.length - 1].isWithTransport,
|
||||
// dayofweek: common.getDayOfWeekNameEnEnumForDate(day.getDay()),
|
||||
// repeatWeekly: doRepeat,
|
||||
// dayOfMonth: doRepeat ? null : startTime.getDate(),
|
||||
// endDate: doRepeat ? repeatUntil : null,
|
||||
// dateOfEntry: new Date(),
|
||||
// };
|
||||
// }
|
||||
|
||||
// function updateAvailabilityFromGroup(availability, group) {
|
||||
// availability.startTime.setTime(group[0].startTime);
|
||||
// availability.endTime.setTime(group[group.length - 1].endTime);
|
||||
// availability.name = common.getTimeFomatted(availability.startTime) + "-" + common.getTimeFomatted(availability.endTime);
|
||||
|
||||
// availability.isWithTransportIn = group[0].isFirst && timeSlots[0].isWithTransport;
|
||||
// availability.isWithTransportOut = group[group.length - 1].isLast && timeSlots[timeSlots.length - 1].isWithTransport;
|
||||
|
||||
// delete availability.weekOfMonth;
|
||||
// if (doRepeat) {
|
||||
// availability.repeatWeekly = true;
|
||||
// availability.dayOfMonth = null;
|
||||
// availability.weekOfMonth = 0;
|
||||
// availability.endDate = repeatUntil;
|
||||
// } else {
|
||||
// availability.repeatWeekly = false;
|
||||
// availability.dayOfMonth = availability.startTime.getDate();
|
||||
// availability.endDate = null;
|
||||
// }
|
||||
|
||||
// availability.dateOfEntry = new Date();
|
||||
// if (availability.parentAvailabilityId) {
|
||||
// availability.parentAvailability = { connect: { id: parentAvailabilityId } };
|
||||
// }
|
||||
// delete availability.parentAvailabilityId;
|
||||
|
||||
// return availability;
|
||||
// }
|
||||
// Common function to set shared properties
|
||||
function setSharedAvailabilityProperties(availability, group, timeSlots) {
|
||||
let startTime = new Date(availability.startTime || day);
|
||||
startTime.setHours(group[0].startTime.getHours(), group[0].startTime.getMinutes(), group[0].startTime.getSeconds(), 0);
|
||||
|
||||
let endTime = new Date(day);
|
||||
let endTime = new Date(availability.endTime || day);
|
||||
endTime.setHours(group[group.length - 1].endTime.getHours(), group[group.length - 1].endTime.getMinutes(), group[group.length - 1].endTime.getSeconds(), 0);
|
||||
|
||||
|
||||
return {
|
||||
name: common.getTimeFomatted(startTime) + "-" + common.getTimeFomatted(endTime),
|
||||
publisherId: publisher.id,
|
||||
startTime: startTime,
|
||||
endTime: endTime,
|
||||
isWithTransportIn: group[0].isFirst && timeSlots[0].isWithTransport,
|
||||
isWithTransportOut: group[group.length - 1].isLast && timeSlots[timeSlots.length - 1].isWithTransport,
|
||||
dayofweek: common.getDayOfWeekNameEnEnum(day.getDay()),
|
||||
repeatWeekly: doRepeat,
|
||||
dayOfMonth: doRepeat ? null : startTime.getDate(),
|
||||
endDate: doRepeat ? repeatUntil : null,
|
||||
dateOfEntry: new Date(),
|
||||
};
|
||||
}
|
||||
|
||||
function updateAvailabilityFromGroup(availability, group) {
|
||||
availability.startTime.setTime(group[0].startTime);
|
||||
availability.endTime.setTime(group[group.length - 1].endTime);
|
||||
availability.name = common.getTimeFomatted(availability.startTime) + "-" + common.getTimeFomatted(availability.endTime);
|
||||
availability.startTime = startTime;
|
||||
availability.endTime = endTime;
|
||||
availability.name = common.getTimeFomatted(startTime) + "-" + common.getTimeFomatted(endTime);
|
||||
|
||||
availability.isWithTransportIn = group[0].isFirst && timeSlots[0].isWithTransport;
|
||||
availability.isWithTransportOut = group[group.length - 1].isLast && timeSlots[timeSlots.length - 1].isWithTransport;
|
||||
|
||||
delete availability.weekOfMonth;
|
||||
// Adjustments for repeating settings
|
||||
if (doRepeat) {
|
||||
availability.repeatWeekly = true;
|
||||
availability.dayOfMonth = null;
|
||||
availability.weekOfMonth = 0;
|
||||
availability.endDate = repeatUntil;
|
||||
} else {
|
||||
availability.repeatWeekly = false;
|
||||
availability.dayOfMonth = availability.startTime.getDate();
|
||||
availability.dayOfMonth = startTime.getDate();
|
||||
availability.endDate = null;
|
||||
}
|
||||
|
||||
availability.dateOfEntry = new Date();
|
||||
}
|
||||
|
||||
function createAvailabilityFromGroup(group) {
|
||||
let availability = {
|
||||
publisherId: publisher.id,
|
||||
dayofweek: common.getDayOfWeekNameEnEnumForDate(day),
|
||||
};
|
||||
|
||||
setSharedAvailabilityProperties(availability, group, timeSlots);
|
||||
|
||||
return availability;
|
||||
}
|
||||
|
||||
function updateAvailabilityFromGroup(availability, group) {
|
||||
setSharedAvailabilityProperties(availability, group, timeSlots);
|
||||
|
||||
delete availability.weekOfMonth;
|
||||
if (doRepeat) {
|
||||
availability.weekOfMonth = 0;
|
||||
}
|
||||
if (availability.parentAvailabilityId) {
|
||||
availability.parentAvailability = { connect: { id: parentAvailabilityId } };
|
||||
}
|
||||
@ -227,6 +281,8 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
|
||||
return availability;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const handleDelete = async (e) => {
|
||||
e.preventDefault();
|
||||
try {
|
||||
|
@ -170,7 +170,7 @@ export default function AvailabilityForm({ publisherId, existingItem, inline, on
|
||||
availability.name = common.getTimeFomatted(availability.startTime) + "-" + common.getTimeFomatted(availability.endTime);
|
||||
}
|
||||
|
||||
availability.dayofweek = common.getDayOfWeekNameEnEnum(availability.startTime);
|
||||
availability.dayofweek = common.getDayOfWeekNameEnEnumForDate(availability.startTime);
|
||||
if (availability.repeatWeekly) {
|
||||
availability.dayOfMonth = null;
|
||||
availability.weekOfMonth = 0; //weekly recurrance - no need for week of month. special value 0
|
||||
|
Reference in New Issue
Block a user