public static IEnumerable <MoneyMAccountBalance> ListOfMoneyAccountBalances(DateTime date) { using (var db = DbConnection) { db.TraceListener = new DebugTraceListener(); var query = from p in db.Query <Operation>("SELECT * FROM Operation WHERE IsDeleted = 0") group p by p.MoneyAccountId into g select new { account = GetAccountByGlobalId(g.Key), //TODO tu ma nie być ToString initialValue = GetInitialValue(g, date), finalValue = GetFinalValue(g, date) }; List <MoneyMAccountBalance> list = query .Where(i => !(i.account == null || i.account is SubMAccount)) .Select(item => new MoneyMAccountBalance(item.account, item.initialValue, item.finalValue)) .ToList(); foreach (var item in query.Where(i => i.account is SubMAccount)) { MoneyMAccountBalance moneyAccountBalance = list.SingleOrDefault(i => i.Account.GlobalId == ((SubMAccount)item.account).BossAccountGlobalId); if (moneyAccountBalance != null) { moneyAccountBalance.JoinBalance(item.initialValue, item.finalValue); } else { list.Add(new MoneyMAccountBalance(GetAccountByGlobalId(((SubMAccount)item.account).BossAccountGlobalId), item.initialValue, item.finalValue)); } } return(list.OrderBy(i => i.Account.Name)); } }
public void JoinBalance(MoneyMAccountBalance secondAccount) { FinalValue += secondAccount.FinalValue; InitialValue += secondAccount.InitialValue; }