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:
parent
9d33dbfa22
commit
19ffe5931b
@ -669,6 +669,27 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
.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<Server> {
|
||||
)
|
||||
.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<Server> {
|
||||
res.json({
|
||||
date: dateStr,
|
||||
uncoveredSites: sortedUncoveredSites,
|
||||
totalSites: allSites.length,
|
||||
totalSites: sitesWithValidContract.length,
|
||||
totalUncovered: uncoveredSites.length
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user