Esempio n. 1
0
        public void CreateSprint(SprintRequest request, SprintResponse response)
        {
            var    oldSprint    = request.Sprint.SprintId;
            int    sprintNumber = 1;
            string sprintName   = string.Empty;
            var    teamName     = _uow.Repository <TeamEntity>().GetOverview()
                                  .Where(t => t.TeamId == request.Sprint.TeamId)
                                  .Select(n => n.TeamName).FirstOrDefault();

            if (!string.IsNullOrEmpty(teamName))
            {
                sprintName = $"{teamName} - Sprint: {sprintNumber}";
            }

            var teamSprints = _uow.Repository <SprintEntity>().GetOverview()
                              .Where(b => b.TeamId == request.Sprint.TeamId)
                              .Select(s => s.SprintId).ToList();

            if (teamSprints != null && teamSprints.Count > 0)
            {
                sprintNumber = teamSprints.Count;
                sprintName   = $"{teamName} - Sprint: {++sprintNumber}";
            }

            var newSprint = new SprintEntity
            {
                StartDate  = DateTime.Now,
                EndDate    = DateTime.Now.AddDays(14),
                SprintName = sprintName,
                TeamId     = request.Sprint.TeamId
            };

            _uow.Repository <SprintEntity>().Add(newSprint);
            _uow.Save();

            if (oldSprint != 0)
            {
                var notCompletedTasks = _uow.Repository <XRefSprintTaskEntity>().GetOverview(s => s.SprintId == oldSprint && s.ColumnId != (int)Column.DONE).ToList();
                notCompletedTasks.ForEach(t =>
                {
                    _uow.Repository <XRefSprintTaskEntity>().Add(new XRefSprintTaskEntity
                    {
                        ColumnId = t.ColumnId,
                        OrderId  = t.OrderId,
                        SprintId = newSprint.SprintId,
                        TaskId   = t.TaskId
                    });
                });
                _uow.Save();
            }
            response.SprintId   = newSprint.SprintId;
            response.StartDate  = newSprint.StartDate;
            response.EndDate    = newSprint.EndDate;
            response.TeamId     = newSprint.TeamId;
            response.SprintName = newSprint.SprintName;
        }
Esempio n. 2
0
        public SprintResponse GetSprintsList(SprintRequest request)
        {
            var response = new SprintResponse();

            RunCode(MethodBase.GetCurrentMethod().Name, request, response, (uow) =>
            {
                _manager.GetSprintsList(request, response);
            });
            return(response);
        }
Esempio n. 3
0
        public async Task <IActionResult> DeleteAsync(int id)
        {
            SprintResponse result = await _sprintBl.DeleteAsync(id, UserId);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            return(Ok());
        }
Esempio n. 4
0
        public async Task <SprintResponse> GetCurrentSprint(SprintRequest request)
        {
            var response = new SprintResponse();

            await RunCodeAsync(MethodBase.GetCurrentMethod().Name, request, response, async (uow) =>
            {
                await _manager.GetCurrentSprint(request, response);
            });

            return(response);
        }
Esempio n. 5
0
        public async Task <IActionResult> PostAsync([FromBody] SprintDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            SprintResponse result = await _sprintBl.CreateAsync(dto, UserId);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            return(Ok());
        }
Esempio n. 6
0
        public void GetSprintsList(SprintRequest request, SprintResponse response)
        {
            var sprints = _uow.Repository <SprintEntity>().GetOverview()
                          .Where(b => b.TeamId == request.TeamId)
                          .Select(s => new ShortSprint {
                SprintName = s.SprintName, SprintId = s.SprintId
            }).ToList();

            if (sprints != null && sprints.Count > 0)
            {
                response.SprintsList = sprints;
            }
            else
            {
                response.SprintsList = new List <ShortSprint>();
                response.Errors.Add("Get Sprints", "This team cannot have any sprints yet.");
            }
        }
        public async Task LoadSprint()
        {
            var response = await mainWindow.CommandQueryDispatcher.SendAsync <SprintResponse>($"/api/project-management/projects/{ProjectData.ProjectId}/sprints/{sprintId}");

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                MessageBox.Show($"Cannot get sprint from server. Http status code {response.StatusCode}");
                return;
            }

            sprint          = response.ResponseContent;
            SprintName.Text = sprint.Name;
            Status.Text     = sprint.Status.ToString();
            From.Text       = sprint.Start.Date.ToShortDateString();
            To.Text         = sprint.End.Date.ToShortDateString();

            switch (sprint.Status)
            {
            case Contracts.Sprint.Enums.SprintStatus.Planned:
                StartSprint.IsEnabled  = true;
                FinishSprint.IsEnabled = false;
                break;

            case Contracts.Sprint.Enums.SprintStatus.InProgress:
                StartSprint.IsEnabled  = false;
                FinishSprint.IsEnabled = true;
                break;

            case Contracts.Sprint.Enums.SprintStatus.Finished:
                StartSprint.IsEnabled        = false;
                FinishSprint.IsEnabled       = false;
                UnfinishedIssues.ItemsSource = sprint.UnfinishedIssues;
                break;

            default:
                break;
            }
        }
