示例#1
0
        private async Task <List <Widget> > GetAllSprints(List <Widget> widgets)
        {
            var lists = await clickUpService.GetLists("2339092", "sprint"); // will get all the lists with the name sprint in it like for example: sprint 1, sprint 2, etc...

            foreach (var item in lists)
            {
                var tasks = await clickUpService.GetTasks(item.Key, true);

                var sprintTasks = new List <TasksPerSprint>();

                var closedTickets = tasks.Where(t => t.status.type == "closed");
                if (closedTickets != null)
                {
                    var tasksByUser = closedTickets.GroupBy(t => t.assignees.FirstOrDefault() != null ? t.assignees.FirstOrDefault().username : null);
                    foreach (var userTask in tasksByUser)
                    {
                        var sprintTask = new TasksPerSprint();
                        sprintTask.Username = userTask.Key;
                        sprintTask.Count    = userTask.Count();

                        int totalTickets = 0;
                        int totalBugs    = 0;
                        foreach (var task in userTask)
                        {
                            bool isBug = false;
                            if (task.tags != null && task.tags.Any())
                            {
                                var bug = task.tags.Where(t => t.name.ToLower() == "bug").FirstOrDefault();
                                if (bug != null)
                                {
                                    isBug = true;
                                }
                            }

                            var scrumPoint = task.custom_fields.Where(c => c.name == "Scrum Points").FirstOrDefault();
                            if (scrumPoint != null)
                            {
                                var option = scrumPoint.type_config.options.Where(t => t.orderindex == Convert.ToInt32(scrumPoint.value)).FirstOrDefault();
                                if (option != null)
                                {
                                    if (!String.IsNullOrWhiteSpace(option.name))
                                    {
                                        if (!isBug)
                                        {
                                            sprintTask.SprintPoints += Convert.ToInt32(option.name);
                                            totalTickets++;
                                        }
                                        else
                                        {
                                            sprintTask.BugPoints += Convert.ToInt32(option.name);
                                            totalBugs++;
                                        }
                                    }
                                }
                            }
                        }

                        sprintTask.Tickets = totalTickets;
                        sprintTask.Bugs    = totalBugs;

                        sprintTasks.Add(sprintTask);
                    }

                    if (sprintTasks != null && !String.IsNullOrWhiteSpace(item.Value))
                    {
                        var count        = sprintTasks.Sum(t => t.Count);
                        var sprintPoints = sprintTasks.Sum(t => t.SprintPoints);

                        if (count == 0 && sprintPoints == 0)
                        {
                            continue;
                        }

                        sprintTasks.Add(new Models.TasksPerSprint()
                        {
                            Username     = "******",
                            Count        = count,
                            SprintPoints = sprintPoints
                        });

                        widgets.Add(new Widget(item.Value)
                        {
                            Content = new TableContent()
                            {
                                Content = sprintTasks
                            },
                            Column = 6
                        });
                    }
                }
            }

            return(widgets);
        }