38 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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;
 | |
|         }
 | |
|     }
 | |
| } |