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(), })); }
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(); }