using FluentValidation;

namespace CMSMicroservice.Application.OrderManagementCQ.Commands.UpdateOrderStatus;

public class UpdateOrderStatusCommandValidator : AbstractValidator<UpdateOrderStatusCommand>
{
    public UpdateOrderStatusCommandValidator()
    {
        RuleFor(x => x.OrderId)
            .GreaterThan(0).WithMessage("شناسه سفارش نامعتبر است");

        RuleFor(x => x.NewStatus)
            .IsInEnum().WithMessage("وضعیت ارسال نامعتبر است");

        RuleFor(x => x.TrackingCode)
            .MaximumLength(50).WithMessage("کد رهگیری نمی‌تواند بیشتر از 50 کاراکتر باشد")
            .When(x => !string.IsNullOrEmpty(x.TrackingCode));

        RuleFor(x => x.Description)
            .MaximumLength(500).WithMessage("توضیحات نمی‌تواند بیشتر از 500 کاراکتر باشد")
            .When(x => !string.IsNullOrEmpty(x.Description));
    }
}
