| 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'; | |
| }; | |