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

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

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

/**
 * DTO para transferência de dados de conta de utilizador.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserAccountDTO {

    private UUID id;

    @NotBlank(message = "Username é obrigatório")
    @Size(min = 3, max = 50, message = "Username deve ter entre 3 e 50 caracteres")
    private String username;

    @NotBlank(message = "Nome completo é obrigatório")
    @Size(max = 200, message = "Nome completo deve ter no máximo 200 caracteres")
    private String fullName;

    @NotBlank(message = "Email é obrigatório")
    @Email(message = "Email inválido")
    @Size(max = 100, message = "Email deve ter no máximo 100 caracteres")
    private String email;

    @Size(min = 6, max = 100, message = "Password deve ter entre 6 e 100 caracteres")
    private String password; // Opcional para updates

    private Boolean isActive;

    private Instant createdAt;

    private Instant updatedAt;

    private List<UUID> roleIds; // IDs dos perfis associados
}

