예제 #1
0
        // PUT api/projecttasks/5
        public IHttpActionResult Put(int id, [FromBody] ProjectTaskStandaloneViewModel viewModel)
        {
            try
            {
                if (viewModel == null)
                {
                    return(BadRequest(ModelState));
                }

                var projectTask = _repository.GetProjectTask(id);

                var currentUser = GetCurrentUser();
                if (projectTask.Project.UserId != currentUser.UserId)
                {
                    return(Forbidden("You can only update project tasks for the current user."));
                }

                ValidateViewModel(viewModel, _repository, currentUser);

                if (ModelState.IsValid)
                {
                    viewModel.UpdateModel(projectTask, currentUser);

                    _repository.SaveProjectTask(projectTask);

                    return(NoContent());
                }
                else
                {
                    return(Error(ModelState));
                }
            }
            catch (Exception exc)
            {
                return(InternalServerError(exc));
            }
        }