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

import dev.lions.unionflow.server.api.enums.solidarite.TypeEvaluation;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.Map;
import java.util.UUID;
import lombok.Builder;

/**
 * Requête de création d'une évaluation d'aide.
 */
@Builder
public record CreateEvaluationAideRequest(
        @NotNull(message = "L'identifiant de la demande d'aide est obligatoire") UUID demandeAideId,

        UUID propositionAideId,

        @NotNull(message = "L'identifiant de l'évaluateur est obligatoire") UUID evaluateurId,

        @NotBlank(message = "Le rôle de l'évaluateur est obligatoire") String roleEvaluateur,

        @NotNull(message = "Le type d'évaluation est obligatoire") TypeEvaluation typeEvaluation,

        @NotNull(message = "La note globale est obligatoire") @DecimalMin(value = "1.0", message = "La note doit être au moins 1") @DecimalMax(value = "5.0", message = "La note ne peut pas dépasser 5") Double noteGlobale,

        Map<String, Double> notesDetaillees,

        @NotBlank(message = "Le commentaire est obligatoire") @Size(min = 10, max = 1000, message = "Le commentaire doit contenir entre 10 et 1000 caractères") String commentairePrincipal,

        String pointsPositifs,
        String pointsAmelioration,
        String recommandations,
        Boolean recommande,
        Boolean aideUtile,
        Boolean problemeResolu,
        Double noteDelaiReponse,
        Double noteCommunication,
        Double noteProfessionnalisme,
        Double noteRespectEngagements,
        Boolean estAnonyme) {
}
