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: [],