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