/// <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); }
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); }
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); }
/// <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); }
/// <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(); }