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