133 lines
6.7 KiB
Java
133 lines
6.7 KiB
Java
package io.gmss.fiscad.implementations.statistiques;
|
|
|
|
import io.gmss.fiscad.entities.decoupage.Secteur;
|
|
import io.gmss.fiscad.entities.user.User;
|
|
import io.gmss.fiscad.enums.StatutEnquete;
|
|
import io.gmss.fiscad.interfaces.decoupage.SecteurService;
|
|
import io.gmss.fiscad.interfaces.statistique.StatistiquesService;
|
|
import io.gmss.fiscad.interfaces.user.UserService;
|
|
import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb;
|
|
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.EnqueteBatimentRepository;
|
|
import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteUniteLogementRepository;
|
|
import io.gmss.fiscad.persistence.repositories.rfu.metier.UniteLogementRepository;
|
|
import lombok.AllArgsConstructor;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Pageable;
|
|
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;
|
|
private final SecteurService secteurService;
|
|
private final EnqueteBatimentRepository enqueteBatimentRepository;
|
|
private final EnqueteUniteLogementRepository enqueteUniteLogementRepository;
|
|
|
|
public StatistiquesServiceImpl(UserService userService, EnqueteRepository enqueteRepository, ParcelleRepository parcelleRepository, BatimentRepository batimentRepository, UniteLogementRepository uniteLogementRepository, PersonneRepository personneRepository, SecteurService secteurService, EnqueteBatimentRepository enqueteBatimentRepository, EnqueteUniteLogementRepository enqueteUniteLogementRepository) {
|
|
this.userService = userService;
|
|
this.enqueteRepository = enqueteRepository;
|
|
this.parcelleRepository = parcelleRepository;
|
|
this.batimentRepository = batimentRepository;
|
|
this.uniteLogementRepository = uniteLogementRepository;
|
|
this.personneRepository = personneRepository;
|
|
this.secteurService = secteurService;
|
|
this.enqueteBatimentRepository = enqueteBatimentRepository;
|
|
this.enqueteUniteLogementRepository = enqueteUniteLogementRepository;
|
|
}
|
|
|
|
|
|
@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();
|
|
}
|
|
|
|
@Override
|
|
public NombreEnquetesParObjet getStatNombreEnqueteParObjetUserConnect(Long userId, String statutEnquete) {
|
|
NombreEnquetesParObjet nombreEnquetesParObjet= new NombreEnquetesParObjet();
|
|
List<Secteur> secteurs= secteurService.getListSecteurUserId(userId);
|
|
List<Long> secteurIds = secteurs.stream()
|
|
.map(Secteur::getId)
|
|
.toList();
|
|
|
|
nombreEnquetesParObjet.setNombreEnqueteUniteLogement(enqueteUniteLogementRepository.getNombreEnqueteUniteLogementByUserConnecte(secteurIds,statutEnquete));
|
|
nombreEnquetesParObjet.setNombreEnqueteParcelle(enqueteRepository.getNombreEnqueteByUserConnecte(secteurIds,statutEnquete));
|
|
nombreEnquetesParObjet.setNombreEnqueteBatiment(enqueteBatimentRepository.getNombreEnqueteBatimentByUserConnecte(secteurIds,statutEnquete));
|
|
|
|
return nombreEnquetesParObjet;
|
|
}
|
|
|
|
}
|