public async Task <IHttpActionResult> PostUser(UserRegistrationRequestModel oUserRequestModel) { string sIPAddress = Request.GetOwinContext().Request.RemoteIpAddress; try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } bool blnIsEmailValid = ValidateEmailExists(oUserRequestModel.email_address); if (!blnIsEmailValid) { return(BadRequest("E-mail address already exists")); } if (!oUserRequestModel.password.Equals(oUserRequestModel.password_confirm)) { return(BadRequest("Passwords Do not Match")); } if (!oUserRequestModel.password.Any(p => char.IsUpper(p)) && !oUserRequestModel.password_confirm.Any(cp => char.IsUpper(cp))) { return(BadRequest("Passwords Don't Contain An Uppercase Letter")); } User user = oUserRegistration.CheckUserRegistration(oUserRequestModel); try { await oUserRepo.SaveUser(user); Auth0TokenReturnModel Auth0User = JsonConvert.DeserializeObject <Auth0TokenReturnModel>(oAuth0Users.CreateAuth0User(oUserRequestModel.email_address, oUserRequestModel.password)); user.EmailConfirmed = Auth0User.email_verified; user.Auth0Identifier = Auth0User.user_id; user.CreationDate = Convert.ToDateTime(Auth0User.created_at); await oUserRepo.UpdateUserAfterRegistration(user); } catch (DbUpdateException) { if (UserExists(user.Id)) { return(Conflict()); } else { return(InternalServerError()); } } return(CreatedAtRoute("DefaultApi", new { stripeCustId = user.StripeIdentifier }, user)); } catch (Exception ex) { oLogger.LogData("ROUTE: api/Users; METHOD: POST; IP_ADDRESS: " + sIPAddress + "; EXCEPTION: " + ex.Message + "; INNER EXCEPTION: " + ex.InnerException); return(InternalServerError()); } }