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

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

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

/**
 * DTO para criação de fluxo de caixa.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateCashFlowDTO {

    @NotNull(message = "Conta de caixa é obrigatória")
    private UUID cashAccountId;

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

    @NotNull(message = "Tipo é obrigatório")
    private String type; // INFLOW, OUTFLOW

    @NotNull(message = "Valor é obrigatório")
    @Positive(message = "Valor deve ser positivo")
    private BigDecimal amount;

    private String description;

    private UUID referenceId;

    private String referenceType;
}

