예제 #1
0
        public virtual ActionResult RenderSummaryTable(
            string operationNumber, bool calculateInMemory = true, bool isLive = false)
        {
            string cacheName = CacheHelper.GetCacheName(isLive, IDBContext.Current.Operation);

            var pmiOperation = _cacheData.Get <PMIOperation>(cacheName) ??
                               _cacheData.Add(
                cacheName,
                _clientPMIDetails.LoadOperationContext(operationNumber, calculateInMemory, isLive),
                _timeCachingVal);

            bool hasData = pmiOperation.HaveDataOutputsAndComponent;

            if (!hasData)
            {
                return(View("_WarningMessage", 1));
            }

            bool hasDataOutputYearPlan = pmiOperation.HaveDataOutputYearPlan;

            if (!hasDataOutputYearPlan)
            {
                return(View("_WarningMessage", 2));
            }

            float yearLimitAccumulated = 0f;
            int   yearLimit            = pmiOperation.GetYearLimitForIndicators;
            int   monthCalculated      = pmiOperation.DisbursedMonths;

            var pmiValues = _clientPMIDetails
                            .GetCurrentPMIDetailsModel(operationNumber, pmiOperation, isLive);

            pmiValues.IsLiveMode = isLive;

            if (pmiOperation.OperationIsClosed && (yearLimit < DateTime.Now.Year))
            {
                //If the operation is closed, the accumulated refers to the closing year
                List <HistoricAcumulated> history = _clientPMIDetails
                                                    .GetHistoricalAccumulated(operationNumber);

                yearLimitAccumulated = history
                                       .Where(hx => hx.YEAR == yearLimit)
                                       .Select(hx => hx.ACUMULATED)
                                       .FirstOrDefault();

                pmiValues.AfterEligibility.Accumulated_disbursements =
                    (decimal)yearLimitAccumulated;
            }

            //The accumulated disbursements are from the closing year
            List <ListPMICurveModel> curveModelValues = pmiValues.AfterEligibility.IntervalsList;

            ViewBag.UpperLimit = curveModelValues
                                 .Where(x => x.PeriodNumber == monthCalculated)
                                 .Select(x => x.UpperLimit)
                                 .FirstOrDefault();

            ViewBag.Problem = curveModelValues
                              .Where(x => x.PeriodNumber == monthCalculated)
                              .Select(x => x.ProblemLevel)
                              .FirstOrDefault();

            int firstDisbursement = pmiOperation.YearOfDisbursement;

            ViewBag.Schedule_Performance = -1;
            ViewBag.Cost_Performance     = -1;
            const int YEAR_CPI_SPI_APPLIABLE = 2012;

            if (firstDisbursement >= YEAR_CPI_SPI_APPLIABLE)
            {
                ViewBag.Schedule_Performance_ExactValue = pmiOperation.LastSchedulePerformance;
                ViewBag.Schedule_Performance_Truncated  =
                    decimal.Round(pmiOperation.LastSchedulePerformance, 2);

                ViewBag.Cost_Performance_ExactValue = pmiOperation.LastCostPerformance;
                ViewBag.Cost_Performance_Truncated  =
                    decimal.Round(pmiOperation.LastCostPerformance, 2);
            }

            ViewBag.Schedule_Performance_Annual_ExactValue =
                pmiOperation.LastSchedulePerformanceAnnual;
            ViewBag.Schedule_Performance_Annual_Truncated =
                decimal.Round(pmiOperation.LastSchedulePerformanceAnnual, 2);

            ViewBag.Cost_Performance_Annual_ExactValue = pmiOperation.LastCostPerformanceAnnual;
            ViewBag.Cost_Performance_Annual_Truncated  =
                decimal.Round(pmiOperation.LastCostPerformanceAnnual, 2);

            pmiValues.Averageweighted       = decimal.Round(pmiOperation.WeightedAverage, 2);
            pmiValues.AverageweightedAnnual = decimal.Round(pmiOperation.WeightedAverageAnnual, 2);

            ViewBag.OperationType = OperationTypeHelper.GetOperationTypes(operationNumber);

            ViewBag.ExpectedDuration = Convert.ToDecimal(
                string.Format("{0:0.##}", pmiOperation.ExpectedExecutionDuration));

            ViewBag.Disbursementshort = Convert.ToString(
                decimal.Round(pmiValues.AfterEligibility.Accumulated_disbursements, 2));

            return(View(pmiValues));
        }
        public virtual ActionResult RenderSummaryTable(
            string operationNumber, bool calculateInMemory = true, bool isLive = false)
        {
            string cacheName = CacheHelper.GetCacheName(isLive, IDBContext.Current.Operation);

            var pmiOperation = _cacheData.Get <PMIOperation>(cacheName) ??
                               _cacheData.Add(cacheName,
                                              _clientPMIDetails.LoadOperationContext(operationNumber, calculateInMemory, isLive),
                                              _timeCachingVal);

            bool OperationIsClosed = pmiOperation.OperationIsClosed;
            bool sw        = false;
            var  AccDis    = 0f;
            int  AccMonth  = 0;
            int  yearLimit = pmiOperation.GetYearLimitForIndicators;
            var  history   = _clientPMIDetails.GetHistoricalAccumulated(operationNumber);

            if (OperationIsClosed)
            {
                //IF THE OPERATION IS CLOSED, THE ACCUMULATED IS OF CLOSING YEAR
                if (yearLimit < DateTime.Now.Year)
                {
                    sw = true;
                }
                else
                {
                    sw = false;
                }
            }

            if (OperationIsClosed && sw)
            {
                //IF THE OPERATION IS CLOSED, THE CLOSING YEAR IS "YEAR LIMIT"
                AccDis   = history.Where(hx => hx.YEAR == yearLimit).Select(hx => hx.ACUMULATED).FirstOrDefault();
                AccMonth = history.Where(hx => hx.YEAR == yearLimit).Select(hx => hx.MONTHS).FirstOrDefault();
            }
            else
            {
                sw = false;
            }

            bool HaveData = pmiOperation.HaveDataOutputsAndComponent;

            if (!HaveData)
            {
                return(View("_WarningMessage", 1));
            }

            bool HaveDataOYP = pmiOperation.HaveDataOutputYearPlan;

            //if not have data in OutputYearPlan
            if (!HaveDataOYP)
            {
                return(View("_WarningMessage", 2));
            }

            var MIValues = _clientPMIDetails.GetCurrentPMIDetailsModel(operationNumber, pmiOperation, isLive);

            MIValues.IsLiveMode = isLive;

            var PmiEscalar = _clientPMIDetails.GetCurrentPMIEscalarBenchmark(operationNumber, pmiOperation, isLive);

            decimal SchedulePerformanceAnnualValue = pmiOperation.LastSchedulePerformanceAnnual;
            decimal SchedulePerformanceValue       = pmiOperation.LastSchedulePerformance;
            decimal CostPerformanceValue           = pmiOperation.LastCostPerformance;
            decimal CostPerformanceAnnualValue     = pmiOperation.LastCostPerformanceAnnual;
            int     disbursedMonths = pmiOperation.DisbursedMonths;

            ////////THE ACCUMULATED DISBURSEMENTS IS OF CLOSING YEAR
            if (sw == true)
            {
                MIValues.AfterEligibility.Accumulated_disbursements = (decimal)AccDis;
            }

            var intervals = MIValues.AfterEligibility.IntervalsList;

            ViewBag.UpperLimit = intervals
                                 .Where(x => x.PeriodNumber == disbursedMonths)
                                 .Select(x => x.UpperLimit)
                                 .FirstOrDefault();

            ViewBag.Problem = intervals
                              .Where(x => x.PeriodNumber == disbursedMonths)
                              .Select(x => x.ProblemLevel)
                              .FirstOrDefault();

            int firstDisbursement = pmiOperation.YearOfDisbursement;

            if (firstDisbursement >= 2012)
            {
                ViewBag.Schedule_Performance_Calcule = SchedulePerformanceValue == -1 ? " " :
                                                       Convert.ToString(SchedulePerformanceValue);
                ViewBag.Schedule_Performance = SchedulePerformanceValue == -1 ? " " :
                                               Convert.ToString(decimal.Round(SchedulePerformanceValue, 2));

                ViewBag.Cost_Performance_Calcule = CostPerformanceValue == -1 ? " " :
                                                   Convert.ToString(CostPerformanceValue);
                ViewBag.Cost_Performance = CostPerformanceValue == -1 ? " " :
                                           Convert.ToString(decimal.Round(CostPerformanceValue, 2));
            }
            else
            {
                ViewBag.Schedule_Performance = " ";

                ViewBag.Cost_Performance = " ";
            }

            ViewBag.Schedule_Performance_Annual_Calcule = SchedulePerformanceAnnualValue == -1 ? " " :
                                                          Convert.ToString(SchedulePerformanceAnnualValue);
            ViewBag.Schedule_Performance_Annual = SchedulePerformanceAnnualValue == -1 ? " " :
                                                  Convert.ToString(decimal.Round(SchedulePerformanceAnnualValue, 2));
            ViewBag.Cost_Performance_Annual_Calcule = CostPerformanceAnnualValue == -1 ? " " :
                                                      Convert.ToString(CostPerformanceAnnualValue);
            ViewBag.Cost_Performance_Annual = CostPerformanceAnnualValue == -1 ? " " :
                                              Convert.ToString(decimal.Round(CostPerformanceAnnualValue, 2));

            MIValues.Maxlevel = PmiEscalar.PmiEscalarBenchmark.ListPMIEscalar
                                .Where(x => x.PmiTypeId == PmiEscalar.MasterDISB95)
                                .Select(x => x.MaxLevel)
                                .FirstOrDefault();
            MIValues.Alert = PmiEscalar.PmiEscalarBenchmark.ListPMIEscalar
                             .Where(x => x.PmiTypeId == PmiEscalar.MasterDISB95)
                             .Select(x => x.AlertLevel)
                             .FirstOrDefault();
            MIValues.Problem = Convert.ToDecimal(PmiEscalar.PmiEscalarBenchmark.ListPMIEscalar
                                                 .Where(x => x.PmiTypeId == PmiEscalar.MasterDISB95)
                                                 .Select(x => x.ProblemLevel)
                                                 .FirstOrDefault());
            MIValues.Disbur95 = PmiEscalar.Disbur95;

            ViewBag.ExpectedDuration = pmiOperation.ExpectedExecutionDuration != null?
                                       Convert.ToDecimal(string.Format("{0:0.##}", pmiOperation.ExpectedExecutionDuration.Value)) :
                                           (decimal?)null;

            ViewBag.Disbursementshort = Convert.ToString(decimal.Round(MIValues.AfterEligibility.Accumulated_disbursements, 2));

            MIValues.Averageweighted = pmiOperation.WeightedAverage;

            MIValues.AverageweightedAnnual = pmiOperation.WeightedAverageAnnual;

            ViewBag.OperationType = OperationTypeHelper.GetOperationTypes(operationNumber);

            return(View(MIValues));
        }