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