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

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

import java.time.Instant;
import java.util.UUID;

/**
 * DTO para criação de pagamento efetivado.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateTreasuryPaymentDTO {

    @NotNull(message = "ID da ordem de pagamento é obrigatório")
    private UUID paymentOrderId;

    private Instant paidAt;

    @Size(max = 100, message = "Referência da transação deve ter no máximo 100 caracteres")
    private String transactionRef;

    @NotBlank(message = "Status é obrigatório")
    private String status; // PENDING, PAID, REJECTED, CANCELLED

    @Size(max = 1000, message = "Mensagem deve ter no máximo 1000 caracteres")
    private String message;
}

