using System;
using System.ComponentModel.DataAnnotations;
namespace GestionIntegral.Api.Dtos.Distribucion
{
    public class CreateEntradaSalidaCanillaDto
    {
        [Required]
        public int IdPublicacion { get; set; }
        [Required]
        public int IdCanilla { get; set; }
        [Required]
        public DateTime Fecha { get; set; } // Fecha del movimiento (retiro/devolución)
        [Required, Range(0, int.MaxValue)] // Puede retirar 0 si es solo para registrar devolución
        public int CantSalida { get; set; }
        [Required, Range(0, int.MaxValue)]
        public int CantEntrada { get; set; }
        [StringLength(150)]
        public string? Observacion { get; set; }
        // Liquidado, FechaLiquidado, UserLiq se manejan por una acción de "Liquidar" separada.
        // IdPrecio, IdRecargo, IdPorcMon se determinan en el backend.

        [CustomValidation(typeof(CreateEntradaSalidaCanillaDto), nameof(ValidateCantidades))]
        public string? CantidadesError { get; set; } // Dummy para validación

        public static ValidationResult? ValidateCantidades(CreateEntradaSalidaCanillaDto dto, ValidationContext context)
        {
            if (dto.CantEntrada > dto.CantSalida)
            {
                return new ValidationResult("La cantidad de entrada (devolución) no puede ser mayor a la cantidad de salida (retiro).");
            }
            return ValidationResult.Success;
        }
    }
}