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