private void FillProjectedYearsList(IProjectionViewModel model) { var request = new GenericOperationNumberRequest() { OperationNumber = model.OperationNumber }; var operationId = _disbursementService.GetOperationId(request); ApprovalMilestoneDateResponse appDateResponse = new ApprovalMilestoneDateResponse(); if (operationId.IsValid) { appDateResponse = _disbursementService .GetApprovalMilestone(Convert.ToInt32(operationId.Value)); } model.ProjectedYearsList = new List <int>(); if (appDateResponse != null && appDateResponse.ApprovalMilestoneDate.HasValue) { int approbalYear = appDateResponse.ApprovalMilestoneDate.Value.Year; for (int i = DateTime.Now.Year; i >= approbalYear; i--) { model.ProjectedYearsList.Add(i); } } else { model.ProjectedYearsList.Add(DateTime.Now.Year); } }
public virtual ActionResult Index( string operationNumber, string group = DisbursementValues.SELECTED, bool IsFromSharePoint = true) { var prjRsp = _eligibilityService.CheckIfOperationIsProjectable( new DisbursementEligibilityRequest() { OperationNumber = operationNumber }); if (prjRsp != null && !prjRsp.IsValid) { var contract = prjRsp.EligibleContracts.HasAny() && prjRsp.EligibleContracts.Count == decimal.One ? prjRsp.EligibleContracts.FirstOrDefault() : null; return(View("NonProjectableScreen", new NoProjectableViewModel { ContractNumber = contract != null ? contract.ContractNumber : string.Empty, OperationNumber = operationNumber, IsAllNotProjectable = true })); } var isExecution = _disbursementService.IsInExecution(operationNumber).IsValid; if (isExecution && IsFromSharePoint) { ProjectLoanResponse operationLoanInfo = _disbursementService.GetLoansInfo( new GenericOperationNumberRequest { OperationNumber = operationNumber }); if (operationLoanInfo.IsValid && operationLoanInfo.ProjectLoanModels.Count == DisbursementValues.ONE_NUMB) { var loanData = operationLoanInfo.ProjectLoanModels.FirstOrDefault(); return(RedirectToAction(DisbursementValues.EDIT, new RouteValueDictionary(new { area = DisbursementValues.DISBURSEMENT, controller = DisbursementValues.LOAN_LEVEL_PROJECTIONS, action = DisbursementValues.EDIT, operationNumber = operationNumber, loanNumber = loanData.LoanTCNumber, fundCode = loanData.FundCode, loanTcdNum = loanData.LoanTCDNum, loanProjectNumber = loanData.ProjNum, loanCurrencyCode = loanData.CurrCode }))); } else { return(RedirectToAction(DisbursementValues.INDEX, new RouteValueDictionary(new { area = DisbursementValues.DISBURSEMENT, controller = DisbursementValues.LOAN_LEVEL_PROJECTIONS, action = DisbursementValues.INDEX, operationNumber = operationNumber }))); } } string pcMail = IDBContext.Current.UserName; var model = _disbursementService.GetProjectionMatrixWithCache(null, pcMail, operationNumber, group, isExecution); model.OperationNumber = operationNumber; model.Download = true; model.Group = group; model.ExchangeRate = decimal.One; model.IsExecution = isExecution; var currentYear = DateTime.Now.Year; if (model.CurrentProjectionMonth <= DisbursementValues.ZERO_NUMB) { model.CurrentProjectionMonth = model.ProjectedMonths != null && model.ProjectedMonths.Any() ? model.ProjectedMonths.Where(o => o.Year == currentYear).Min(z => z.Month) : DisbursementValues.ZERO_NUMB; } var oldProjection = _disbursementService.GetMonthlyProyections(operationNumber, model.CurrentProjectionMonth, true, model.IsExecution, model.LoanNumbers, model.ExchangeRates); var request = new GenericOperationNumberRequest(); request.OperationNumber = operationNumber; if (model.IsExecution) { model.Projects = _disbursementService.GetReferenceInformation(model.OperationNumber, model, null, model.ExchangeRates, currentMonthOldProjection: oldProjection .Where(x => x.Month == DateTime.Now.Month && x.Year == DateTime.Now.Year) .FirstOrDefault().Value); var response = _disbursementService.GetGovernmentBudget(request); model.GovernmentBudget = response.Value; } model.OldProjection = oldProjection; model.Total = _disbursementService.TotalOfProjections( oldProjection, model.ProjectedYears, model.Balance, model.CurrentProjectionMonth); FillProjectedYearsList(model); var edwDataResponse = _disbursementService .GetActualAgreedCompleteProjections(operationNumber, model.LoanNumbers); model.EdwData = edwDataResponse.IsValid ? edwDataResponse.Actual : new List <ActualAgreedModel>(); var otherFinancingSourcesResponse = _disbursementService .GetOtherFinancingSources(request); if (otherFinancingSourcesResponse.IsValid) { model.OtherFinancingSources = otherFinancingSourcesResponse.Value; } else { model.OtherFinancingSources = 0m; } if (model.HasError) { MessageHandler.SetMessage(Localization.GetText( DisbursementValues.WARNING_UNHANDLED_ERROR), DisbursementValues.ERROR); } return(View(model)); }
public virtual ActionResult Edit( string operationNumber, string loanNumber, string fundCode, string loanTcdNum, string loanProjectNumber, string loanCurrencyCode) { var model = new ProjectedLoanModel(); try { var projectableOperationResponse = _eligibilityService .CheckIfContractIsProjectable(new DisbursementEligibilityRequest() { OperationNumber = operationNumber, ContractNumber = loanNumber }); if (!projectableOperationResponse.IsValid) { return(View("NonProjectableScreen", new NoProjectableViewModel { OperationNumber = operationNumber, ContractNumber = loanNumber, IsAllNotProjectable = false })); } string pcMail = IDBContext.Current.UserName; int currentYear = DateTime.Now.Year; model = _disbursementService.GetProjectionMatrixWithCache( null, operationNumber, pcMail, loanNumber, fundCode, loanTcdNum, loanProjectNumber, loanCurrencyCode); if (model.CurrentProjectionMonth <= DisbursementValues.ZERO_NUMB) { model.CurrentProjectionMonth = model.ProjectedMonths != null && model.ProjectedMonths.Any() ? model.ProjectedMonths.Where(o => o.Year == currentYear).Min(z => z.Month) : DisbursementValues.ZERO_NUMB; } model.OperationNumber = operationNumber; model.LoanTCDNumber = loanTcdNum; model.FundCode = fundCode; model.LoanProjectNumber = loanProjectNumber; model.LoanNumber = loanNumber; model.LoanCurrencyCode = loanCurrencyCode; model.Download = true; var loanNumberToArray = new string[] { model.LoanNumber }; var oldProjection = _disbursementService.GetMonthlyProyections( operationNumber, model.CurrentProjectionMonth, false, model.IsExecution, loanNumberToArray); model.OldProjection = oldProjection.Any() ? oldProjection : new List <ActualsFromEdwViewModel>(); var currMonthOldProjection = model.OldProjection .HasAny(x => x.Month == DateTime.Now.Month && x.Year == DateTime.Now.Year) ? model.OldProjection .Where(x => x.Month == DateTime.Now.Month && x.Year == DateTime.Now.Year) .FirstOrDefault().Value : decimal.Zero; model.Projects = _disbursementService .GetReferenceInformation(model.OperationNumber, model, model.LoanNumber, currentMonthOldProjection: currMonthOldProjection); model.Total = _disbursementService.TotalOfProjections( oldProjection, model.ProjectedYears, model.Balance, model.CurrentProjectionMonth); FillProjectedYearsList(model); model.ExchangeRate = decimal.One; model.CurrCode = string.IsNullOrEmpty(model.CurrCode) ? DisbursementValues.USD : model.CurrCode; var edwDataResponse = _disbursementService.GetActualAgreedCompleteProjections( operationNumber, new string[] { loanNumber }); model.EdwData = edwDataResponse.IsValid ? edwDataResponse.Actual : new List <ActualAgreedModel>(); GenericOperationNumberRequest request = new GenericOperationNumberRequest(); request.OperationNumber = operationNumber; model.RemainingBalance = model.RemainingBalance + (model.OldProjection .Where(o => o.Month == model.CurrentProjectionMonth && o.Year == DateTime.Now.Year) .Select(o => o.Value).FirstOrDefault() / 1000); var otherFinancingSourcesResponse = _disbursementService .GetOtherFinancingSources(request); if (otherFinancingSourcesResponse.IsValid) { model.OtherFinancingSources = otherFinancingSourcesResponse.Value; } GenericLoanNumberRequest loanNumberRequest = new GenericLoanNumberRequest { LoanNumber = loanNumber, OperationNumber = operationNumber }; var minimumAmountToBeJustifiedResponse = _disbursementService .GetMinimumAmountToBeJustified(loanNumberRequest); if (minimumAmountToBeJustifiedResponse.IsValid) { model.MinimumAmountPending = minimumAmountToBeJustifiedResponse.Value; } } catch (Exception ex) { Logger.GetLogger().WriteError( DisbursementValues.LOAN_LEVEL_PROJECTIONS_CONTROLLER, DisbursementValues.MSJ_ERROR_GET_LOAN_MODEL, ex); MessageHandler.SetMessage( Localization.GetText(DisbursementValues.WARNING_UNHANDLED_ERROR), DisbursementValues.ERROR); model.HasServiceError = true; } return(View(model)); }