using FluentValidation;
using Microsoft.IdentityModel.Tokens;

namespace Netina.Repository.Handlers.Newsletters.Validators;

public class CreateNewsletterMemberCommandValidator : AbstractValidator<CreateNewsletterMemberCommand>
{
    public CreateNewsletterMemberCommandValidator()
    {
        RuleFor(command => command)
            .Must(command =>
            {
                if (command.PhoneNumber.IsNullOrEmpty() && command.Email.IsNullOrEmpty())
                    return false;
                return true;
            })
            .WithMessage("شماره تلفن یا ایمیل را باید وارد کنید");

        RuleFor(c=>c.PhoneNumber)
            .Must(phoneNumber =>
            {
                if(phoneNumber.IsNullOrEmpty()) return true;

                return PhoneNumberExtensions.CheckPhoneNumber(phoneNumber);
            })
            .WithMessage("شماره تلفن ارسالی اشتباه است");
    }
}