Exemplo n.º 1
0
        /// <summary>
        /// Метод создания базовых реквизитов
        /// </summary>
        /// <param name="lastName">фамилия</param>
        /// <param name="firstName">имя</param>
        /// <param name="middleName">отчество</param>
        /// <param name="series">серия</param>
        /// <param name="number">номер</param>
        /// <param name="address">адрес</param>
        /// <param name="phoneNumber">номер телефона</param>
        /// <param name="email">эмейл</param>
        /// <returns>паспортные данные, контактные данные</returns>
        private static (Passport passport, Contact contact) CreateBaseRequisites(string lastName, string firstName, string middleName,
                                                                                 string series, string number,
                                                                                 string address,
                                                                                 string phoneNumber, string email)
        {
            //Паспортные данные
            var fullName        = FullNameFactory.CreateFullName(lastName, firstName, middleName);
            var seriesAndNumber = SeriesAndNumberFactory.CreateSeriesAndNumber(series, number);
            var passport        = PassportFactory.CreatePassport(fullName, seriesAndNumber, address);

            //Контактные данные
            var phone   = PhoneNumberFactory.CreateNumber(phoneNumber);
            var contact = ContactFactory.CreateContact(phone, email);

            return(passport, contact);
        }
Exemplo n.º 2
0
        private static void Main(string[] args)
        {
            IEnumerable <IEnumerable <KeyValuePair <string, string> > > passportsAsKeyValuePairs = Parser.Parse(@"./input.txt");

            PassportValidation simplePassportValidation = new PassportValidation();
            PassportFactory    passportFactoryPart1     = new PassportFactory(simplePassportValidation);
            IList <Passport>   passportsPart1           = GetPassports(passportsAsKeyValuePairs, passportFactoryPart1);

            Console.WriteLine($"Able to parse {passportsPart1.Count} passports without validation.");

            PassportValidation advancedPassportValidation = new AdvancedPassportValidation();
            PassportFactory    passportFactoryPart2       = new PassportFactory(advancedPassportValidation);
            IList <Passport>   passportsPart2             = GetPassports(passportsAsKeyValuePairs, passportFactoryPart2);

            Console.WriteLine($"Able to parse {passportsPart2.Count} passports with validation.");
        }
        public void FillPassportData()
        {
            var input  = "ecl:gry pid:860033327 eyr:2020 hcl:#fffffd";
            var input2 = "byr:1937 iyr:2017 cid:147 hgt:183cm";

            var passport = new Passport();

            PassportFactory.FillPassportData(passport, input);
            PassportFactory.FillPassportData(passport, input2);

            Assert.Equal("gry", passport.EyeColor);
            Assert.Equal("860033327", passport.PassportId);
            Assert.Equal(2020, passport.ExpirationYear);
            Assert.Equal("#fffffd", passport.HairColor);
            Assert.Equal(1937, passport.BirthYear);
            Assert.Equal(2017, passport.IssueYear);
            Assert.Equal(147, passport.CountryId);
            Assert.Equal("183cm", passport.Height);
        }
        public void Create()
        {
            var input     = @"ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
byr:1937 iyr:2017 cid:147 hgt:183cm

iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
hcl:#cfa07d byr:1929

hcl:#ae17e1 iyr:2013
eyr:2024
ecl:brn pid:760753108 byr:1931
hgt:179cm

hcl:#cfa07d eyr:2025 pid:166559648
iyr:2011 ecl:brn hgt:59in";
            var passports = PassportFactory.Create(input);

            Assert.NotEmpty(passports);
            Assert.Equal(4, passports.Count);
        }
