diff --git a/src/routes/admin/ausencias/+page.server.ts b/src/routes/admin/ausencias/+page.server.ts index e505989..f0f141f 100644 --- a/src/routes/admin/ausencias/+page.server.ts +++ b/src/routes/admin/ausencias/+page.server.ts @@ -40,10 +40,15 @@ export const load: PageServerLoad = async ({ url }) => { date: schema.deliveries.date }) .from(schema.deliveries) + .innerJoin( + schema.beneficiaries, + eq(schema.deliveries.beneficiaryId, schema.beneficiaries.id) + ) .where( and( gte(schema.deliveries.date, startDate), - lte(schema.deliveries.date, endDate) + lte(schema.deliveries.date, endDate), + eq(schema.beneficiaries.status, 'ativo') ) ) .all(); @@ -52,12 +57,23 @@ export const load: PageServerLoad = async ({ url }) => { // 4. Fetch all deliveries in the selected range const recentDeliveries = db - .select() + .select({ + id: schema.deliveries.id, + beneficiaryId: schema.deliveries.beneficiaryId, + shiftId: schema.deliveries.shiftId, + date: schema.deliveries.date, + createdAt: schema.deliveries.createdAt + }) .from(schema.deliveries) + .innerJoin( + schema.beneficiaries, + eq(schema.deliveries.beneficiaryId, schema.beneficiaries.id) + ) .where( and( gte(schema.deliveries.date, startDate), - lte(schema.deliveries.date, endDate) + lte(schema.deliveries.date, endDate), + eq(schema.beneficiaries.status, 'ativo') ) ) .all(); @@ -69,6 +85,11 @@ export const load: PageServerLoad = async ({ url }) => { lastDate: sql`max(${schema.deliveries.date})` }) .from(schema.deliveries) + .innerJoin( + schema.beneficiaries, + eq(schema.deliveries.beneficiaryId, schema.beneficiaries.id) + ) + .where(eq(schema.beneficiaries.status, 'ativo')) .groupBy(schema.deliveries.beneficiaryId) .all(); diff --git a/src/routes/admin/beneficiarios/+page.server.ts b/src/routes/admin/beneficiarios/+page.server.ts index 5ac2531..e89e761 100644 --- a/src/routes/admin/beneficiarios/+page.server.ts +++ b/src/routes/admin/beneficiarios/+page.server.ts @@ -1,30 +1,40 @@ import { db } from '$lib/server/db'; import * as schema from '$lib/server/db/schema'; -import { asc, eq, or, like, sql } from 'drizzle-orm'; +import { and, asc, eq, or, like, sql } from 'drizzle-orm'; import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ url }) => { const search = url.searchParams.get('search') || ''; - const status = url.searchParams.get('status') || ''; try { const totalFamiliesResult = db .select({ count: sql`count(*)` }) .from(schema.beneficiaries) - .where(eq(schema.beneficiaries.isParent, true)) + .where( + and( + eq(schema.beneficiaries.isParent, true), + eq(schema.beneficiaries.status, 'ativo') + ) + ) .get(); const totalFamilies = totalFamiliesResult?.count ?? 0; const totalBeneficiariesResult = db .select({ count: sql`count(*)` }) .from(schema.beneficiaries) + .where(eq(schema.beneficiaries.status, 'ativo')) .get(); const totalBeneficiaries = totalBeneficiariesResult?.count ?? 0; let query = db .select() .from(schema.beneficiaries) - .where(eq(schema.beneficiaries.isParent, true)); + .where( + and( + eq(schema.beneficiaries.isParent, true), + eq(schema.beneficiaries.status, 'ativo') + ) + ); // We can fetch all and filter in memory since table size is guaranteed to be small (<20 tables, low concurrency). // This keeps SQLite query logic extremely simple and readable. @@ -40,16 +50,11 @@ export const load: PageServerLoad = async ({ url }) => { ); } - if (status && status !== 'todos') { - list = list.filter((b) => b.status === status); - } - return { beneficiaries: list, totalFamilies, totalBeneficiaries, - search, - status: status || 'todos' + search }; } catch (err) { console.error('Error loading beneficiaries:', err); @@ -58,7 +63,6 @@ export const load: PageServerLoad = async ({ url }) => { totalFamilies: 0, totalBeneficiaries: 0, search, - status: status || 'todos', error: 'Erro ao carregar a lista de beneficiários.' }; } diff --git a/src/routes/admin/beneficiarios/+page.svelte b/src/routes/admin/beneficiarios/+page.svelte index a074999..da1579a 100644 --- a/src/routes/admin/beneficiarios/+page.svelte +++ b/src/routes/admin/beneficiarios/+page.svelte @@ -234,7 +234,7 @@ > Número de famíliasNúmero de famílias ativas @@ -272,8 +272,8 @@ > Todos os registos na base de dadosRegistos ativos na base de dados @@ -282,7 +282,7 @@
-
+
-
- - -
-