using System.ComponentModel.DataAnnotations;

namespace GestionIntegral.Api.Dtos.Suscripciones
{
    public class UpdateSuscriptorDto
    {
        [Required(ErrorMessage = "El nombre completo es obligatorio.")]
        [StringLength(150)]
        public string NombreCompleto { get; set; } = string.Empty;

        [EmailAddress(ErrorMessage = "El formato del email no es válido.")]
        [StringLength(100)]
        public string? Email { get; set; }

        [StringLength(50)]
        [RegularExpression(@"^[0-9\s\+\-\(\)]*$", ErrorMessage = "El teléfono solo puede contener números y los símbolos +, -, () y espacios.")]
        public string? Telefono { get; set; }

        [Required(ErrorMessage = "La dirección es obligatoria.")]
        [StringLength(200)]
        public string Direccion { get; set; } = string.Empty;

        [Required(ErrorMessage = "El tipo de documento es obligatorio.")]
        [StringLength(4)]
        public string TipoDocumento { get; set; } = string.Empty;

        [Required(ErrorMessage = "El número de documento es obligatorio.")]
        [StringLength(11)]
        [RegularExpression("^[0-9]*$", ErrorMessage = "El número de documento solo puede contener números.")]
        public string NroDocumento { get; set; } = string.Empty;

        [StringLength(22, MinimumLength = 22, ErrorMessage = "El CBU debe tener 22 dígitos.")]
        [RegularExpression("^[0-9]*$", ErrorMessage = "El CBU solo puede contener números.")]
        public string? CBU { get; set; }

        [Required(ErrorMessage = "La forma de pago es obligatoria.")]
        public int IdFormaPagoPreferida { get; set; }

        [StringLength(250)]
        public string? Observaciones { get; set; }
    }
}