public virtual ActionResult ProgramLiability() { if (String.IsNullOrEmpty(Request["tqx"])) { return(View()); } var budgets = Accounts.Where(x => x.Type).Eq(AccountType.Program); // var programs = Programs var t = new GoogleVisualizationTable() .AddColumn <string>("account", "Account", null) .AddColumn <int>("budget-limit", "Budget Limit", "{0:n0}") .AddColumn <int>("budget-interval", "Budget Refresh Interval", null) .AddColumn <DateTime>("budget-last", "Last Budget Refresh", "{0:d}") .AddColumn <DateTime>("budget-next", "Next Budget Refresh", "{0:d}") .AddColumn <int>("balance", "Balance", "{0:n0}"); foreach (var b in budgets) { var l = Accounting.GetLedger(b); t.AddRow( b.Name, b.Budget == null ? null : b.Budget.RefreshLimit, b.Budget == null ? "" : b.Budget.RefreshInterval.ToString(), b.Budget == null ? null : b.Budget.LastRefreshed, b.Budget == null ? null : b.Budget.NextRefresh, l.Balance ); } var r = new GoogleVisualizationResult(Request); r.Response.Table = t; return(r); }