All pastes #2102049 Raw Edit

Untitled

public text v1 · immutable
#2102049 ·published 2012-01-11 05:25 UTC
rendered paste body
   public static class DbOperations
    {
        public static void CloseAccount(this BitCoinEscrowAccount account, AccountState state)
        {
            using (var session = DbProvider.Factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                account.State = state;
                if(state != AccountState.Open)
                {
                    account.ClosedDate = DateTime.Now;
                }
                session.Update(account);
                transaction.Commit();
            }
        }

        public static BitCoinEscrowAccount GetAccountByEscrowAddress(this BitCoinEscrowAccount dummy,string address)
        {
            using (var session = DbProvider.Factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                return session.Get<BitCoinEscrowAccount>(address);
            }
        }

        public static BitCoinEscrowAccount GetAccountByControlAddress(this BitCoinEscrowAccount dummy,string address)
        {
            using (var session = DbProvider.Factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                var query = from a in session.Query<BitCoinEscrowAccount>()
                            where a.EscrowCommandAddress == address
                            select a;
                
                return query.FirstOrDefault();
            }
        }

        public static void Save(this BitCoinEscrowAccount account)
        {
            using (var session = DbProvider.Factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                session.Save(account);
                transaction.Commit();
            }
        }


        public static List<BitCoinEscrowAccount> GetOpenAccounts(this BitCoinEscrowAccount account)
        {
            using (var session = DbProvider.Factory.OpenSession())
            using (var transaction = session.BeginTransaction())
            {
                var query = from a in session.Query<BitCoinEscrowAccount>()
                            where
                                a.State == AccountState.Open && a.IsTestAccount == account.IsTestAccount
                            select a;
                return query.ToList();
            }
        }

    }