package dev.lions.unionflow.server.api.dto.solidarite.request;

import dev.lions.unionflow.server.api.dto.solidarite.BeneficiaireAideDTO;
import dev.lions.unionflow.server.api.dto.solidarite.ContactUrgenceDTO;
import dev.lions.unionflow.server.api.dto.solidarite.LocalisationDTO;
import dev.lions.unionflow.server.api.dto.solidarite.PieceJustificativeDTO;
import dev.lions.unionflow.server.api.enums.solidarite.PrioriteAide;
import dev.lions.unionflow.server.api.enums.solidarite.TypeAide;
import jakarta.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import lombok.Builder;

/**
 * Requête de mise à jour d'une demande d'aide.
 */
@Builder
public record UpdateDemandeAideRequest(
                TypeAide typeAide,
                @Size(max = 200) String titre,
                @Size(max = 2000) String description,
                @Size(max = 1000) String justification,
                BigDecimal montantDemande,
                String devise,
                PrioriteAide priorite,
                List<PieceJustificativeDTO> piecesJustificatives,
                List<BeneficiaireAideDTO> beneficiaires,
                Map<String, Object> donneesPersonnalisees,
                List<String> tags,
                Boolean estConfidentielle,
                Boolean necessiteSuivi,
                LocalisationDTO localisation,
                ContactUrgenceDTO contactUrgence,
                LocalDate dateLimite,
                dev.lions.unionflow.server.api.enums.solidarite.StatutAide statut,
                BigDecimal montantApprouve,
                String commentairesEvaluateur,
                String documentsJoints,
                java.time.LocalDateTime dateSoumission,
                java.time.LocalDateTime dateEvaluation,
                java.time.LocalDateTime dateVersement) {
}
