using System; using System.ComponentModel.DataAnnotations; namespace GestionIntegral.Api.Dtos.Distribucion { public class EntradaSalidaCanillaItemDto { [Required(ErrorMessage = "El ID de la publicación es obligatorio.")] public int IdPublicacion { get; set; } [Required(ErrorMessage = "La cantidad de salida es obligatoria.")] [Range(0, int.MaxValue, ErrorMessage = "La cantidad de salida debe ser un número positivo o cero.")] public int CantSalida { get; set; } [Required(ErrorMessage = "La cantidad de entrada es obligatoria.")] [Range(0, int.MaxValue, ErrorMessage = "La cantidad de entrada debe ser un número positivo o cero.")] public int CantEntrada { get; set; } [StringLength(150)] public string? Observacion { get; set; } // Observación por línea // Validar que CantEntrada no sea mayor que CantSalida [CustomValidation(typeof(EntradaSalidaCanillaItemDto), nameof(ValidateCantidades))] public string? CantidadesError { get; set; } public static ValidationResult? ValidateCantidades(EntradaSalidaCanillaItemDto item, ValidationContext context) { if (item.CantEntrada > item.CantSalida) { return new ValidationResult("La cantidad de entrada (devolución) no puede ser mayor a la cantidad de salida (retiro) para esta publicación.", new[] { nameof(CantEntrada) }); } return ValidationResult.Success; } } }