namespace CMSMicroservice.Application.InventoryItemCQ.Commands.CreateInventoryItem;

public class CreateInventoryItemCommandValidator : AbstractValidator<CreateInventoryItemCommand>
{
    public CreateInventoryItemCommandValidator()
    {
        RuleFor(x => x.WarehouseId)
            .GreaterThan(0).WithMessage("شناسه انبار معتبر نیست");

        RuleFor(x => x.Quantity)
            .GreaterThanOrEqualTo(0).WithMessage("تعداد موجودی نمی‌تواند منفی باشد");

        RuleFor(x => x.MinQuantity)
            .GreaterThanOrEqualTo(0).WithMessage("حداقل موجودی نمی‌تواند منفی باشد");

        RuleFor(x => x.MaxQuantity)
            .GreaterThanOrEqualTo(0).WithMessage("حداکثر موجودی نمی‌تواند منفی باشد");

        RuleFor(x => x)
            .Must(x => x.ProductId.HasValue || x.DiscountProductId.HasValue)
            .WithMessage("حداقل یکی از شناسه محصول یا شناسه محصول تخفیفی باید مشخص شود");

        RuleFor(x => x)
            .Must(x => !(x.ProductId.HasValue && x.DiscountProductId.HasValue))
            .WithMessage("فقط یکی از شناسه محصول یا شناسه محصول تخفیفی باید مشخص شود");
    }
}
