Exemplo n.º 1
0
        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);
        }