public HttpResponseMessage AddAddressBookEntry(AddAddressCommandParameters parameters) { try { Logger.Trace("AddAddressBookEntry started through Web API"); if (parameters == null) { const string nullParametersErrorMsg = "AddAddressBookEntry called with null parameters"; Logger.Info(nullParametersErrorMsg); return(Request.CreateResponse(HttpStatusCode.BadRequest, new AddAddressBookEntryResult { Error = nullParametersErrorMsg })); } if (!ModelState.IsValid) { var errors = ModelState.Values.SelectMany(v => v.Errors.Select(e => e.ErrorMessage)).ToList(); Logger.Info("AddAddressBookEntry called with invalid parameters: {0}", string.Join(", ", errors)); return(Request.CreateResponse(HttpStatusCode.BadRequest, new AddAddressBookEntryResult { ValidationErrors = errors })); } var canAddAddresses = Authorization.IsAuthorized(UserId, ActivityEnum.Add); if (!canAddAddresses) { return(Request.CreateResponse(HttpStatusCode.Forbidden)); } var result = _addressBookService.AddAddressBookEntry(parameters); switch (result.ResultType) { case AddressBookCommandResultType.Duplicate: Logger.Trace(result.Error); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Duplicate address book entry found.")); case AddressBookCommandResultType.Error: Logger.Error("AddAddressBookEntry failed with error: {0}", result.Error); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Unexpected server error")); } Logger.Trace("AddAddressBookEntry creating response"); return(Request.CreateResponse(HttpStatusCode.OK, result.NewAddressBookEntry)); } catch (Exception ex) { Logger.Error(ex, "AddAddressBookEntry failed"); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Unexpected server error")); } }
public bool HasDuplicate(AddAddressCommandParameters parameters) { return(_session.GetAddressBookEntries().Any(e => string.Equals(e.FirstName, parameters.FirstName, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.LastName, parameters.LastName, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.Street1, parameters.Street1, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.Street2, parameters.Street2, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.City, parameters.City, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.State, parameters.State, StringComparison.CurrentCultureIgnoreCase) && e.ZipCode == parameters.ZipCode && string.Equals(e.HomePhone, parameters.HomePhone, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.MobilePhone, parameters.MobilePhone, StringComparison.CurrentCultureIgnoreCase) && string.Equals(e.Email, parameters.Email, StringComparison.CurrentCultureIgnoreCase))); }
public AddAddressBookEntryResult AddAddressBookEntry(AddAddressCommandParameters parameters) { using (var uow = _unitOfWorkFactory.Invoke()) { var newEntry = AddressBookEntry.Create(parameters.FirstName, parameters.LastName, parameters.Street1, parameters.Street2, parameters.City, parameters.State, parameters.ZipCode, parameters.HomePhone, parameters.MobilePhone, parameters.Email); if (uow.AddressBookEntries.HasDuplicate(parameters)) { return new AddAddressBookEntryResult { ResultType = AddressBookCommandResultType.Duplicate, Error = "Duplicate found." } } ; uow.AddressBookEntries.Add(newEntry); uow.Commit(); var newEntryDto = new AddressBookEntryDTO { Id = newEntry.Id, FirstName = newEntry.FirstName, LastName = newEntry.LastName, Street1 = newEntry.Street1, Street2 = newEntry.Street2, City = newEntry.City, State = newEntry.State, ZipCode = newEntry.ZipCode, HomePhone = newEntry.HomePhone, MobilePhone = newEntry.MobilePhone, Email = newEntry.Email }; return(new AddAddressBookEntryResult { ResultType = AddressBookCommandResultType.Success, NewAddressBookEntry = newEntryDto }); } }