Пример #1
0
        // TODO: an overload method for get all transactions, by passing filter criteria, this may require a new search object
        public ICollection <Transaction> GetTransactions(ICollection <SearchTerm> search)
        {
            // check http://www.albahari.com/nutshell/predicatebuilder.aspx
            // TODO: define a way to loop through search entries to filter results
            // TODO: define a way to implement and/or operators in search options
            // TODO: build final Where Clause
            var    _clauses = search.OrderBy(s => s.Order);
            string _query   = "";

            foreach (var clause  in _clauses)
            {
                if (clause.Order == 1)
                {
                    _query = clause.Clause;
                }
                else
                {
                    _query += " " + clause.SelectionModifier + " " + clause.Clause;
                }
            }
            List <Transaction> transactions = new List <Transaction>();

            using (var db = new LedgerContext())
            {
                // code not working yet
                //return db.Transactions.Where(_query);
                foreach (var transaction in db.Transactions)
                {
                    transactions.Add(transaction);
                }
            }
            return(transactions);
        }
Пример #2
0
 /// <summary>
 /// Searches for an account given its number
 /// </summary>
 /// <param name="accountNumber"></param>
 /// <returns>account object found</returns>
 private Account GetAccountByNumber(string accountNumber)
 {
     using (var db = new LedgerContext())
     {
         return(db.Accounts.Where(a => a.AccountNumber == accountNumber).FirstOrDefault());
     }
 }
Пример #3
0
        /// <summary>
        /// Create New Transaction, This object is immutable; should never be updated or deleted
        /// </summary>
        /// <param name="transaction"></param>
        /// <returns>-1 if any exception, and a postive number otherwise</returns>
        public int CreateTransaction(Transaction transaction)
        {
            using (var db = new LedgerContext())
            {
                var _id          = transaction.ID;
                var _accountId   = transaction.AccountID;
                var _amount      = transaction.Amount;
                var _debit       = transaction.Debit;
                var _description = transaction.Description;
                var _reference   = transaction.Reference;
                var _timestamp   = transaction.Timestamp;

                if (_timestamp == null)
                {
                    _timestamp = DateTime.Now;
                }

                int count = -1;

                // Always insert, never update a transaction
                db.Transactions.Add(new Transaction {
                    AccountID   = _accountId,
                    Amount      = _amount,
                    Debit       = _debit,
                    Description = _description,
                    Reference   = _reference,
                    Timestamp   = _timestamp
                });

                count = db.SaveChanges();
                return(count);
            }
        }
Пример #4
0
 /// <summary>
 /// Searches for an account given its GUID
 /// </summary>
 /// <param name="id"></param>
 /// <returns>account object found</returns>
 private Account GetAccountByID(Guid id)
 {
     using (var db = new LedgerContext())
     {
         return(db.Accounts.Where(a => a.ID == id).FirstOrDefault());
     }
     throw new NotImplementedException();
 }
Пример #5
0
        /// <summary>
        /// Gets all transactions in collection
        /// </summary>
        /// <returns>All transactions stored</returns>
        public ICollection <Transaction> GetTransactions()
        {
            List <Transaction> transactions = new List <Transaction>();

            using (var db = new LedgerContext())
            {
                foreach (var transaction in db.Transactions)
                {
                    transactions.Add(transaction);
                }
            }
            return(transactions);
        }
Пример #6
0
        /// <summary>
        /// Gets all accounts defined
        /// </summary>
        /// <returns>All accounts defined</returns>
        public ICollection <Account> GetAccounts()
        {
            List <Account> accounts = new List <Account>();

            using (var db = new LedgerContext())
            {
                foreach (var account in db.Accounts)
                {
                    accounts.Add(account);
                }
            }
            return(accounts);
        }
Пример #7
0
        /// <summary>
        /// Insert/Update Account
        /// </summary>
        /// <param name="account"></param>
        /// <returns>-1 if anything went wrong, and a positive number otherwise</returns>
        public int UpdateAccount(Account account)
        {
            using (var db = new LedgerContext())
            {
                var     _id             = account.ID;
                var     _accountNumber  = account.AccountNumber;
                var     _sortCode       = account.SortCode;
                Account existingAccount = null;

                if (_id != null)
                {
                    existingAccount = GetAccountByID(_id);
                }
                else
                {
                    existingAccount = GetAccountByNumber(_accountNumber);
                }

                int count = -1;

                if (existingAccount != null)
                {
                    // Update
                    var _toUpdate = db.Accounts.SingleOrDefault(a => a.ID == existingAccount.ID);
                    _toUpdate.AccountNumber = _accountNumber;
                    _toUpdate.SortCode      = _sortCode;
                    count = db.SaveChanges();
                }
                else
                {
                    // Insert
                    db.Accounts.Add(new Account {
                        AccountNumber = _accountNumber,
                        SortCode      = _sortCode
                    });
                    count = db.SaveChanges();
                }
                return(count);
            }
        }