Exemplo n.º 1
0
        public LoanConcentrationObj GetLoanConcentrationDetails()
        {
            var productList = _dataContext.credit_product.Where(x => x.Deleted == false).ToList();
            var loanList    = _dataContext.credit_loan.Where(x => x.Deleted == false).ToList();

            var loanConcentrations = productList.Select(a => new ProductVolume
            {
                ProductName = _dataContext.credit_product.FirstOrDefault(x => x.ProductId == a.ProductId).ProductName,
                TotalVolume = loanList.Where(x => x.ProductId == a.ProductId).Sum(x => x.OutstandingPrincipal),
            }).ToList();
            var count        = loanConcentrations.Count();
            var usableColors = new List <string>();

            for (var i = 0; i < count; i++)
            {
                usableColors.Add(BackgroundColor[i]);
            }

            var loanConcentration = new LoanConcentrationObj
            {
                Labels   = loanConcentrations.Select(x => x.ProductName).ToArray(),
                Datasets = new DatasetLoanConcentrationObj
                {
                    BackgroundColor      = usableColors.ToArray(),
                    HoverBackgroundColor = usableColors.ToArray(),
                    Data = loanConcentrations.Select(x => x.TotalVolume).ToArray()
                }
            };

            return(loanConcentration);
        }
Exemplo n.º 2
0
        public LoanConcentrationObj GetInvestmentConcentrationDetails()
        {
            var productList    = _dataContext.inf_product.Where(x => x.Deleted == false).ToList();
            var investmentList = _dataContext.inf_investorfund.Where(x => x.Deleted == false).ToList();

            var InvestmentConcentrations = productList.Select(a => new ProductVolume
            {
                ProductName = _dataContext.inf_product.FirstOrDefault(x => x.ProductId == a.ProductId).ProductName,
                TotalVolume = investmentList.Where(x => x.ProductId == a.ProductId).Sum(x => x.ApprovedAmount),
            }).ToList();
            var count        = InvestmentConcentrations.Count();
            var usableColors = new List <string>();

            for (var i = 0; i < count; i++)
            {
                usableColors.Add(BackgroundColor[i]);
            }

            var investorFundConcentration = new LoanConcentrationObj
            {
                Labels   = InvestmentConcentrations.Select(x => x.ProductName).ToArray(),
                Datasets = new DatasetLoanConcentrationObj
                {
                    BackgroundColor      = usableColors.ToArray(),
                    HoverBackgroundColor = usableColors.ToArray(),
                    Data = InvestmentConcentrations.Select(x => x.TotalVolume).ToArray()
                }
            };

            return(investorFundConcentration);
        }
Exemplo n.º 3
0
        public LoanConcentrationObj GetOverDueForDashboard()
        {
            var creditLoanOverDue = (from a in _dataContext.credit_loan_past_due
                                     join b in _dataContext.credit_loan on a.LoanId equals b.LoanId
                                     //where a.PrincipalAmount <= 0
                                     group new { b.PastDuePrincipal, a.LoanId } by new { a.Date, a.LoanId } into g
                                     select new
            {
                g.Key.Date,
                PastDuePrincipal = g.FirstOrDefault(x => x.LoanId == g.Key.LoanId)
            }).ToList();

            var creditLoanOverDueConcat = new List <LoanOverDueDBResult>();
            var ids = creditLoanOverDue.Select(x => x.PastDuePrincipal.LoanId).Distinct();

            foreach (var id in ids)
            {
                var repaymentToOverDue = creditLoanOverDue.Where(x => x.PastDuePrincipal.LoanId == id).Sum(y => y.PastDuePrincipal.PastDuePrincipal);
                var earliestDate       = creditLoanOverDue.Where(x => x.PastDuePrincipal.LoanId == id).OrderBy(y => y.Date).First();

                creditLoanOverDueConcat.Add(new LoanOverDueDBResult
                {
                    TotalPastDuePayment = repaymentToOverDue,
                    Range = ((TimeSpan)(DateTime.Today - earliestDate.Date)).Days
                });
            }

            var creditClassif = (from a in _dataContext.credit_creditclassification
                                 where a.Deleted == false
                                 select new
            {
                a.LowerLimit,
                a.UpperLimit,
                a.ProvisioningRequirement,
            }).ToList();

            var     classificationName = new List <string>();
            var     pastDuePrinciples  = new List <decimal?>();
            var     usableColors       = new List <string>();
            decimal?provisioning       = 0;

            for (var i = 0; i < creditClassif.Count; i++)
            {
                usableColors.Add(BackgroundColor[i]);
            }

            foreach (var credit in creditClassif)
            {
                classificationName.Add($"{credit.LowerLimit}" + " - " + $"{credit.UpperLimit}" + " days");

                var overCal = creditLoanOverDueConcat
                              .Where(x => credit.LowerLimit <= x.Range && credit.UpperLimit <= x.Range)?
                              .Sum(y => y.TotalPastDuePayment);

                provisioning += (credit.ProvisioningRequirement * overCal) / 100;

                pastDuePrinciples.Add(overCal);
            }

            var overDueAnalysis = new LoanConcentrationObj
            {
                Labels   = classificationName.ToArray(),
                Datasets = new DatasetLoanConcentrationObj
                {
                    BackgroundColor      = usableColors.ToArray(),
                    HoverBackgroundColor = usableColors.ToArray(),
                    Data = pastDuePrinciples.ToArray()
                },
                Provisioning = provisioning
            };

            return(overDueAnalysis);
        }