public HttpResponseMessage Register(HttpRequestMessage request, CustomerViewModel customer) { return CreateHttpResponse(request, () => { HttpResponseMessage response = null; if (!ModelState.IsValid) { response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); } else { if (_customersRepository.UserExists(customer.Email, customer.IdentityCard)) { ModelState.AddModelError("Invalid user", "Email or Identity Card number already exists"); response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); } else { Customer newCustomer = new Customer(); newCustomer.UpdateCustomer(customer); _customersRepository.Add(newCustomer); _unitOfWork.Commit(); // Update view model customer = Mapper.Map<Customer, CustomerViewModel>(newCustomer); response = request.CreateResponse<CustomerViewModel>(HttpStatusCode.Created, customer); } } return response; }); }
public HttpResponseMessage Register(HttpRequestMessage request, CustomerViewModel customerVM) { return CreateHttpResponse(request, () => { HttpResponseMessage response = null; if (!ModelState.IsValid) { response = request.CreateResponse(HttpStatusCode.BadGateway, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); } else { if (_customersRepository.FindBy(c => c.Email == customerVM.Email && c.IdentityCard == customerVM.IdentityCard).FirstOrDefault() != null) { ModelState.AddModelError("Invalid user", "Email or Identity Card number already exists"); response = request.CreateResponse(HttpStatusCode.BadGateway, ModelState.Keys.SelectMany(k => ModelState[k].Errors) .Select(m => m.ErrorMessage).ToArray()); } else { var customer = new Customer(); customer.UpdateCustomer(customerVM); _customersRepository.Add(customer); _unitOfWork.Commit(); customerVM = Mapper.Map<Customer, CustomerViewModel>(customer); response = request.CreateResponse(HttpStatusCode.Created, customerVM); } } return response; }); }