public UpdateUserValidator(IEmailAlreadyExistsCount emailAlreadyExistsCount, IIdExists idExists)
        {
            _emailAlreadyExistsCount = emailAlreadyExistsCount;
            _idExists = idExists;

            RuleFor(u => u.Id)
            .NotEmpty()
            .MustAsync(IdAlreadyExists)
            .WithMessage(ValidationMessages.GetItDoesntExists(nameof(UpdateUserRequest.Id)));

            RuleFor(u => u.Email)
            .NotEmpty()
            .WithMessage(ValidationMessages.GetRequired(nameof(UpdateUserRequest.Email)))
            .MaximumLength(User.EmailMaxLength)
            .WithMessage(ValidationMessages.GetTooLong(nameof(UpdateUserRequest.Email)))
            .MustAsync(ValidEmail)
            .WithMessage(ValidationMessages.GetValidRequired(nameof(UpdateUserRequest.Email)))
            .MustAsync(EmailNotAlreadyExists)
            .WithMessage(ValidationMessages.GetItsInUse(nameof(UpdateUserRequest.Email)));

            RuleFor(u => u.Name)
            .NotEmpty()
            .WithMessage(ValidationMessages.GetRequired(nameof(UpdateUserRequest.Name)))
            .MinimumLength(User.NameMinLength)
            .WithMessage(ValidationMessages.GetTooShort(nameof(UpdateUserRequest.Name)))
            .MaximumLength(User.NameMaxLength)
            .WithMessage(ValidationMessages.GetTooLong(nameof(UpdateUserRequest.Name)));

            RuleFor(u => u.Birthdate)
            .Must(BeAValidDate)
            .WithMessage(ValidationMessages.GetOutOfRange(nameof(UpdateUserRequest.Birthdate)));

            RuleFor(u => u.GenderId)
            .NotEmpty();
        }
        public DeleteUserByIdValidator(IIdExists idExists)
        {
            _idExists = idExists;

            RuleFor(u => u.Id)
            .NotEmpty()
            .MustAsync(IdAlreadyExists)
            .WithMessage(ValidationMessages.GetItDoesntExists(nameof(DeleteUserByIdRequest.Id)));
        }