done all the implementations of each parts yet

This commit is contained in:
Aboubacar SANGARE
2025-09-25 13:22:35 +00:00
parent 4b7b8649d3
commit 9ceaec5bec
42 changed files with 2816 additions and 136 deletions

View File

@@ -2,7 +2,7 @@ package com.pmumali.plr.dtos;
import java.util.List;
public record BulkChevalCourseRequest(List<ChevalEntry> entries) {
public record BulkChevalCourseRequest(Long courseId, List<ChevalEntry> entries) {
public static record ChevalEntry(Long chevalId, Integer numeroCheval) {
}
}

View File

@@ -1,3 +1,4 @@
package com.pmumali.plr.dtos;
public record ChevalDto(Long id, String nom, Integer numero, String nomEcurie, Integer birthYear) {}
public record ChevalDto(Long id, String nom, String nomEcurie, Integer birthYear) {
}

View File

@@ -4,4 +4,6 @@ import java.time.LocalDateTime;
import com.pmumali.plr.enums.CourseStatue;
public record CourseDto(Long id, String nom, String lieu, LocalDateTime departureDateTime, CourseStatue status){}
public record CourseDto(Long id, String nom, String lieu, LocalDateTime departureDateTime, Integer distance,
CourseStatue status) {
}

View File

@@ -0,0 +1,32 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import java.util.List;
import com.pmumali.plr.enums.PariType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class CreatePariRequestDto {
@NotNull(message = "Course ID cannot be null")
private Long courseId;
@NotNull(message = "PariType cannot be null")
private PariType pariType;
@NotNull(message = "Mise cannot be null")
@DecimalMin(value = "0", message = "Minimum mise is 0")
private BigDecimal mise;
@NotEmpty(message = "Bettor reference cannot be empty")
private String bettorRef;
@NotEmpty(message = "Selections cannot be empty")
private List<@Valid PariSelectionDto> selections;
}

View File

@@ -0,0 +1,28 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.pmumali.plr.enums.PariType;
import lombok.Builder;
@Builder
public record GainViewDto(
Long pariId,
Long courseId,
String courseNom,
PariType pariType,
String pariSousType, // e.g. "QP_ORDRE", "MULTI6" (optional)
String bettorRef,
BigDecimal mise,
BigDecimal gain, // official or 0 when provisional
String payoutMode, // "OFFICIAL" or "PROVISIONAL"
String numeroPlus, // for Quinté+ tickets (if any)
List<GainViewDto.Selection> selections,
LocalDateTime createdAt
) {
@Builder
public static record Selection(Long chevalId, String nomCheval, Integer position) {}
}

View File

@@ -0,0 +1,24 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import com.pmumali.plr.enums.PariType;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PariResponseDto {
private Long id;
private Long courseId;
private String courseNom;
private PariType pariType;
private BigDecimal mise;
private String bettorRef;
private Boolean estGagnant;
private BigDecimal gain;
private LocalDateTime createdAt;
private List<PariSelectionResponseDto> selections;
}

View File

@@ -0,0 +1,14 @@
package com.pmumali.plr.dtos;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class PariSelectionDto {
@NotNull
private Long chevalId;
@Min(1)
private Integer position;
}

View File

@@ -0,0 +1,12 @@
package com.pmumali.plr.dtos;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PariSelectionResponseDto {
private Long chevalId;
private String nomCheval;
private Integer position;
}

View File

@@ -0,0 +1,16 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import com.pmumali.plr.enums.PariType;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class RapportDto {
private Long courseId;
private PariType pariType;
private BigDecimal rapportParUnite; // cagnotte / total mise gagnants (0 si pas de gagnant)
}

View File

@@ -0,0 +1,15 @@
package com.pmumali.plr.dtos;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class ResultatChevalDto {
@NotNull
private Long chevalId;
@NotNull
@Min(1)
private Integer rang;
}

View File

@@ -0,0 +1,4 @@
package com.pmumali.plr.dtos;
public record ResultatChevalView(ChevalDto cheval, Integer numeroCheval, Integer rang) {}

View File

@@ -0,0 +1,21 @@
package com.pmumali.plr.dtos;
import java.util.List;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class ResultatCreationDto {
@NotNull
private Long courseId;
// optionnel pour Quinté+
private String numeroPlusGagnant;
@NotEmpty
@Valid
private List<ResultatChevalDto> resultatsChevaux;
}

View File

@@ -0,0 +1,19 @@
package com.pmumali.plr.dtos;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Builder;
@Builder
public record ResultatDto(
Long id,
Long courseId,
String courseNom,
LocalDateTime dateOfficielle,
String numeroPlusGagnant,
List<LigneDto> arrivee
) {
@Builder
public record LigneDto(Long chevalId, String chevalNom, Integer rang) {}
}

View File

@@ -0,0 +1,27 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import com.pmumali.plr.enums.PariType;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class SettlementSummaryDto {
private Long courseId;
private Map<PariType, PoolLine> pools; // par type
private List<RapportDto> rapports; // par type (€/1 unité de mise)
private boolean closed; // course cloturée ?
@Data @Builder
public static class PoolLine {
private BigDecimal totalMise; // total misé
private BigDecimal prelevement; // montant prélevé
private BigDecimal cagnotte; // totalMise - prelevement
private BigDecimal totalMiseGagnants; // somme des mises gagnantes
}
}

View File

@@ -0,0 +1,28 @@
package com.pmumali.plr.dtos;
import java.math.BigDecimal;
import java.util.List;
import com.pmumali.plr.enums.PariType;
import jakarta.validation.Valid;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
@Data
public class UpdatePariRequestDto {
@NotNull
private PariType pariType;
@NotNull @DecimalMin("0.01")
private BigDecimal mise;
@NotBlank
private String bettorRef;
@NotNull @Size(min = 1)
private List<@Valid PariSelectionDto> selections;
}