Esempio n. 1
0
        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)));
 }
Esempio n. 3
0
        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
                });
            }
        }