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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |