public async Task <UserTask> AddTime(int taskId, int minutes) { var client = _userTaskRepository.GetClient(); var task = await _userTaskRepository.GetById(taskId); task.MinutesSpended += minutes; var story = _storyRepository.GetById(task.StoryId); story.MinutesSpended += minutes; var sprint = _sprintRepository.GetById(story.SprintId); sprint.MinutesSpended += minutes; var project = await _projectRepository.GetById(story.ProjectId); project.MinutesSpended += minutes; using (var session = await client.StartSessionAsync()) { // Begin transaction session.StartTransaction(); try { var result = await _userTaskRepository.Update(task); _storyRepository.Update(story); _sprintRepository.Update(sprint); await _projectRepository.Update(project); return(result); } catch (Exception) { _logger.Error("Error updating time spend!"); session.AbortTransaction(); } } return(null); }