Esempio n. 1
0
        public ActionResult Reports(int projectId)
        {
            var project = _dataManager.FindProjectById(projectId);

            if (project == null)
            {
                return(HttpNotFound());
            }

            TopContributorsReportBuilder builder = new TopContributorsReportBuilder(_dataManager);

            List <UserContribution> contributionList = builder.CalculateUserContributions(project);

            List <UserContributionViewModel> viewModels = new List <UserContributionViewModel>();

            contributionList.ForEach(contribution => viewModels.Add(Mapper.Map <UserContributionViewModel>(contribution)));

            TopContributorsReportViewModel topContributorsReportViewModel = new TopContributorsReportViewModel()
            {
                ProjectName          = project.Name,
                ProjectId            = project.Id,
                UserContributionList = viewModels
            };


            List <SprintStatusModel> sprintStatusModelList = new List <SprintStatusModel>();

            SprintStatusReportBuilder statusReportBuilder = new SprintStatusReportBuilder(_dataManager);

            project.SprintList.ForEach(sprint =>
            {
                SprintStatusModel sprintStatusModel = statusReportBuilder.BuildSprintStatus(sprint.Id);
                sprintStatusModelList.Add(sprintStatusModel);
            });


            List <SprintStatusReportViewModel> sprintStatusReportViewModelList =
                Mapper.Map <List <SprintStatusReportViewModel> >(sprintStatusModelList);

            OverrallReportViewModel model = new OverrallReportViewModel()
            {
                TopContributorsReportViewModel = topContributorsReportViewModel,
                SprintStatusReportViewList     = sprintStatusReportViewModelList
            };

            return(View("Reports/Reports", model));
        }
Esempio n. 2
0
        public SprintStatusModel BuildSprintStatus(int sprintId)
        {
            SprintModel sprint = _dataManager.FindSprintById(sprintId);

            var taskDificultyLevels     = _dataManager.TaskDificultyLevels;
            var userList                = _dataManager.UserList;
            var tasklist                = _dataManager.TaskList.Where(task => task.SprintId == sprint.Id).ToList();
            int overallEffortEstimation = 0;
            int overallWorkEffort       = 0;
            List <TaskStatusModel> taskStatusModelList = new List <TaskStatusModel>();

            tasklist.ForEach(task =>
            {
                try
                {
                    TaskStatusModel model    = BuildTaskStatus(task, taskDificultyLevels, userList);
                    overallEffortEstimation += model.EffortEstimation;
                    overallWorkEffort       += model.WorkEffort;
                    taskStatusModelList.Add(model);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Failed to calculate task status for task {0} {1} due to :{2}", task.Id, task.Name, e.Message);
                }
            });
            int totalNumberOfTasks    = taskStatusModelList.Count;
            int numberOfFinishedTasks = 0;

            taskStatusModelList.ForEach(task =>
            {
                if (task.Status.Equals(TaskState.Finished))
                {
                    numberOfFinishedTasks++;
                }
            });



            int percentageOfCompletion = 0;

            try
            {
                percentageOfCompletion = numberOfFinishedTasks * 100 / totalNumberOfTasks;
            }
            catch (Exception)
            {
                //Devided by zero exception
            }



            SprintStatusModel sprintStatusModel = new SprintStatusModel()
            {
                Id                      = sprint.Id,
                Name                    = sprint.Name,
                TargetDate              = sprint.TargetDate,
                PercentageOfCompletion  = percentageOfCompletion,
                OverallEffortEstimation = overallEffortEstimation,
                OverallWorkEffort       = overallWorkEffort,
                TaskStatusList          = taskStatusModelList
            };

            return(sprintStatusModel);
        }