| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  | using System; | 
					
						
							|  |  |  | using System.ComponentModel.DataAnnotations; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace GestionIntegral.Api.Dtos.Distribucion | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |     [CustomValidation(typeof(EntradaSalidaCanillaItemDto), nameof(ValidateCantidadesItem))] // Aplicar a nivel de clase | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |     public class EntradaSalidaCanillaItemDto | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         [Required(ErrorMessage = "El ID de la publicación es obligatorio.")] | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |         [Range(1, int.MaxValue, ErrorMessage = "El ID de la publicación debe ser válido.")] // Asegurar que no sea 0 | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |         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)] | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |         public string? Observacion { get; set; } | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |         // Ya no necesitamos la propiedad CantidadesError para esta validación | 
					
						
							|  |  |  |         // public string? CantidadesError { get; set; }  | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |         public static ValidationResult? ValidateCantidadesItem(EntradaSalidaCanillaItemDto instanceToValidate, ValidationContext context) | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |             if (instanceToValidate == null) | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |                 // 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) } | 
					
						
							|  |  |  |                 ); | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |             } | 
					
						
							|  |  |  |             return ValidationResult.Success; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |