public ClientCreateCommandValidator(IGenericReadRepository readRepository, IClientFiltersProvider clientFiltersProvider) : base(readRepository)
        {
            _clientFiltersProvider = clientFiltersProvider;

            RuleFor(x => x.FirstName)
            .NotEmptyWithMessage()
            .MaxLengthWithMessage(ClientConstraints.FirstNameMaxLength);

            RuleFor(x => x.LastName)
            .NotEmptyWithMessage()
            .MaxLengthWithMessage(ClientConstraints.LastNameMaxLength);

            When(x => x.Email != null, () =>
            {
                RuleFor(x => x.Email)
                .MaxLengthWithMessage(ClientConstraints.EmailMaxLength)
                .IsValidEmailWithMessage();
            });

            RuleFor(x => x.PassportId)
            .NotEmptyWithMessage()
            .MinLengthWithMessage(ClientConstraints.PassportIdMinLength)
            .MaxLengthWithMessage(ClientConstraints.PassportIdMaxLength)
            .MustNotExistWithMessageAsync(PassportIdDoesNotExist);

            RuleFor(x => x.Phone)
            .NotEmptyWithMessage()
            .MaxLengthWithMessage(ClientConstraints.PhoneMaxLength)
            .IsValidPhoneNumberWithMessage();

            RuleFor(x => x.Address)
            .NotEmptyWithMessage()
            .MaxLengthWithMessage(ClientConstraints.AddressMaxLength);
        }
        public OrderWithDeliveryRequestCreateCommandValidator(IGenericReadRepository readRepository, ICarStockFiltersProvider carStockFiltersProvider, IUserFiltersProvider userFiltersProvider, IClientFiltersProvider clientFiltersProvider) : base(readRepository)
        {
            _carStockFiltersProvider = carStockFiltersProvider;
            _userFiltersProvider     = userFiltersProvider;
            _clientFiltersProvider   = clientFiltersProvider;

            RuleFor(x => x.CarId)
            .NotEmptyWithMessage()
            .MustExistsWithMessageAsync(CarExists);

            RuleFor(x => x.ManagerId)
            .NotEmptyWithMessage()
            .MustExistsWithMessageAsync(ManagerIsValid);

            RuleFor(x => x.ClientId)
            .NotEmptyWithMessage()
            .MustExistsWithMessageAsync(ClientIsValid);
        }
 public ClientQueryFunctionality(IUnitOfWork unitOfWork, IMapperFactory mapperFactory, IGenericReadRepository readRepository, IBaseFiltersProvider <Client> filtersProvider, IClientFiltersProvider clientFiltersProvider) : base(unitOfWork, mapperFactory, readRepository, filtersProvider)
 {
     _clientFiltersProvider = clientFiltersProvider;
 }