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)); }