Exemple #1
0
        public async Task <AccountHistoryResponse> ByTypes([FromQuery] AccountHistoryRequest request)
        {
            request.From = request.From?.ToUniversalTime();
            request.To   = request.To?.ToUniversalTime();
            var clientAccountIds = string.IsNullOrEmpty(request.AccountId)
                ? (await _accountsRepository.GetAllAsync(request.ClientId)).Select(item => item.Id).ToArray()
                : new[] { request.AccountId };

            var accounts = (await _accountsHistoryRepository.GetAsync(clientAccountIds, request.From, request.To))
                           .Where(item => item.Type != AccountHistoryType.OrderClosed);

            var orders =
                (await _ordersHistoryRepository.GetHistoryAsync(request.ClientId, clientAccountIds, request.From,
                                                                request.To))
                .Where(item => item.OpenDate != null &&  // remove cancel pending order rows created before OrderUpdateType was introduced
                       item.OrderUpdateType == OrderUpdateType.Close);

            var openPositions = await _ordersSnapshotReaderService.GetActiveByAccountIdsAsync(clientAccountIds);

            return(new AccountHistoryResponse
            {
                Account = accounts.Select(AccountHistoryExtensions.ToBackendContract)
                          .OrderByDescending(item => item.Date).ToArray(),
                OpenPositions = openPositions.Select(OrderExtensions.ToBackendHistoryContract)
                                .OrderByDescending(item => item.OpenDate).ToArray(),
                PositionsHistory = orders.Select(OrderHistoryExtensions.ToBackendHistoryContract)
                                   .OrderByDescending(item => item.OpenDate).ToArray(),
            });
        }
 public Task <AccountHistoryResponse> ByTypes(AccountHistoryRequest request)
 {
     return(Task.FromResult(new AccountHistoryResponse
     {
         Account = GetAccountHistory().ToArray(),
         OpenPositions = GetOpenPositions().ToArray(),
         PositionsHistory = GetPositionHistory().ToArray(),
     }));
 }
Exemple #3
0
        public async Task <AccountNewHistoryResponse> Timeline([FromQuery] AccountHistoryRequest request)
        {
            request.From = request.From?.ToUniversalTime();
            request.To   = request.To?.ToUniversalTime();
            var clientAccountIds = string.IsNullOrEmpty(request.AccountId)
                ? (await _accountsRepository.GetAllAsync(request.ClientId)).Select(item => item.Id).ToArray()
                : new[] { request.AccountId };

            var accounts = (await _accountsHistoryRepository.GetAsync(clientAccountIds, request.From, request.To))
                           .Where(item => item.Type != AccountHistoryType.OrderClosed);

            var openOrders = await _ordersSnapshotReaderService.GetActiveByAccountIdsAsync(clientAccountIds);

            var history = (await _ordersHistoryRepository.GetHistoryAsync(request.ClientId, clientAccountIds,
                                                                          request.From, request.To))
                          .Where(item => item.Status != OrderStatus.Rejected &&
                                 item.OpenDate != null &&
                                 item.OrderUpdateType == OrderUpdateType.Close).ToList();

            var items = accounts.Select(item => new AccountHistoryItem
            {
                Account = item.ToBackendContract(),
                Date    = item.Date
            })
                        .Concat(openOrders.Select(item => new AccountHistoryItem
            {
                Position = item.ToBackendHistoryContract(),
                Date     = item.OpenDate.Value
            }))
                        .Concat(history.Select(item => new AccountHistoryItem
            {
                Position = item.ToBackendHistoryOpenedContract(),
                Date     = item.OpenDate.Value
            }))
                        .Concat(history.Select(item => new AccountHistoryItem
            {
                Position = item.ToBackendHistoryContract(),
                Date     = item.CloseDate.Value
            }))
                        .OrderByDescending(item => item.Date);

            return(new AccountNewHistoryResponse
            {
                HistoryItems = items.ToArray()
            });
        }
 public Task <AccountNewHistoryResponse> Timeline(AccountHistoryRequest request)
 {
     throw new NotImplementedException();
 }