Esempio n. 8
0
        public void SortSprintTasks(SprintRequest request, SprintResponse response)
        {
            var sprintColumn   = _uow.Repository <SprintColumnEntity>().GetOverview();
            var xRefSprintTask = _uow.Repository <XRefSprintTaskEntity>().GetOverview();
            int orderId        = 0;

            foreach (var col in request.SortedSprintTasks.SprintBoardTasks)
            {
                foreach (var t in col.Items)
                {
                    var xst = new XRefSprintTaskEntity
                    {
                        Id       = t.Id,
                        SprintId = request.SortedSprintTasks.SprintId,
                        TaskId   = (int)t.TaskId,
                        ColumnId = col.ColumnId,
                        OrderId  = orderId
                    };
                    _uow.Repository <XRefSprintTaskEntity>().Update(xst);
                    orderId++;
                }
            }
            _uow.Save();
        }
Esempio n. 9
0
        public async Task GetCurrentSprint(SprintRequest request, SprintResponse response)
        {
            await Task.Run(() =>
            {
                var sprint         = _uow.Repository <SprintEntity>().GetOverview().Where(b => b.TeamId == request.TeamId).OrderByDescending(s => s.SprintId).FirstOrDefault();
                var sprintColumn   = _uow.Repository <SprintColumnEntity>().GetOverview();
                var xRefSprintTask = _uow.Repository <XRefSprintTaskEntity>().GetOverview();
                var task           = _uow.Repository <TaskEntity>().GetOverview();
                var user           = _uow.Repository <UserEntity>().GetOverview();
                var effort         = _uow.Repository <EffortEntity>().GetOverview();
                if (sprint != null)
                {
                    response.SprintName = sprint.SprintName;
                    response.EndDate    = sprint.EndDate;
                    response.StartDate  = sprint.StartDate;

                    var tasks =
                        (from xst in xRefSprintTask
                         join sc in sprintColumn on xst.ColumnId equals sc.ColumnId
                         join t in task on xst.TaskId equals t.Id
                         join u in user on t.UserId equals u.Id into uX
                         from u in uX.DefaultIfEmpty()
                         join e in effort on t.EffortId equals e.EffortId
                         where xst.SprintId == sprint.SprintId
                         select new SprintTask
                    {
                        Id = xst.Id,
                        ColumnId = sc.ColumnId,
                        ColumnName = sc.ColumnName,
                        OrderId = xst == null ? 0 : xst.OrderId,
                        SprintId = xst == null ? 0 : xst.SprintId,
                        TaskId = t == null ? 0 : t.Id,
                        TaskName = t?.TaskName,
                        UserName = u?.UserName,
                        Effort = e.EffortName,
                        CreatedDate = xst.CreatedDate
                    }).ToList();

                    foreach (var s in sprintColumn)
                    {
                        var items = tasks.Where(t => t.ColumnId == s.ColumnId).OrderBy(i => i.OrderId).ThenBy(d => d.CreatedDate).ToList();

                        var sprintBoardTask = new SprintBoardTask
                        {
                            ColumnName = s.ColumnName,
                            ColumnId   = s.ColumnId,
                            Items      = _mapper.Map <List <SprintTaskVM> >(items)
                        };

                        response.SprintBoardTasks.Add(sprintBoardTask);
                    }

                    response.TeamId   = request.TeamId;
                    response.SprintId = sprint.SprintId;
                }
                else
                {
                    response.Message = $"There is no active sprint yet for team: {request.TeamId}";
                }
            });
        }