feat(sync): MembreRoleSyncService + count admins dynamique
- Nouveau MembreRoleSyncService.ensureOrgAdminRole : auto-crée un MembreRole ORGADMIN quand un user avec rôle Keycloak ADMIN_ORGANISATION se connecte sans entrée DB (couvre les comptes créés directement dans Keycloak). - OrganisationContextFilter appelle syncService.ensureOrgAdminRole quand le rôle Keycloak est présent mais MembreRole absent (non bloquant sur erreur). - MembreRoleRepository.countAdminsByOrganisationId : count strict (ORGADMIN + actif + dateDebut/dateFin valides) avec fallback sur codes alternatifs si strict=0. - OrganisationService.convertToResponse : nombreAdministrateurs dynamique via MembreRoleRepository (remplace le champ Organisation jamais mis à jour).
This commit is contained in:
@@ -11,6 +11,7 @@ import dev.lions.unionflow.server.repository.AdresseRepository;
|
||||
import dev.lions.unionflow.server.repository.EvenementRepository;
|
||||
import dev.lions.unionflow.server.repository.MembreOrganisationRepository;
|
||||
import dev.lions.unionflow.server.repository.MembreRepository;
|
||||
import dev.lions.unionflow.server.repository.MembreRoleRepository;
|
||||
import dev.lions.unionflow.server.repository.TypeReferenceRepository;
|
||||
import dev.lions.unionflow.server.entity.Organisation;
|
||||
import dev.lions.unionflow.server.repository.OrganisationRepository;
|
||||
@@ -63,6 +64,9 @@ public class OrganisationService {
|
||||
@Inject
|
||||
EvenementRepository evenementRepository;
|
||||
|
||||
@Inject
|
||||
MembreRoleRepository membreRoleRepository;
|
||||
|
||||
/**
|
||||
* Crée une nouvelle organisation
|
||||
*
|
||||
@@ -565,11 +569,16 @@ public class OrganisationService {
|
||||
dto.setObjectifs(organisation.getObjectifs());
|
||||
dto.setActivitesPrincipales(organisation.getActivitesPrincipales());
|
||||
dto.setNombreMembres(organisation.getNombreMembres());
|
||||
dto.setNombreAdministrateurs(organisation.getNombreAdministrateurs());
|
||||
if (organisation.getId() != null) {
|
||||
// Compte dynamique des administrateurs (rôle ADMIN_ORGANISATION actif)
|
||||
// — le champ Organisation.nombreAdministrateurs n'est pas tenu à jour.
|
||||
long countAdmins = membreRoleRepository.countAdminsByOrganisationId(organisation.getId());
|
||||
dto.setNombreAdministrateurs((int) countAdmins);
|
||||
|
||||
long countEvenements = evenementRepository.countActifsByOrganisationId(organisation.getId());
|
||||
dto.setNombreEvenements((int) countEvenements);
|
||||
} else {
|
||||
dto.setNombreAdministrateurs(0);
|
||||
dto.setNombreEvenements(0);
|
||||
}
|
||||
dto.setBudgetAnnuel(organisation.getBudgetAnnuel());
|
||||
|
||||
Reference in New Issue
Block a user