public IActionResult Post([FromBody] UserViewModel newUser) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // create user in repo try { var theNewUser = Mapper.Map <HighFiveUser>(newUser); var organization = _repository.GetOrganizationByName(newUser.OrganizationName); if (organization == null) { return(NotFound(new { Message = $"Unable to find organization {newUser.OrganizationName}" })); } theNewUser.Organization = organization; _repository.AddUser(theNewUser); _repository.SaveChangesAsync(); } catch (HighFiveException ex) { _logger.LogError("Failed to add new user: {0}", ex); return(BadRequest(new { Message = $"Failed to add new user {newUser.Email}" })); } return(Created($"api/users/{newUser.Email}", newUser)); }
public async Task <IActionResult> Post([FromBody] RecognitionViewModel recognition) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (string.IsNullOrEmpty(recognition.SenderEmail)) { return(BadRequest(new { Message = "Missing Sender Information" })); } if (string.IsNullOrEmpty(recognition.OrganizationName)) { return(BadRequest(new { Message = "Missing Organization Information" })); } if (string.IsNullOrEmpty(recognition.CorporateValueName)) { return(BadRequest(new { Message = "Missing Corporate Value Information" })); } try { var newRecognition = Mapper.Map <Recognition>(recognition); newRecognition.Organization = _repository.GetOrganizationByName(recognition.OrganizationName); if (!String.IsNullOrEmpty(recognition.NewUserEmail)) { // we need to make a new user var newUser = _repository.GetUserByEmail(recognition.NewUserEmail); if (newUser == null) { var theNewUser = new HighFiveUser() { Email = recognition.NewUserEmail, FirstName = HighFiveUser.FirstNameFromName(recognition.NewUserName), LastName = HighFiveUser.LastNameFromName(recognition.NewUserName), Organization = newRecognition.Organization }; _repository.AddUser(theNewUser); await _repository.SaveChangesAsync(); } newRecognition.Receiver = _repository.GetUserByEmail(recognition.NewUserEmail); } else { newRecognition.Receiver = _repository.GetUserByEmail(recognition.ReceiverEmail); } newRecognition.Sender = _repository.GetUserByEmail(recognition.SenderEmail); newRecognition.Value = _repository.GetCorporateValueByName(recognition.CorporateValueName); if (newRecognition.Value == null) { return(BadRequest(new { Message = "Missing Corporate Value Information" })); } newRecognition.DateCreated = DateTime.UtcNow; _repository.AddRecognition(newRecognition); if (await _repository.SaveChangesAsync()) { return(Created($"api/recognitions/{newRecognition.Id}", Mapper.Map <RecognitionViewModel>(newRecognition))); } } catch (HighFiveException ex) { _logger.LogError("Failed to add new recognition: {0}", ex); return(BadRequest(new { ex.Message })); } catch (Exception ex) { _logger.LogError("Failed to add new recognition: {0}", ex); } return(BadRequest(new { Message = $"Failed to add new recognition {recognition.Id}" })); }