03 junio 2025

C# DataAnnotations

/// <summary>
/// Token class
/// </summary>
[Index(nameof(AccessToken), IsUnique = true, Name = "Uk_DataModel_AccessToken")]
[Index(nameof(Status), Name = "Ix_DataModel_Status")]
[Index("Descripcion", Name = "UK_DataModel_Descripcion", IsUnique = true)]
public class DataModel
{
    /// <summary>
    /// Defgult constructor
    /// </summary>
    public DataModel()
    {
        UsernameChangeLimit = 10;
        Id = Guid.NewGuid();
        CreatedDate = DateTimeOffset.UtcNow.AddHours(-5);
        Status = Status.Active;
        ProfilePicture = Convert.FromBase64String("iVBORw0KGgo...");
    }

    /// <summary>
    /// Expire Minutes property
    /// </summary>
    [Required]
    [Range(1, 1440)]
    public int ExpireMinutes { get; set; }

    /// <summary>
    /// Symmetric Security Key property
    /// </summary>
    [Required]
    [ProtectedPersonalData]
    public string SymmetricSecurityKey { get; set; }

    /// <summary>
    /// Id property
    /// </summary>
    [Key]
    [Required]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    /// <summary>
    /// Profile Picture
    /// </summary>
    [Comment("ProfilePicture")]
    [Display(Name = "Imagen usuario")]
    [Required(ErrorMessage = "{0} requerido")]
    public byte[] ProfilePicture { get; set; }

    /// <summary>
    /// First Name
    /// </summary>
    [PersonalData]
    [Comment("Nombre")]
    [Display(Name = "Nombre")]
    [Required(ErrorMessage = "{0} requerido")]
    [StringLength(50)]
    [MinLength(3, ErrorMessage = "{0} mínimo {1} caracteres")]
    [MaxLength(50, ErrorMessage = "{0} máximo {1} caracteres")]
    public string FirstName { get; set; }

    /// <summary>
    /// Username Change Limit
    /// </summary>
    [Comment("UsernameChangeLimit")]
    [Display(Name = "Límite cambio usuario")]
    [Range(1, 20, ErrorMessage = "{0} rango entre {1} y {2}")]
    public int UsernameChangeLimit { get; set; }

    /// <summary>
    /// Created Date property
    /// </summary>
    [Comment("CreatedDate")]
    [Display(Name = "Fecha creación")]
    [Required(ErrorMessage = "{0} requerido")]
    [DataType(DataType.DateTime, ErrorMessage = "{0} formato fecha incorrecto")]
    public DateTimeOffset CreatedDate { get; set; }

    /// <summary>
    /// Descripcion
    /// </summary>
    public string Descripcion { get; set; }

    [Comment("Price")]
    [Display(Name = "Precio")]
    [Range(0.1, 999999999, ErrorMessage = "{0} rango entre {1} y {2}")]
    public decimal Precio { get; set; }
}

No hay comentarios: