Checkpoint: Correction de deux bugs : (1) getToutesLesSolutionsGroupees retourne maintenant editeurId et blocFonctionnelId pour pré-remplir le Dialog de modification ; (2) getBlocsFonctionnels ne filtre plus sur estValide=true, tous les blocs fonctionnels sont désormais visibles dans les selects.

This commit is contained in:
Manus
2026-04-17 10:33:38 -04:00
parent df8c5ee2c1
commit cbd439bac7

View File

@@ -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<number, {
solutionId: number;
solutionNom: string;
editeurId: number | null;
editeurNom: string;
blocFonctionnelId: number | null;
blocFonctionnelNom: string | null;
nbEtablissements: number;
etablissements: { id: number; nom: string; region: string | null; etatDeploiement: string }[];
}>();
for (const row of rows) {
if (!map.has(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({
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.
*/
@@ -705,7 +712,9 @@ export async function getToutesLesSolutionsGroupees() {
.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<number, {
solutionId: number;
solutionNom: string;
editeurId: number | null;
editeurNom: string;
blocFonctionnelId: number | null;
blocFonctionnelNom: string | null;
nbEtablissements: number;
etablissements: { id: number; nom: string; region: string | null; etatDeploiement: string }[];
}>();
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: [],