Initial commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
package com.pmumali.simple.exception;
|
||||
|
||||
|
||||
/**
|
||||
* Exception métier pour les erreurs spécifiques aux paris PMU Mali
|
||||
* conforme aux règles du "Jumelé Placé"
|
||||
*/
|
||||
public class PariException extends RuntimeException {
|
||||
|
||||
private final ErrorCode errorCode;
|
||||
private final String details;
|
||||
|
||||
// Codes d'erreur standardisés
|
||||
public enum ErrorCode {
|
||||
// Article 1 - Règles de base
|
||||
MISE_MINIMALE_NON_ATTEINTE("La mise minimale est de 500 FCFA"),
|
||||
|
||||
// Article 2 - Limitation des enjeux
|
||||
LIMITE_MISE_DEPASSEE("Limite de mise dépassée (20x500 FCFA maximum)"),
|
||||
|
||||
// Article 3 - Dead Heat
|
||||
CALCUL_RAPPORT_IMPOSSIBLE("Impossible de calculer les rapports pour ce Dead Heat"),
|
||||
|
||||
// Article 4 - Non-partants
|
||||
CHEVAL_NON_PARTANT("Pari invalide : cheval non-partant"),
|
||||
|
||||
// Article 5 - Calcul des rapports
|
||||
RAPPORT_INVALIDE("Rapport calculé invalide (<1.1)"),
|
||||
|
||||
// Article 6 - Formules
|
||||
FORMULE_INVALIDE("Formule de pari invalide"),
|
||||
|
||||
// Article 8 - Cas particuliers
|
||||
COURSE_ANNULEE("Course annulée - paris remboursés"),
|
||||
|
||||
// Validations générales
|
||||
PARI_INVALIDE("Pari invalide"),
|
||||
SOLDE_INSUFFISANT("Solde insuffisant pour placer ce pari"),
|
||||
CLIENT_BLOQUE("Compte client bloqué");
|
||||
|
||||
private final String message;
|
||||
|
||||
ErrorCode(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
// Constructeurs
|
||||
public PariException(ErrorCode errorCode) {
|
||||
super(errorCode.getMessage());
|
||||
this.errorCode = errorCode;
|
||||
this.details = null;
|
||||
}
|
||||
|
||||
public PariException(ErrorCode errorCode, String details) {
|
||||
super(errorCode.getMessage() + " : " + details);
|
||||
this.errorCode = errorCode;
|
||||
this.details = details;
|
||||
}
|
||||
|
||||
public PariException(ErrorCode errorCode, Throwable cause) {
|
||||
super(errorCode.getMessage(), cause);
|
||||
this.errorCode = errorCode;
|
||||
this.details = null;
|
||||
}
|
||||
|
||||
// Getters
|
||||
public ErrorCode getErrorCode() {
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
public String getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
||||
// Méthode utilitaire pour construire les messages
|
||||
public static String buildLimiteMiseMessage(double limite) {
|
||||
return String.format("Limite de mise dépassée (max %,.0f FCFA par course selon Article 2)", limite);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user