Beispiel #1
0
        private void AnalyzeHighRiskForPersonByTask()
        {
            Dictionary <string, List <UTrackTask> > personToTasks    = new Dictionary <string, List <UTrackTask> >();
            Dictionary <string, List <decimal> >    personToWorkToDo = new Dictionary <string, List <decimal> >();

            foreach (var story in Stories)
            {
                foreach (var task in story.Tasks)
                {
                    string ownerEngName = NameUtil.ConvertToEngName(task.Owner);

                    if (!personToWorkToDo.ContainsKey(ownerEngName))
                    {
                        personToWorkToDo[ownerEngName] = new List <decimal>();
                        personToTasks[ownerEngName]    = new List <UTrackTask>();
                    }

                    personToWorkToDo[ownerEngName].Add(task.WorkToDo);
                    personToTasks[ownerEngName].Add(task);
                }
            }

            int availableDays = DateTimeUtil.GetWorkingDays(DateTime.Now, CurrentSprint.EndTime);

            foreach (var item in personToWorkToDo)
            {
                decimal totalWorkToDoInDays = 0;
                item.Value.ForEach(t => totalWorkToDoInDays += t);
                totalWorkToDoInDays = totalWorkToDoInDays / 8;

                if (totalWorkToDoInDays > availableDays)
                {
                    string errorDesc       = $"This member has a total of {item.Value.Count} task(s). They still need {totalWorkToDoInDays} day(s), but there are only {availableDays} day(s) left in the sprint";
                    var    owningTasks     = personToTasks[item.Key].Select(t => t.Type + " " + t.ID + " " + t.Description + " - Size:" + t.Estimate);
                    var    persionRiskItem = new PersonRiskItem()
                    {
                        Owner = item.Key, ExceedDay = totalWorkToDoInDays - availableDays, OwningStories = string.Join("\n", owningTasks), RiskDetail = errorDesc
                    };
                    if (!HighRiskPersons.Any(t => t.Owner == persionRiskItem.Owner))
                    {
                        HighRiskPersons.Add(persionRiskItem);
                    }
                }
            }
        }
Beispiel #2
0
        private void AnalyzeHighRiskForPersonByStory()
        {
            Dictionary <string, List <Story> >   personToStories  = new Dictionary <string, List <Story> >();
            Dictionary <string, List <decimal> > personToWorkToDo = new Dictionary <string, List <decimal> >();

            foreach (var story in CurrentSprint.GetUnCompletedStories())
            {
                string ownerEngName = NameUtil.ConvertToEngName(story.Owner);

                if (!personToWorkToDo.ContainsKey(ownerEngName))
                {
                    personToWorkToDo[ownerEngName] = new List <decimal>();
                    personToStories[ownerEngName]  = new List <Story>();
                }

                personToWorkToDo[ownerEngName].Add(GetTotalStoryWorkToDo(story));
                personToStories[ownerEngName].Add(story);
            }

            int availableDays = DateTimeUtil.GetWorkingDays(DateTime.Now, CurrentSprint.EndTime);

            foreach (var item in personToWorkToDo)
            {
                decimal totalWorkToDoInDays = 0;
                item.Value.ForEach(t => totalWorkToDoInDays += t);

                if (totalWorkToDoInDays > availableDays)
                {
                    string errorDesc       = $"This member has a total of {item.Value.Count} story/stories.They still need {totalWorkToDoInDays} day(s), but there are only {availableDays} day(s) left in the sprint.";
                    var    ownerStories    = personToStories[item.Key].Select(t => t.Type + " " + t.ID + " " + t.Title + "- Size:" + t.Size);
                    var    persionRiskItem = new PersonRiskItem()
                    {
                        Owner = item.Key, ExceedDay = totalWorkToDoInDays - availableDays, OwningStories = string.Join("\n", ownerStories), RiskDetail = errorDesc
                    };
                    HighRiskPersons.Add(persionRiskItem);
                }
            }
        }