Refactoring - Version OK

This commit is contained in:
dahoud
2025-11-17 15:27:42 +00:00
parent 990ee549e6
commit edaa5b17ea
67 changed files with 19835 additions and 1729 deletions

View File

@@ -332,7 +332,7 @@ public class DashboardWidgetDTO extends BaseDTO {
public String getStatutWidget() {
if (hasErreursRecentes()) return "erreur";
if (!visible) return "inactif";
if (tauxErreur > 10.0) return "maintenance";
if (tauxErreur != null && tauxErreur > 10.0) return "maintenance";
return "actif";
}
}

View File

@@ -437,7 +437,7 @@ public class CotisationDTO extends BaseDTO {
return montantPaye
.multiply(BigDecimal.valueOf(100))
.divide(montantDu, 0, BigDecimal.ROUND_HALF_UP)
.divide(montantDu, 0, java.math.RoundingMode.HALF_UP)
.intValue();
}

View File

@@ -636,7 +636,8 @@ public class FormuleAbonnementDTO extends BaseDTO {
if (Boolean.TRUE.equals(personnalisationInterface)) score += 10;
total += 10;
return total > 0 ? (score * 100) / total : 0;
// total est toujours > 0 car il est toujours incrémenté (minimum 100)
return (score * 100) / total;
}
/**

View File

@@ -596,21 +596,27 @@ public class PreferencesNotificationDTO {
return true;
}
/** Vérifie si on est en mode silencieux actuellement */
public boolean isEnModeSilencieux() {
/**
* Version de test de isEnModeSilencieux avec une heure fixe
* Permet de tester toutes les branches sans dépendre de l'heure actuelle
*/
boolean isEnModeSilencieux(LocalTime heureActuelle) {
if (!modeSilencieux) return false;
if (heureDebutSilencieux == null || heureFinSilencieux == null) return false;
LocalTime maintenant = LocalTime.now();
// Gestion du cas où la période traverse minuit
if (heureDebutSilencieux.isAfter(heureFinSilencieux)) {
return maintenant.isAfter(heureDebutSilencieux) || maintenant.isBefore(heureFinSilencieux);
return heureActuelle.isAfter(heureDebutSilencieux) || heureActuelle.isBefore(heureFinSilencieux);
} else {
return maintenant.isAfter(heureDebutSilencieux) && maintenant.isBefore(heureFinSilencieux);
return heureActuelle.isAfter(heureDebutSilencieux) && heureActuelle.isBefore(heureFinSilencieux);
}
}
/** Vérifie si on est en mode silencieux actuellement */
public boolean isEnModeSilencieux() {
return isEnModeSilencieux(LocalTime.now());
}
/** Vérifie si un expéditeur est bloqué */
public boolean isExpediteurBloque(String expediteurId) {
return expediteursBloqués != null && expediteursBloqués.contains(expediteurId);

View File

@@ -227,8 +227,15 @@ public enum PrioriteAide {
/** Vérifie si le délai de traitement est dépassé */
public boolean isDelaiDepasse(java.time.LocalDateTime dateCreation) {
return isDelaiDepasse(dateCreation, java.time.LocalDateTime.now());
}
/** Vérifie si le délai de traitement est dépassé (version avec date de référence) */
public boolean isDelaiDepasse(java.time.LocalDateTime dateCreation, java.time.LocalDateTime maintenant) {
java.time.LocalDateTime dateLimite = dateCreation.plusHours(delaiTraitementHeures);
return java.time.LocalDateTime.now().isAfter(dateLimite);
// Utilise isAfter strictement : le délai est dépassé seulement si on est APRÈS la limite
// Si on est exactement à la limite, le délai n'est pas encore dépassé
return maintenant.isAfter(dateLimite);
}
/** Calcule le pourcentage de temps écoulé */

View File

@@ -244,7 +244,16 @@ public enum StatutAide {
public boolean peutTransitionnerVers(StatutAide nouveauStatut) {
// Règles de transition simplifiées
if (this == nouveauStatut) return false;
if (estFinal && nouveauStatut != EN_SUIVI) return false;
// Les statuts finaux ne peuvent transitionner que vers EN_SUIVI
// Exception : APPROUVEE et APPROUVEE_PARTIELLEMENT peuvent transitionner vers EN_COURS_TRAITEMENT ou SUSPENDUE
// car ce sont des statuts de décision qui doivent permettre le démarrage du traitement
if (estFinal
&& this != APPROUVEE
&& this != APPROUVEE_PARTIELLEMENT
&& nouveauStatut != EN_SUIVI) {
return false;
}
return switch (this) {
case BROUILLON -> nouveauStatut == SOUMISE || nouveauStatut == ANNULEE;