Checkpoint: Évolution v6 complète : onglets Éditeurs et Blocs fonctionnels dans Admin (CRUD complet), page Tableau de bord statistiques avec graphiques Recharts (KPIs, barres par bloc/région, camembert état déploiement, top 10 solutions), lien dans la sidebar réservé aux gestionnaires. 33 tests Vitest passés, 0 erreur TypeScript.
This commit is contained in:
@@ -5,11 +5,16 @@ import {
|
||||
authenticateLocalUser,
|
||||
createDemandeContact,
|
||||
createBlocFonctionnel,
|
||||
updateBlocFonctionnel,
|
||||
deleteBlocFonctionnel,
|
||||
createEditeur,
|
||||
updateEditeur,
|
||||
deleteEditeur,
|
||||
createLocalUser,
|
||||
createSolution,
|
||||
updateSolution,
|
||||
deleteSolution,
|
||||
getStatistiques,
|
||||
deleteLogicielEtablissement,
|
||||
deleteUser,
|
||||
getAllDemandes,
|
||||
@@ -141,6 +146,19 @@ export const appRouter = router({
|
||||
const isGestionnaire = ctx.user.sonumRole === "gestionnaire" || ctx.user.role === "admin";
|
||||
return createBlocFonctionnel(input.nom, isGestionnaire);
|
||||
}),
|
||||
updateBlocFonctionnel: gestionnaireProcedure
|
||||
.input(z.object({ id: z.number().int(), nom: z.string().min(1) }))
|
||||
.mutation(({ input }) => updateBlocFonctionnel(input.id, input.nom)),
|
||||
deleteBlocFonctionnel: gestionnaireProcedure
|
||||
.input(z.object({ id: z.number().int() }))
|
||||
.mutation(({ input }) => deleteBlocFonctionnel(input.id)),
|
||||
updateEditeur: gestionnaireProcedure
|
||||
.input(z.object({ id: z.number().int(), nom: z.string().min(1) }))
|
||||
.mutation(({ input }) => updateEditeur(input.id, input.nom)),
|
||||
deleteEditeur: gestionnaireProcedure
|
||||
.input(z.object({ id: z.number().int() }))
|
||||
.mutation(({ input }) => deleteEditeur(input.id)),
|
||||
statistiques: gestionnaireProcedure.query(() => getStatistiques()),
|
||||
|
||||
createSolution: protectedProcedure
|
||||
.input(z.object({
|
||||
|
||||
Reference in New Issue
Block a user