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));
        }
Example #2
0
        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}" }));
        }