From cbd439bac7f6d5207e2f17546f869b5502c3b104 Mon Sep 17 00:00:00 2001 From: Manus Date: Fri, 17 Apr 2026 10:33:38 -0400 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Correction=20de=20deux=20bugs=20:?= =?UTF-8?q?=20(1)=20getToutesLesSolutionsGroupees=20retourne=20maintenant?= =?UTF-8?q?=20editeurId=20et=20blocFonctionnelId=20pour=20pr=C3=A9-remplir?= =?UTF-8?q?=20le=20Dialog=20de=20modification=20;=20(2)=20getBlocsFonction?= =?UTF-8?q?nels=20ne=20filtre=20plus=20sur=20estValide=3Dtrue,=20tous=20le?= =?UTF-8?q?s=20blocs=20fonctionnels=20sont=20d=C3=A9sormais=20visibles=20d?= =?UTF-8?q?ans=20les=20selects.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/db.ts | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/server/db.ts b/server/db.ts index 03e2ec1..aacc1f1 100644 --- a/server/db.ts +++ b/server/db.ts @@ -99,7 +99,7 @@ export async function createEditeur(nom: string, estValide = false) { export async function getBlocsFonctionnels() { const db = await getDb(); if (!db) return []; - return db.select().from(blocsFonctionnels).where(eq(blocsFonctionnels.estValide, true)).orderBy(blocsFonctionnels.nom); + return db.select().from(blocsFonctionnels).orderBy(blocsFonctionnels.nom); } export async function createBlocFonctionnel(nom: string, estValide = false) { @@ -667,33 +667,40 @@ export async function getMesSolutionsGroupees(userId: number, sonumRole: string) const map = new Map(); - for (const row of rows) { if (!map.has(row.solutionId)) { - map.set(row.solutionId, { + map.set(row.solutionId, { solutionId: row.solutionId, solutionNom: row.solutionNom ?? "", + editeurId: null, editeurNom: row.editeurNom ?? "", + blocFonctionnelId: null, blocFonctionnelNom: row.blocFonctionnelNom ?? null, + nbEtablissements: 0, etablissements: [], }); } - map.get(row.solutionId)!.etablissements.push({ - id: row.etablissementId, - nom: row.etablissementNom ?? "", - region: row.etablissementRegion ?? null, - etatDeploiement: row.etatDeploiement ?? "", - }); + const entry = map.get(row.solutionId)!; + if (row.etablissementId) { + entry.etablissements.push({ + id: row.etablissementId, + nom: row.etablissementNom ?? "", + region: row.etablissementRegion ?? null, + etatDeploiement: row.etatDeploiement ?? "", + }); + entry.nbEtablissements = entry.etablissements.length; + } } - return Array.from(map.values()); } - -/** +/*** * Retourne toutes les solutions du référentiel avec les établissements équipés (vue globale). * Accessible à tous les utilisateurs connectés. */ @@ -701,11 +708,13 @@ export async function getToutesLesSolutionsGroupees() { const db = await getDb(); if (!db) return []; - const rows = await db + const rows = await db .select({ solutionId: solutions.id, solutionNom: solutions.nom, + editeurId: solutions.editeurId, editeurNom: editeurs.nom, + blocFonctionnelId: solutions.blocFonctionnelId, blocFonctionnelNom: blocsFonctionnels.nom, etablissementId: etablissements.id, etablissementNom: etablissements.nom, @@ -718,22 +727,24 @@ export async function getToutesLesSolutionsGroupees() { .leftJoin(logicielsEtablissements, eq(logicielsEtablissements.solutionId, solutions.id)) .leftJoin(etablissements, eq(logicielsEtablissements.etablissementId, etablissements.id)) .orderBy(solutions.nom, etablissements.nom); - - const map = new Map(); - for (const row of rows) { if (!map.has(row.solutionId)) { map.set(row.solutionId, { solutionId: row.solutionId, solutionNom: row.solutionNom ?? "", + editeurId: row.editeurId ?? null, editeurNom: row.editeurNom ?? "", + blocFonctionnelId: row.blocFonctionnelId ?? null, blocFonctionnelNom: row.blocFonctionnelNom ?? null, nbEtablissements: 0, etablissements: [],