package br.gov.sigefp.treasury.api.dto;

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Max;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * DTO para criação de Plano de Tesouraria.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateTreasuryPlanDTO {

    @NotNull(message = "Ano fiscal é obrigatório")
    @Min(value = 2020, message = "Ano fiscal deve ser a partir de 2020")
    private Integer fiscalYear;

    @NotNull(message = "Mês de referência é obrigatório")
    @Min(value = 1, message = "Mês deve ser entre 1 e 12")
    @Max(value = 12, message = "Mês deve ser entre 1 e 12")
    private Integer referenceMonth;

    @NotNull(message = "Teto aprovado é obrigatório")
    @Positive(message = "Teto aprovado deve ser positivo")
    private BigDecimal approvedCeiling;

    private LocalDate startDate; // Opcional - calculado automaticamente se não fornecido
    private LocalDate endDate; // Opcional - calculado automaticamente se não fornecido
}

