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