Exemplo n.º 5
0
        private static IList <Passport> GetPassports(
            IEnumerable <IEnumerable <KeyValuePair <string, string> > > passportsAsKeyValuePairs,
            PassportFactory passportFactory)
        {
            IList <Passport> passports = new List <Passport>();

            foreach (IEnumerable <KeyValuePair <string, string> > passportAsKeyValuePairs in passportsAsKeyValuePairs)
            {
                try
                {
                    passports.Add(passportFactory.From(passportAsKeyValuePairs));
                }
                catch (FormatException exception)
                {
                    Console.WriteLine(exception.Message);
                    // ignore exception
                }
            }

            return(passports);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Метод создания базовых реквизитов
        /// </summary>
        /// <param name="lastName">фамилия</param>
        /// <param name="firstName">имя</param>
        /// <param name="middleName">отчество</param>
        /// <param name="series">серия</param>
        /// <param name="number">номер</param>
        /// <param name="address">адрес</param>
        /// <param name="phoneNumber">номер телефона</param>
        /// <param name="email">эмейл</param>
        /// <param name="cardName">наименование карты</param>
        /// <param name="accountType">тип аккаунта</param>
        /// <returns>паспортные данные, контактные данные, аккаунт</returns>
        private static (Passport passport, Contact contact, Account account) CreateBaseRequisites(string lastName, string firstName, string middleName,
                                                                                                  string series, string number,
                                                                                                  string address,
                                                                                                  string phoneNumber, string email,
                                                                                                  string cardName, AccountType accountType)
        {
            //Паспортные данные
            var fullName        = FullNameFactory.CreateFullName(lastName, firstName, middleName);
            var seriesAndNumber = SeriesAndNumberFactory.CreateSeriesAndNumber(series, number);
            var passport        = PassportFactory.CreatePassport(fullName, seriesAndNumber, address);

            //Контактные данные
            var phone   = PhoneNumberFactory.CreateNumber(phoneNumber);
            var contact = ContactFactory.CreateContact(phone, email);

            //Данные аккаунта
            var card    = SimpleCardFactory.CreateCard(cardName, default);
            var deposit = new NullDeposit();
            var account = SimpleAccountFactory.CreateAccount(accountType, card, deposit);

            return(passport, contact, account);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Метод заполнения репозитория клиентами
        /// </summary>
        /// <param name="dbContext">контекст данных</param>
        /// <param name="quantity">кол-во клиентов</param>
        private static void FillRepository(AppDbContext dbContext, int quantity)
        {
            Parallel.For(1, quantity + 1, (i) =>
            {
                lock (locker)
                {
                    Client client = null;

                    decimal cardBalance    = random.Next(1, 10) * 10000;
                    decimal depositBalance = random.Next(1, 10) * 10000;
                    bool capitalization    = Convert.ToBoolean(random.Next(2));

                    //Паспортные данные
                    var passport = PassportFactory.CreatePassport(
                        FullNameFactory.CreateFullName(Gender.Female),
                        SeriesAndNumberFactory.CreateSeriesAndNumber(),
                        $"Адрес_{i}");

                    //Контактные данные
                    var contact = ContactFactory.CreateContact(PhoneNumberFactory.CreateNumber(), $"Client@Email_{i}.ru");

                    switch (random.Next(Enum.GetNames(typeof(ClientType)).Length))
                    {
                    case (int)ClientType.Individual:

                        //Данные аккаунта
                        var card    = IndividualsCardFactories[random.Next(IndividualsCardFactories.Length)].CreateCard(cardBalance);
                        var deposit = random.Next(2) == 0 ?
                                      new DefaultDepositFactory().CreateDeposit(depositBalance, capitalization, ClientType.Individual) :
                                      new NullDeposit();

                        var individualAccount = AccountFactories[random.Next(AccountFactories.Length)].CreateAccount(card, deposit);

                        //Создание физ. лица
                        client = IndividualFactory.CreateIndividual(passport, contact, individualAccount);
                        break;

                    case (int)ClientType.Entity:

                        //Данные аккаунта
                        card    = EntitiesCardFactories[random.Next(EntitiesCardFactories.Length)].CreateCard(cardBalance);
                        deposit = random.Next(2) == 0 ?
                                  new DefaultDepositFactory().CreateDeposit(depositBalance, capitalization, ClientType.Entity) :
                                  new NullDeposit();

                        var entityAccount = AccountFactories[random.Next(AccountFactories.Length)].CreateAccount(card, deposit);

                        //Данные компании
                        var company = CompanyFactory.CreateCompany($"Компания_{i}", $"http:\\Company.Website_{i}.ru");

                        //Создание юр.лица
                        client = EntityFactory.CreateEntity(passport, contact, entityAccount, company);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                    ProcessingCountEvent?.Invoke(Count++);
                    dbContext.Add(client);
                }
            });

            dbContext.SaveChanges();
        }