using System.ComponentModel.DataAnnotations; namespace GestionIntegral.Api.Dtos.Distribucion { // Aplicar el CustomValidation a nivel de clase [CustomValidation(typeof(UpdateEntradaSalidaCanillaDto), nameof(ValidateCantidades))] public class UpdateEntradaSalidaCanillaDto { [Required, Range(0, int.MaxValue)] public int CantSalida { get; set; } [Required, Range(0, int.MaxValue)] public int CantEntrada { get; set; } [StringLength(150)] public string? Observacion { get; set; } // El método de validación ahora recibe la instancia completa del DTO public static ValidationResult? ValidateCantidades(UpdateEntradaSalidaCanillaDto instanceToValidate, ValidationContext context) { if (instanceToValidate == null) { // No debería ocurrir si el model binding funcionó, pero es una buena práctica. return ValidationResult.Success; } if (instanceToValidate.CantEntrada > instanceToValidate.CantSalida) { // Asociar el error a las propiedades relevantes si es posible y útil return new ValidationResult( "La cantidad de entrada no puede ser mayor a la de salida.", new[] { nameof(CantEntrada), nameof(CantSalida) } // Opcional: nombres de miembros ); } return ValidationResult.Success; } } }