| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  | using System.ComponentModel.DataAnnotations; | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  | namespace GestionIntegral.Api.Dtos.Distribucion | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |     // Aplicar el CustomValidation a nivel de clase | 
					
						
							|  |  |  |     [CustomValidation(typeof(UpdateEntradaSalidaCanillaDto), nameof(ValidateCantidades))] | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |     public class UpdateEntradaSalidaCanillaDto | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         [Required, Range(0, int.MaxValue)] | 
					
						
							|  |  |  |         public int CantSalida { get; set; } | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |         [Required, Range(0, int.MaxValue)] | 
					
						
							|  |  |  |         public int CantEntrada { get; set; } | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |         [StringLength(150)] | 
					
						
							|  |  |  |         public string? Observacion { get; set; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |         // El método de validación ahora recibe la instancia completa del DTO | 
					
						
							|  |  |  |         public static ValidationResult? ValidateCantidades(UpdateEntradaSalidaCanillaDto instanceToValidate, ValidationContext context) | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |             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) | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-06-03 13:45:20 -03:00
										 |  |  |                 // 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 | 
					
						
							|  |  |  |                 ); | 
					
						
							| 
									
										
										
										
											2025-05-23 15:47:39 -03:00
										 |  |  |             } | 
					
						
							|  |  |  |             return ValidationResult.Success; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |