From 6e045b369d8a648744e76179b6bfcbd50477d7cf Mon Sep 17 00:00:00 2001 From: "Yassine R." Date: Thu, 16 Jan 2025 20:13:00 +0100 Subject: [PATCH] fix(backend): fix export request --- ...cture-usagers.controller.security-tests.ts | 16 ++++++++++++- .../src/usagers/services/usagers.service.ts | 24 ++++++++++++------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/backend/src/usagers/controllers/security-tests/export-structure-usagers.controller.security-tests.ts b/packages/backend/src/usagers/controllers/security-tests/export-structure-usagers.controller.security-tests.ts index 9c390738d0..8d56635dba 100644 --- a/packages/backend/src/usagers/controllers/security-tests/export-structure-usagers.controller.security-tests.ts +++ b/packages/backend/src/usagers/controllers/security-tests/export-structure-usagers.controller.security-tests.ts @@ -17,7 +17,21 @@ export const ExportStructureUsagersControllerSecurityTests: AppTestHttpClientSec { label: `${CONTROLLER}.export`, query: async (context: AppTestContext) => ({ - response: await AppTestHttpClient.get("/export", { + response: await AppTestHttpClient.get("/export/TOUS", { + context, + }), + expectedStatus: expectedResponseStatusBuilder.allowStructureOnly( + context.user, + { + roles: ["responsable", "admin"], + } + ), + }), + }, + { + label: `${CONTROLLER}.export`, + query: async (context: AppTestContext) => ({ + response: await AppTestHttpClient.get("/export/VALIDE", { context, }), expectedStatus: expectedResponseStatusBuilder.allowStructureOnly( diff --git a/packages/backend/src/usagers/services/usagers.service.ts b/packages/backend/src/usagers/services/usagers.service.ts index a7c54424fe..1cba17f810 100644 --- a/packages/backend/src/usagers/services/usagers.service.ts +++ b/packages/backend/src/usagers/services/usagers.service.ts @@ -257,21 +257,23 @@ export class UsagersService { let skip = 0; let total = 0; - const params: any[] = [structureId]; - let whereClause = 'u."structureId" = $1'; + let whereClause = 'WHERE u."structureId" = $1'; + let countWhereClause = `${whereClause}`; + const countParams: any[] = [structureId]; if (statut !== UsagersFilterCriteriaStatut.TOUS) { - params.push(statut); - whereClause += ` AND u.statut = $${params.length}`; + countWhereClause += ` AND u.statut = $2`; + whereClause += ` AND u.statut = $4`; + countParams.push(statut); } const countQuery = ` SELECT COUNT(*) as count FROM usager u - ${whereClause} + ${countWhereClause} `; - const [{ count }] = await usagerRepository.query(countQuery, params); + const [{ count }] = await usagerRepository.query(countQuery, countParams); const query = ` SELECT @@ -323,12 +325,16 @@ export class UsagersService { FROM usager u LEFT JOIN usager_entretien e ON e."usagerUUID" = u.uuid ${whereClause} - ORDER BY u.uuid ASC - LIMIT $${params.length + 1} OFFSET $${params.length + 2} + ORDER BY u.nom ASC + LIMIT $2 OFFSET $3 `; while (true) { - const queryParams = [...params, chunkSize, skip]; + const queryParams: any[] = [structureId, chunkSize, skip]; + if (statut !== UsagersFilterCriteriaStatut.TOUS) { + queryParams.push(statut); + } + const chunk = await usagerRepository.query(query, queryParams); if (chunk.length === 0) {