SmartFitStudio / FitnessWebAppWithRAG

0 stars 0 forks source link

Calcolo massime iterazioni eventi a partire da today #25

Open Barutta02 opened 3 months ago

Barutta02 commented 3 months ago

public getScheduleEvents(max_iteration_scheduling: number): ScheduleEvent[] { const events: ScheduleEvent[] = []; let id = 0; const today = new Date(); let dataInizio = new Date(this.periodoRequest.data_inizio);

// Impostare il fuso orario a UTC+1 (Roma)
const oneHourInMillis = 1 * 60 * 60 * 1000;
dataInizio.setTime(dataInizio.getTime() + oneHourInMillis);

let j = 0;
let iterationsCount = 0;

// Loop over all iterations until max_iteration_scheduling is reached
while (iterationsCount < max_iteration_scheduling) {
    for (let i = 0; i < this.periodoAllenamentoRequest_list.length; i++) {
        let eventDate = new Date(this.periodoRequest.data_inizio);
        eventDate.setTime(eventDate.getTime() + oneHourInMillis);
        eventDate.setDate(eventDate.getDate() + (this.periodoAllenamentoRequest_list[i].giorno_del_periodo + this.periodoRequest.durata_in_giorni * j));
        eventDate.setHours(this.gerOrarioInizio(this.periodoAllenamentoRequest_list[i].periodo_giornata));

        if (this.periodoRequest.data_fine && eventDate > new Date(this.periodoRequest.data_fine)) {
            iterationsCount = max_iteration_scheduling; // Exit the loop
            break;
        }

        // Calcolo della data di fine
        let datafine = new Date(eventDate);
        let durata_allenamento = this.getAllenamentoById(this.periodoAllenamentoRequest_list[i].id_allenamento)?.durata_in_ore;
        datafine.setHours(eventDate.getHours() + (durata_allenamento ? durata_allenamento : 1));

        let allenamento = this.getAllenamentoById(this.periodoAllenamentoRequest_list[i].id_allenamento);
        events.push({
            Id: id++,
            Subject: allenamento && allenamento.name ? allenamento.name : "",
            StartTime: eventDate,
            EndTime: datafine,
            IsAllDay: false,
        });

        // Increment the iterations count only if the event date is after today
        if (eventDate >= today) {
            iterationsCount++;
        }
    }
    j++;
}
return events;

}