Files
fiscad/src/main/java/io/gmss/fiscad/implementations/statistiques/StatistiquesServiceImpl.java
Aurince AKAKPO 1c63303f3c
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 33s
gestion revu de code en utilisant uniquement les DTO
2026-02-01 23:45:27 +01:00

102 lines
4.8 KiB
Java

package io.gmss.fiscad.implementations.statistiques;
import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.interfaces.statistique.StatistiquesService;
import io.gmss.fiscad.interfaces.user.UserService;
import io.gmss.fiscad.paylaods.response.statistique.*;
import io.gmss.fiscad.persistence.repositories.infocad.metier.EnqueteRepository;
import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleRepository;
import io.gmss.fiscad.persistence.repositories.infocad.parametre.PersonneRepository;
import io.gmss.fiscad.persistence.repositories.rfu.metier.BatimentRepository;
import io.gmss.fiscad.persistence.repositories.rfu.metier.UniteLogementRepository;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class StatistiquesServiceImpl implements StatistiquesService {
private Authentication authentication;
private final UserService userService;
private final EnqueteRepository enqueteRepository;
private final ParcelleRepository parcelleRepository;
private final BatimentRepository batimentRepository;
private final UniteLogementRepository uniteLogementRepository;
private final PersonneRepository personneRepository;
public StatistiquesServiceImpl(UserService userService, EnqueteRepository enqueteRepository, ParcelleRepository parcelleRepository, BatimentRepository batimentRepository, UniteLogementRepository uniteLogementRepository, PersonneRepository personneRepository) {
this.userService = userService;
this.enqueteRepository = enqueteRepository;
this.parcelleRepository = parcelleRepository;
this.batimentRepository = batimentRepository;
this.uniteLogementRepository = uniteLogementRepository;
this.personneRepository = personneRepository;
}
@Override
public List<StatEnqueteParStatutResponse> getStatEnqueteParStatut() {
String userName = "";
List<StatEnqueteParStatutResponse> statEnqueteParStatutResponse = new ArrayList<>();
try {
authentication = SecurityContextHolder.getContext().getAuthentication();
userName = authentication.getName();
User user = userService.getUserByUsername(userName);
statEnqueteParStatutResponse = user.isAdmin() ? enqueteRepository.getStatEnqueteParStatut() : enqueteRepository.getStatEnqueteParStatut(user.getId());
return statEnqueteParStatutResponse;
} catch (Exception e) {
return new ArrayList<>();
}
}
@Override
public List<StatEnqueteAdminDecoupageResponse> getStatEnqueteAdminDecoupage(Long idCommune) {
return enqueteRepository.getStatEnqueteParDecoupage(idCommune);
}
@Override
public List<StatEnqueteAdminStructureResponse> getStatEnqueteAdminStructure() {
return enqueteRepository.getStatEnqueteParStructure();
}
@Override
public List<StatEnqueteParBlocResponse> getStatBloc() {
String userName = "";
try {
authentication = SecurityContextHolder.getContext().getAuthentication();
userName = authentication.getName();
User user = userService.getUserByUsername(userName);
return enqueteRepository.getStatEnqueteParBloc(user.getId());
} catch (Exception e) {
return new ArrayList<>();
}
}
@Override
public StatNombreTotalObjet getStatNombreTotalObjet(String codeDecoupageAdmin) {
StatNombreTotalObjet statNombreTotalObjet = new StatNombreTotalObjet();
List<StatistiqueTypeNombreResponse> statistiqueTypeNombreRespons = parcelleRepository.getParcelleBatieResponse(codeDecoupageAdmin);
Long nombreBatiment= batimentRepository.countByParcelle_Quartier_CodeLike(codeDecoupageAdmin+"%");
Long nombreUniteLogement= uniteLogementRepository.countByBatiment_Parcelle_Quartier_CodeLike(codeDecoupageAdmin+"%");
statistiqueTypeNombreRespons.forEach(statistiqueTypeNombreResponse -> {
if(statistiqueTypeNombreResponse.getType().equals("BATIES")){
statNombreTotalObjet.setNombreParcelleBatie(statistiqueTypeNombreResponse.getNombre());
}
if(statistiqueTypeNombreResponse.getType().equals("NON BATIES")){
statNombreTotalObjet.setNombreParcelleNonBatie(statistiqueTypeNombreResponse.getNombre());
}
});
statNombreTotalObjet.setNombreBatiments(nombreBatiment);
statNombreTotalObjet.setNombreUniteLogement(nombreUniteLogement);
return statNombreTotalObjet;
}
@Override
public List<StatistiqueTypeNombreResponse> getStatNombrePersonneParCategorie() {
return personneRepository.getNombrePersonnesResponse();
}
}