Filter sites by contract validity to accurately reflect coverage

Refine site filtering in route registration to include only sites with valid contracts for the selected date, updating coverage calculations and total site counts accordingly.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e5565357-90e1-419f-b9a8-6ee8394636df
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/6d543d2c-20b9-4ea6-93fe-70fe9b1d9f80/e5565357-90e1-419f-b9a8-6ee8394636df/FlO7tHX
This commit is contained in:
marco370 2025-10-17 15:35:37 +00:00
parent 9d33dbfa22
commit 19ffe5931b

View File

@ -669,6 +669,27 @@ export async function registerRoutes(app: Express): Promise<Server> {
.from(sites) .from(sites)
.where(eq(sites.isActive, true)); .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 // Ottieni turni del giorno con assegnazioni
const dayShifts = await db const dayShifts = await db
.select({ .select({
@ -686,8 +707,8 @@ export async function registerRoutes(app: Express): Promise<Server> {
) )
.groupBy(shifts.id); .groupBy(shifts.id);
// Calcola copertura per ogni sito // Calcola copertura per ogni sito con contratto valido
const sitesWithCoverage = allSites.map((site: any) => { const sitesWithCoverage = sitesWithValidContract.map((site: any) => {
const siteShifts = dayShifts.filter((s: any) => s.shift.siteId === site.id); const siteShifts = dayShifts.filter((s: any) => s.shift.siteId === site.id);
// Verifica copertura per ogni turno // Verifica copertura per ogni turno
@ -736,7 +757,7 @@ export async function registerRoutes(app: Express): Promise<Server> {
res.json({ res.json({
date: dateStr, date: dateStr,
uncoveredSites: sortedUncoveredSites, uncoveredSites: sortedUncoveredSites,
totalSites: allSites.length, totalSites: sitesWithValidContract.length,
totalUncovered: uncoveredSites.length totalUncovered: uncoveredSites.length
}); });
} catch (error) { } catch (error) {