more date fixes

This commit is contained in:
Dobromir Popov
2024-05-05 22:39:22 +02:00
parent 1394c5ba4d
commit 27a65b7dc0
4 changed files with 76 additions and 23 deletions

View File

@ -69,8 +69,11 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
// get cart event or set default time for Sofia timezone
const minTime = cartEvent?.startTime || DateTime.now().set({ hour: 8, minute: 0, second: 0, millisecond: 0, zone: 'Europe/Sofia' }).toJSDate();
const maxTime = cartEvent?.endTime || DateTime.now().set({ hour: 20, minute: 0, second: 0, millisecond: 0, zone: 'Europe/Sofia' }).toJSDate();
// const minTime = cartEvent?.startTime || DateTime.now().set({ hour: 8, minute: 0, zone: 'Europe/Sofia' }).toJSDate();
// const maxTime = cartEvent?.endTime || DateTime.now().set({ hour: 20, minute: 0, zone: 'Europe/Sofia' }).toJSDate();
const d = DateTime.fromJSDate(day).setZone('Europe/Sofia', { keepLocalTime: true });
const minTime = d.set({ hour: 9, minute: 0 }).toJSDate();
const maxTime = d.set({ hour: 19, minute: 30 }).toJSDate();
useEffect(() => {
setTimeSlots(generateTimeSlots(new Date(minTime), new Date(maxTime), cartEvent.shiftDuration, availabilities));
@ -189,11 +192,14 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
// Common function to set shared properties
function setSharedAvailabilityProperties(availability, group, timeSlots) {
let startTime = common.setTimeHHmm(new Date(availability.startTime || day), common.getTimeFormatted(group[0].startTime));
let endTime = common.setTimeHHmm(new Date(availability.endTime || day), common.getTimeFormatted(group[group.length - 1].endTime));
const d = DateTime.fromJSDate(day).setZone('Europe/Sofia', { keepLocalTime: true });
console.log("day: " + d.toISODate());
let startTime = common.setTime(d, group[0].startTime).toJSDate();
let endTime = common.setTime(d, group[group.length - 1].endTime).toJSDate();
availability.startTime = startTime;
availability.endTime = endTime;
availability.name = common.getTimeFormatted(group[0].startTime) + "--" + common.getTimeFormatted(group[group.length - 1].endTime);
availability.name = common.getTimeFormatted(group[0].startTime) + "/" + common.getTimeFormatted(group[group.length - 1].endTime);
availability.isWithTransportIn = group[0].isFirst && timeSlots[0].isWithTransport;
availability.isWithTransportOut = group[group.length - 1].isLast && timeSlots[timeSlots.length - 1].isWithTransport;
@ -283,18 +289,14 @@ export default function AvailabilityForm({ publisherId, existingItems, inline, o
const generateTimeSlots = (start, end, increment, items) => {
const slots = [];
let currentTime = start;
//const baseDate = new Date(Date.UTC(2000, 0, 1, 0, 0, 0));
//const baseDate = new Date(start);
while (isBefore(currentTime, end)) {
let slotStart = currentTime;
let slotEnd = addMinutes(currentTime, increment);
const isChecked = items.some(item => {
return item.startTime && item.endTime &&
(slotStart.getTime() < item.endTime.getTime()) &&
(slotEnd.getTime() > item.startTime.getTime());
common.isTimeBetween(item.startTime, item.endTime, slotStart) &&
common.isTimeBetween(item.startTime, item.endTime, slotEnd);
});
slots.push({ startTime: slotStart, endTime: slotEnd, isChecked: isChecked, });

View File

@ -230,10 +230,13 @@ const AvCalendar = ({ publisherId, events, selectedDate, cartEvents }) => {
end = common.setTimeHHmm(startdate, "23:59");
}
setDate(start);
let existingEvents = filterEvents(evts, publisherId, startdate);
console.log("handleSelect: " + existingEvents);
setCartEvent(getCartEvent(date));
// Update date state and calculate events based on the new startdate
setDate(startdate);
const existingEvents = filterEvents(evts, publisherId, startdate);
console.log("handleSelect: ", existingEvents);
// Use the updated startdate for getCartEvent and ensure it reflects in the state properly
setCartEvent(getCartEvent(startdate));
setSelectedEvents(existingEvents);
setIsModalOpen(true);
};