Exemple #1
0
        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;
 }