public StrategyTransaction GetStrategyTransaction(int transactionId) { return(ExecuteFaultHandledOperation(() => { IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>(); StrategyTransaction transaction = transactionRepository.Get(transactionId); if (transaction == null) { NotFoundFault fault = new NotFoundFault(string.Format("No transaction found with id '{0}'.", transactionId)); throw new FaultException <NotFoundFault>(fault, fault.Message); } return transaction; })); }
public StrategyTransaction[] GetStrategyTransactionsCollection(int entryStrategyTransactionId) { return(ExecuteFaultHandledOperation(() => { // get the entry order transaction StrategyTransaction transaction = GetStrategyTransaction(entryStrategyTransactionId); // add it to the return collection List <StrategyTransaction> transactions = new List <StrategyTransaction>() { transaction }; IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>(); List <string> searchIds = new List <string>() { transaction.BrokerTransactionID }; // find the related transactions while (searchIds.Count > 0) { string searchId = searchIds.First(); searchIds.RemoveAt(0); List <StrategyTransaction> relatedTransactions = transactionRepository.Get().Where(t => t.BrokerOrderID == searchId || t.BrokerTradeID == searchId).ToList(); // grab their BrokerTransactionId's relatedTransactions.ForEach(t => searchIds.Add(t.BrokerTransactionID)); // add them to the collection transactions.AddRange(relatedTransactions); } return transactions.ToArray(); })); }
public StrategyTransaction SaveStrategyTransaction(StrategyTransaction transaction, string brokerName) { return(ExecuteFaultHandledOperation(() => { StrategyTransaction updatedEntity = null; Strategy strategy = GetStrategy(transaction.StrategyID); if (strategy != null) { IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>(); if (transaction.StrategyTransactionID == 0) { transaction.BrokerID = GetBrokerByName(brokerName).BrokerID; updatedEntity = transactionRepository.Add(transaction); } else { updatedEntity = transactionRepository.Update(transaction); } } return updatedEntity; })); }
/// <summary> /// Fetches and returns all strategy transaction entries (inclusive) in the specified range. /// </summary> /// <param name="dateBottom">The earliest transaction time.</param> /// <param name="dateTop">The latest transaction time.</param> /// <param name="maxTransactions">The number of transactions to return up to a maximum of 5000.</param> /// <returns></returns> public StrategyTransaction[] GetStrategyTransactionsByDateRange(DateTime dateBottom, DateTime?dateTop, int maxTransactions) { return(ExecuteFaultHandledOperation(() => { maxTransactions = Math.Min(5000, maxTransactions); dateTop = dateTop ?? DateTime.MaxValue.ToUniversalTime(); if (dateBottom >= dateTop) { throw new ArgumentOutOfRangeException(string.Format("dateBottom [{0}] is greater than dateTop [{1}].", dateBottom, dateTop)); } if (dateTop <= dateBottom) { throw new ArgumentOutOfRangeException(string.Format("dateTop [{0}] is less than dateBottom [{1}].", dateTop, dateBottom)); } IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>(); StrategyTransaction[] transactions = transactionRepository.GetStrategyTransactionsByDateRange(dateBottom, dateTop.Value).Take(maxTransactions).ToArray(); return transactions; })); }
/// <summary> /// Fetches and returns specified count of strategy transactions. /// </summary> /// <param name="count">The number of transactions to return up to a maximum of 5000.</param> /// <param name="descending">The direction of the strategy transactions read.</param> /// <returns></returns> public StrategyTransaction[] GetStrategyTransactions(int?count, bool?descending) { return(ExecuteFaultHandledOperation(() => { count = Math.Min(5000, count ?? 5000); descending = descending ?? false; IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>(); IEnumerable <StrategyTransaction> transactions = null; if (descending.Value) { transactions = transactionRepository.Get().OrderByDescending(t => t.BrokerTransactionID).Take(count.Value); } else { transactions = transactionRepository.Get().OrderBy(t => t.BrokerTransactionID).Take(count.Value); } return transactions.ToArray(); })); }