public virtual ActionResult BalanceSheet(string asOnDate) { return(ThrowIfNotLoggedIn(() => TryExecute(() => { var toDate = DateTime.ParseExact(asOnDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); var incomeAndExpense = _reportsService.GetIncomeAndExpense(DateTime.Parse("01/01/1900"), toDate, WebUser.TenantId); var incomeHeads = incomeAndExpense.Where(i => i.AccountCategory == "Income").ToList(); var expenseHead = incomeAndExpense.Where(e => e.AccountCategory == "Expense").ToList(); double incomeSum = incomeHeads.Sum(income => (double?)income.Credit) ?? 0; double expenseSum = expenseHead.Sum(expense => (double?)expense.Debit) ?? 0; double profitOrLoss = incomeSum - expenseSum; var balanceSheet = _reportsService.BalanceSheet(toDate, WebUser.TenantId); var assetHeads = balanceSheet.Where(i => i.AccountCategory == "Asset").ToList(); var liabilityHeads = balanceSheet.Where(e => e.AccountCategory == "Liability").ToList(); var vm = new { Asset = assetHeads, Liability = liabilityHeads, ProfitOrLoss = profitOrLoss }; return vm; }))); }