public async Task <int> SaveAsync(PhonebookRecordSaveRequest saveRequest)
        {
            var businessModel = businessModelGenerator.Generate(saveRequest);

            var id = await dao.SaveAsync(businessModel).ConfigureAwait(false);

            return(id);
        }
        public void Generate_IfFormatted_TakeDigits()
        {
            var saveRequest = new PhonebookRecordSaveRequest
            {
                PhoneNumbers = new List <string> {
                    "8 (123) 456-78-90"
                }
            };

            var actual = generator.Generate(saveRequest);

            Assert.AreEqual("81234567890", actual.PhoneNumbers.FirstOrDefault());
        }
        public void Generate_IfDigitsOnly_TakeAll()
        {
            var saveRequest = new PhonebookRecordSaveRequest
            {
                PhoneNumbers = new List <string> {
                    "123456789"
                }
            };

            var actual = generator.Generate(saveRequest);

            Assert.AreEqual("123456789", actual.PhoneNumbers.FirstOrDefault());
        }
        public void Generate_IfManyWords_AllNames()
        {
            var saveRequest = new PhonebookRecordSaveRequest
            {
                Fullname = "Кристина Мария Фаустовна Агилера"
            };

            var actual = generator.Generate(saveRequest);

            Assert.AreEqual("Кристина Мария", actual.Name);
            Assert.AreEqual("Фаустовна", actual.Patronymic);
            Assert.AreEqual("Агилера", actual.Surname);
        }
        public void Generate_IfTwoWords_NameAndSurname()
        {
            var saveRequest = new PhonebookRecordSaveRequest
            {
                Fullname = "Джеймс Бонд"
            };

            var actual = generator.Generate(saveRequest);

            Assert.AreEqual("Джеймс", actual.Name);
            Assert.AreEqual("Бонд", actual.Surname);
            Assert.IsNull(actual.Patronymic);
        }
        public void Generate_IfOneWord_OnlyName()
        {
            var saveRequest = new PhonebookRecordSaveRequest
            {
                Fullname = "Бонд"
            };

            var actual = generator.Generate(saveRequest);

            Assert.AreEqual(saveRequest.Fullname, actual.Surname);
            Assert.IsNull(actual.Name);
            Assert.IsNull(actual.Patronymic);
        }
Exemplo n.º 7
0
        public PhonebookRecord Generate(PhonebookRecordSaveRequest saveRequest)
        {
            var phoneNumbers = saveRequest.PhoneNumbers?.Select(x => ParseNumber(x)).ToList() ?? new List <string>();

            char[] charSeparators = new char[] { ',', ' ', '.' };
            var    words          = saveRequest.Fullname?.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries).ToList()
                                    ?? new List <string>();

            if (words.Count <= 1)
            {
                return(new PhonebookRecord
                {
                    Id = saveRequest.Id.GetValueOrDefault(0),
                    Surname = words.FirstOrDefault(),
                    PhoneNumbers = phoneNumbers
                });
            }

            if (words.Count == 2)
            {
                return(new PhonebookRecord
                {
                    Id = saveRequest.Id.GetValueOrDefault(0),
                    Name = words.First(),
                    Surname = words.Last(),
                    PhoneNumbers = phoneNumbers
                });
            }

            var surname = words.LastOrDefault();

            words.Remove(surname);

            var patronymic = words.LastOrDefault();

            words.Remove(patronymic);

            return(new PhonebookRecord
            {
                Id = saveRequest.Id.GetValueOrDefault(0),
                Name = string.Join(" ", words),
                Patronymic = patronymic,
                Surname = surname,
                PhoneNumbers = phoneNumbers
            });
        }