示例#1
0
        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);
            }
        }
示例#2
0
        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));
        }