Пример #1
0
        /// <summary>
        /// Create custom validator.
        /// </summary>
        /// <param name="builder">Extension type.</param>
        /// <returns>Record validator.</returns>
        public static IRecordValidator CreateCustom(this ValidatorBuilder builder)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            IConfiguration config = new ConfigurationBuilder().AddJsonFile("validation-rules.json").Build();

            char     minChar            = char.Parse(config["custom:access:min"]);
            char     maxChar            = char.Parse(config["custom:access:max"]);
            int      minLengthFirstName = int.Parse(config["custom:firstName:min"], CultureInfo.InvariantCulture);
            int      maxLengthFirstName = int.Parse(config["custom:firstName:max"], CultureInfo.InvariantCulture);
            int      minLengthLastName  = int.Parse(config["custom:lastName:min"], CultureInfo.InvariantCulture);
            int      maxLengthLastName  = int.Parse(config["custom:lastName:max"], CultureInfo.InvariantCulture);
            decimal  maxSalary          = decimal.Parse(config["custom:salary:max"], CultureInfo.InvariantCulture);
            decimal  minSalary          = decimal.Parse(config["custom:salary:min"], CultureInfo.InvariantCulture);
            DateTime minDate            = DateTime.Parse(config["custom:dateOfBirth:from"], CultureInfo.InvariantCulture);
            DateTime maxDate            = DateTime.Parse(config["custom:dateOfBirth:to"], CultureInfo.InvariantCulture);

            return(builder.ValidateFirstName(minLengthFirstName, maxLengthFirstName)
                   .ValidateLastName(minLengthLastName, maxLengthLastName)
                   .ValidateDateOfBirth(minDate, maxDate)
                   .ValidateAccess(minChar, maxChar)
                   .ValidateSalary(minSalary, maxSalary)
                   .Create());
        }
Пример #2
0
        private static (IRecordValidator, ValidatorParameters) CreateValidator(ValidatorBuilder validatorBuilder, string name, string validationRulesFile)
        {
            if (validatorBuilder is null)
            {
                throw new ArgumentNullException(nameof(validatorBuilder), $"{nameof(validatorBuilder)} is null");
            }

            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile(validationRulesFile);
            var config = builder.Build();

            var validationRules = config.GetSection(name).Get <ValidatorParameters>();

            IRecordValidator recordValidator = validatorBuilder
                                               .ValidateFirstName(validationRules.FirstName.Min, validationRules.FirstName.Max)
                                               .ValidateLastName(validationRules.LastName.Min, validationRules.LastName.Max)
                                               .ValidateGender()
                                               .ValidateDateOfBirth(validationRules.DateOfBirth.From, validationRules.DateOfBirth.To)
                                               .ValidateCreditSum(validationRules.CreditSum.Min, validationRules.CreditSum.Max)
                                               .ValidateDuration(validationRules.Duration.From, validationRules.Duration.To)
                                               .Create();

            return(recordValidator, validationRules);
        }
Пример #3
0
        /// <summary>
        /// Creates composite validator based on configuration.
        /// </summary>
        /// <param name="validatorBuilder">Builder to create composite validator.</param>
        /// <param name="configuration">Configuration to create validator.</param>
        /// <returns>Composite validator.</returns>
        /// <exception cref="ArgumentNullException">Thrown when validator builder or configuration is null.</exception>
        public static CompositeValidator CreateValidator(this ValidatorBuilder validatorBuilder, IConfiguration configuration)
        {
            if (validatorBuilder is null)
            {
                throw new ArgumentNullException(nameof(validatorBuilder), Configurator.GetConstantString("NullValidatorBuilder"));
            }

            if (configuration is null)
            {
                throw new ArgumentNullException(nameof(configuration), Configurator.GetConstantString("NullConfiguration"));
            }

            try
            {
                var firstName        = configuration.GetSection("firstName");
                var lastName         = configuration.GetSection("lastName");
                var date             = configuration.GetSection("dateOfBirth");
                var patronymicLetter = configuration.GetSection("patronymicLetter");
                var income           = configuration.GetSection("income");
                var height           = configuration.GetSection("height");
                var result           = validatorBuilder.ValidateFirstName(Convert.ToInt32(firstName.GetSection("minLength").Value, CultureInfo.InvariantCulture), Convert.ToInt32(firstName.GetSection("maxLength").Value, CultureInfo.InvariantCulture))
                                       .ValidateLastName(Convert.ToInt32(lastName.GetSection("minLength").Value, CultureInfo.InvariantCulture), Convert.ToInt32(lastName.GetSection("maxLength").Value, CultureInfo.InvariantCulture))
                                       .ValidateDateOfBirth(DateTime.ParseExact(date.GetSection("from").Value, Configurator.GetConstantString("DateFormatDM"), CultureInfo.InvariantCulture), DateTime.ParseExact(date.GetSection("to").Value, Configurator.GetConstantString("DateFormatDM"), CultureInfo.InvariantCulture))
                                       .ValidatePatronymic(Convert.ToChar(patronymicLetter.GetSection("from").Value, CultureInfo.InvariantCulture), Convert.ToChar(patronymicLetter.GetSection("to").Value, CultureInfo.InvariantCulture))
                                       .ValidateIncome(Convert.ToDecimal(income.GetSection("from").Value, CultureInfo.InvariantCulture), Convert.ToDecimal(income.GetSection("to").Value, CultureInfo.InvariantCulture))
                                       .ValidateHeight(Convert.ToInt16(height.GetSection("min").Value, CultureInfo.InvariantCulture), Convert.ToInt16(height.GetSection("max").Value, CultureInfo.InvariantCulture))
                                       .Create();

                return(result);
            }
            catch (ArgumentNullException)
            {
                Console.WriteLine(Configurator.GetConstantString("InvalidValidationFile"));
                Console.WriteLine(Configurator.GetConstantString("ClosingProgram"));
                Environment.Exit(-1);
            }
            catch (FormatException)
            {
                Console.WriteLine(Configurator.GetConstantString("InvalidValidationFile"));
                Console.WriteLine(Configurator.GetConstantString("ClosingProgram"));
                Environment.Exit(-1);
            }
            catch (OverflowException)
            {
                Console.WriteLine(Configurator.GetConstantString("ValidationOutOfRange"));
                Console.WriteLine(Configurator.GetConstantString("ClosingProgram"));
                Environment.Exit(-1);
            }

            return(null);
        }
Пример #4
0
        /// <summary>
        /// Create Record Validator.
        /// </summary>
        /// <param name="builder">The VaildatorBuilder.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <returns>The record validator.</returns>
        public static IRecordValidator Create(this ValidatorBuilder builder, string validationRule = "default")
        {
            if (builder is null)
            {
                throw new ArgumentNullException($"{nameof(builder)} canot be null.");
            }

            var setters            = new ConfigurationSetter(validationRule);
            var validateParameters = setters.GetParameters();

            return(builder.
                   ValidateFirstName(validateParameters.FirstNameMinLength, validateParameters.FirstNameMaxLenght).
                   ValidateLastName(validateParameters.LastNameMinLength, validateParameters.LastNameMaxLength).
                   ValidateDateOfBirth(validateParameters.DateOfBirthFrom, validateParameters.DateOfBirthTo).
                   ValidateExperience(validateParameters.ExperienceMinValue, validateParameters.ExperienceMaxValue).
                   ValidateAccount(validateParameters.AccountMinValue).
                   ValidateGender(validateParameters.Gender).
                   Create());
        }