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