public IActionResult Put(long id, [FromBody] Progress item) { try { var progressItem = _progressRepository.Find(id); if (progressItem == null) { return(NotFound(ErrorCode.ItemNotFound.ToString())); } if (item == null || !ModelState.IsValid || item.Assignment != null || item.Assignment != null || item.ProgressId != progressItem.ProgressId || item.AssignmentId != progressItem.AssignmentId) { return(BadRequest(ErrorCode.DataProvidedIsInvalid.ToString())); } var assignmentItem = _assignmentRepository.Find(item.AssignmentId); if (assignmentItem == null) { return(BadRequest(ErrorCode.DataProvidedIsInvalid.ToString())); } var userItem = _userRepository.Find(assignmentItem.UserId); if (userItem == null || userItem.Email != User.FindFirstValue(ClaimTypes.Email)) { return(BadRequest(ErrorCode.DataProvidedIsInvalid.ToString())); } _progressRepository.Update(item); } catch (Exception) { return(BadRequest(ErrorCode.CouldNotUpdateItem.ToString())); } return(NoContent()); }