46 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.ComponentModel.DataAnnotations;
 | |
| 
 | |
| namespace GestionIntegral.Api.Dtos.Distribucion
 | |
| {
 | |
|     [CustomValidation(typeof(EntradaSalidaCanillaItemDto), nameof(ValidateCantidadesItem))] // Aplicar a nivel de clase
 | |
|     public class EntradaSalidaCanillaItemDto
 | |
|     {
 | |
|         [Required(ErrorMessage = "El ID de la publicación es obligatorio.")]
 | |
|         [Range(1, int.MaxValue, ErrorMessage = "El ID de la publicación debe ser válido.")] // Asegurar que no sea 0
 | |
|         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; }
 | |
| 
 | |
|         // Ya no necesitamos la propiedad CantidadesError para esta validación
 | |
|         // public string? CantidadesError { get; set; } 
 | |
| 
 | |
|         public static ValidationResult? ValidateCantidadesItem(EntradaSalidaCanillaItemDto instanceToValidate, ValidationContext context)
 | |
|         {
 | |
|             if (instanceToValidate == null)
 | |
|             {
 | |
|                 // Aunque el model binder debería crear la instancia, verificamos
 | |
|                 return ValidationResult.Success; // O un error si una instancia nula es inválida por sí misma
 | |
|             }
 | |
| 
 | |
|             if (instanceToValidate.CantEntrada > instanceToValidate.CantSalida)
 | |
|             {
 | |
|                 // Asociar el error a ambas propiedades podría ser útil en la UI
 | |
|                 return new ValidationResult(
 | |
|                     "La cantidad de entrada (devolución) no puede ser mayor a la cantidad de salida (retiro).", 
 | |
|                     new[] { nameof(CantEntrada), nameof(CantSalida) }
 | |
|                 );
 | |
|             }
 | |
|             return ValidationResult.Success;
 | |
|         }
 | |
|     }
 | |
| } |