Example #1
0
        public async Task <SummaryAssessment> CalculateTasks(double desiredCompletionTime, string estimationTimeFormat)
        {
            var tasksItems = await GetTasksList();

            var totalAssessments = new SummaryAssessment();

            totalAssessments.DesiredCompletionTime = desiredCompletionTime;
            totalAssessments.EstimationTimeFormat  = estimationTimeFormat;

            foreach (var taskItem in tasksItems)
            {
                taskItem.Assessments.Estimation  = 0;
                taskItem.Assessments.StDeviation = 0;
                taskItem.Assessments.Variance    = 0;
            }

            foreach (var taskItem in tasksItems)
            {
                var optimistic  = taskItem.Assessments.Optimistic;
                var mostLikely  = taskItem.Assessments.MostLikely;
                var pessimistic = taskItem.Assessments.Pessimistic;
                var deviation   = await _calculateService.CalculateStDeviation(optimistic, pessimistic);

                taskItem.Assessments.Estimation = await _calculateService.CalculateEstimation(optimistic, mostLikely, pessimistic);

                taskItem.Assessments.StDeviation += deviation;
                taskItem.Assessments.Variance    += await _calculateService.CalculateVariance(deviation);

                totalAssessments.SumEstimation  += taskItem.Assessments.Estimation;
                totalAssessments.SumStDeviation += taskItem.Assessments.StDeviation;
                totalAssessments.SumVariance    += taskItem.Assessments.Variance;
            }

            totalAssessments.PercentageOfCompletion = await _calculateService.CalculatePercentageOfCompletion(totalAssessments.SumEstimation, totalAssessments.SumVariance, desiredCompletionTime);

            await _cacheService.Upadate <SummaryAssessment>(nameof(SummaryAssessment), totalAssessments);

            return(totalAssessments);
        }