File size: 1,300 Bytes
9a92a42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import { IEventDay } from '../model/eventDay.model';
/**
* Check if an event day is currently live
*/
export const isEventDayLive = (eventDay: IEventDay): boolean => {
const now = new Date();
// Check if event has started
if (!eventDay.hasStarted) {
return false;
}
// Check if event is completed
if (eventDay.isCompleted) {
return false;
}
// Check if current time is within the time slot
return now >= eventDay.startTime && now <= eventDay.endTime;
};
/**
* Determine calendar status color for an event day
* @returns 'green' | 'red' | 'blue'
*/
export const getEventDayStatus = (eventDay: IEventDay): 'green' | 'red' | 'blue' => {
const now = new Date();
const eventDate = new Date(eventDay.endTime);
// Green: Completed with photos and attendance
if (eventDay.isCompleted && eventDay.photos.length > 0 && eventDay.attendance.length > 0) {
return 'green';
}
// Red: Event day has passed but not completed properly
if (eventDate < now) {
// Event day has passed
if (!eventDay.hasStarted || eventDay.photos.length === 0 || eventDay.attendance.length === 0) {
return 'red';
}
}
// Blue: Future dates or planned but not yet conducted
return 'blue';
};
|