Esempio n. 1
0
        public async Task <PhoneEntry> CreatePhoneEntryAsync(string name, string phoneNumber, int phoneBookId)
        {
            Guard.ThrowIfDefaultOrEmpty(name, "Name");
            Guard.ThrowIfLessThanMinLength(name, "Name", 5);
            Guard.ThrowIfGreaterThanMaxLength(name, "Name", 50);
            Guard.ThrowIfDefaultOrEmpty(phoneNumber, "Phone Number");
            Guard.ThrowIfDefaultValue(phoneBookId, "Phone Book");
            Guard.ThrowIfRegexNotMatch(phoneNumber, "Phone Number", Constants.Constant10DigitPhoneFormat);

            var phoneBook = await _phoneBookService.GetPhoneBookAsync(phoneBookId);

            if (phoneBook == null)
            {
                throw new NotFoundException("Phone book not found");
            }

            var phoneEntry = await GetPhoneEntryByNumberAsync(phoneNumber);

            if (phoneEntry == null)
            {
                phoneEntry = new PhoneEntry
                {
                    Name         = name,
                    PhoneNumber  = phoneNumber.RemoveNonNumericChars(),
                    DateCreated  = _clock.Now,
                    DateModified = _clock.Now,
                };
                await _repository.AddAsync(phoneEntry);
            }
            else
            {
                phoneEntry.Name = name;
            }

            if (phoneEntry.BookEntries.All(p => p.PhoneBookId != phoneBookId))
            {
                phoneEntry.BookEntries.Add(new PhoneBookEntry
                {
                    PhoneBook   = phoneBook,
                    DateCreated = _clock.Now
                });
            }

            await _repository.SaveChangesAsync();

            return(phoneEntry);
        }
Esempio n. 2
0
        public async Task <IActionResult> Get(int id)
        {
            try
            {
                var phoneBook = await _phoneBookService.GetPhoneBookAsync(id);

                if (phoneBook == null)
                {
                    return(new NotFoundResult());
                }
                return(new OkObjectResult(_mapper.Map <ApiPhoneBook>(phoneBook)));
            }
            catch (ValidateException ex)
            {
                return(new BadRequestObjectResult(ex.Message));
            }
        }
Esempio n. 3
0
        public async Task <ActionResult <PhoneBookModels.PhoneBook> > GetAsync(string Name)
        {
            var pb = await PhonebookS.GetPhoneBookAsync(Name);

            if (pb != null)
            {
                return(pb);
            }
            else
            {
                (PhoneBookModels.PhoneBook phoneBook, List <ValidationError> errors) = await PhonebookS.CreatePhoneBookAsync(Name);

                if (errors.Count == 0)
                {
                    return(phoneBook);
                }
                else
                {
                    return(BadRequest(errors));
                }
            }
        }