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

import br.gov.sigefp.budget.domain.BudgetEntryType;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

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

@Data
public class CreateBudgetEntryDTO {
    @NotNull(message = "Linha orçamentária é obrigatória")
    private UUID budgetLineId;

    @NotNull(message = "Tipo de movimento é obrigatório")
    private BudgetEntryType type;

    @NotNull(message = "Valor é obrigatório")
    @DecimalMin(value = "0.01", message = "Valor deve ser maior que zero")
    private BigDecimal amount;

    @NotNull(message = "Data da transação é obrigatória")
    private LocalDate transactionDate;

    @NotBlank(message = "Referência documental é obrigatória (ex: Lei, Decreto)")
    private String documentReference;

    private String description;
}
