Checkpoint: Ajout du panneau d'affectation utilisateurs (référent + adhérents) depuis l'onglet Établissements de l'Admin. Filtrage des établissements selon le rôle dans le moteur de recherche (adhérent = seulement ses établissements affectés, référent = ses établissements, gestionnaire = tous).

This commit is contained in:
Manus
2026-04-24 07:46:58 -04:00
parent b69f5ff118
commit 46321a1eaf
3 changed files with 370 additions and 36 deletions

View File

@@ -39,6 +39,9 @@ import {
removeEtablissementFromUser,
repondreDemandeContact,
setAffectationsForUser,
getUsersForEtablissement,
setReferentForEtablissement,
setAdherentsForEtablissement,
updateLocalPassword,
updateUser,
updateUserCgu,
@@ -564,6 +567,33 @@ export const appRouter = router({
await removeEtablissementFromUser(input.userId, input.etablissementId);
return { success: true };
}),
/** Retourne les utilisateurs (adhérents + référent) d'un établissement */
getUsersForEtablissement: gestionnaireProcedure
.input(z.object({ etablissementId: z.number().int() }))
.query(({ input }) => getUsersForEtablissement(input.etablissementId)),
/** Définit le référent numérique d'un établissement */
setReferentForEtablissement: gestionnaireProcedure
.input(z.object({
etablissementId: z.number().int(),
referentId: z.number().int().nullable(),
}))
.mutation(async ({ input }) => {
await setReferentForEtablissement(input.etablissementId, input.referentId);
return { success: true };
}),
/** Remplace tous les adhérents affectés à un établissement */
setAdherentsForEtablissement: gestionnaireProcedure
.input(z.object({
etablissementId: z.number().int(),
userIds: z.array(z.number().int()),
}))
.mutation(async ({ input }) => {
await setAdherentsForEtablissement(input.etablissementId, input.userIds);
return { success: true };
}),
}),
});