diff --git a/server/routes.ts b/server/routes.ts index 062576d..87e71f1 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -669,6 +669,27 @@ export async function registerRoutes(app: Express): Promise { .from(sites) .where(eq(sites.isActive, true)); + // Filtra siti con contratto valido per la data selezionata + const sitesWithValidContract = allSites.filter((site: any) => { + // Se il sito non ha date contrattuali, lo escludiamo + if (!site.contractStartDate || !site.contractEndDate) { + return false; + } + + // Normalizza date per confronto day-only + const selectedDate = new Date(dateStr); + selectedDate.setHours(0, 0, 0, 0); + + const contractStart = new Date(site.contractStartDate); + contractStart.setHours(0, 0, 0, 0); + + const contractEnd = new Date(site.contractEndDate); + contractEnd.setHours(23, 59, 59, 999); + + // Verifica che la data selezionata sia dentro il periodo contrattuale + return selectedDate >= contractStart && selectedDate <= contractEnd; + }); + // Ottieni turni del giorno con assegnazioni const dayShifts = await db .select({ @@ -686,8 +707,8 @@ export async function registerRoutes(app: Express): Promise { ) .groupBy(shifts.id); - // Calcola copertura per ogni sito - const sitesWithCoverage = allSites.map((site: any) => { + // Calcola copertura per ogni sito con contratto valido + const sitesWithCoverage = sitesWithValidContract.map((site: any) => { const siteShifts = dayShifts.filter((s: any) => s.shift.siteId === site.id); // Verifica copertura per ogni turno @@ -736,7 +757,7 @@ export async function registerRoutes(app: Express): Promise { res.json({ date: dateStr, uncoveredSites: sortedUncoveredSites, - totalSites: allSites.length, + totalSites: sitesWithValidContract.length, totalUncovered: uncoveredSites.length }); } catch (error) {