public async Task <OperationUpdateList> GetOperationsHistory(GetOperationsRequest request)
        {
            var data = _reader
                       .Get(OperationHistoryNoSqlEntity.GeneratePartitionKey(request.WalletId, request.AssetId))
                       .Where(e => e.Entity.TimeStamp < request.LastDate)
                       .Take(request.BatchSize)
                       .Select(t => t.Entity)
                       .OrderByDescending(e => e.TimeStamp)
                       .ToList();

            var cacheSize = _reader
                            .Get(OperationHistoryNoSqlEntity.GeneratePartitionKey(request.WalletId, request.AssetId)).Count;

            if (data.Count == request.BatchSize || (cacheSize < _maxCachedEntities && cacheSize > 0))
            {
                return new OperationUpdateList()
                       {
                           OperationUpdates = data
                       }
            }
            ;

            return(await _operationHistoryService.GetBalanceUpdatesAsync(request));
        }
    }
Ejemplo n.º 2
0
        public override async Task <GetOperationsResponse> GetOperations(GetOperationsRequest request, ServerCallContext context)
        {
            var operationNames = await _ServiceQuery.GetOperation(request.Service, context.CancellationToken);

            GetOperationsResponse response = new GetOperationsResponse();

            response.OperationNames.Add(operationNames.Distinct().ToArray());
            return(response);
        }
Ejemplo n.º 3
0
        public GetOperationsResponse GetOperations(GetOperationsRequest request)
        {
            int totalRecords;
            var operationConfigs = DataContext.KeyOperationConfigs
                                   .Include(x => x.KeyOperationGroup)
                                   .Include(x => x.Kpi)
                                   .Include(x => x.Kpi.Measurement)
                                   .ToList().Select(x => new KeyOperationConfig()
            {
                Desc              = x.Desc,
                Id                = x.Id,
                IsActive          = x.IsActive,
                KeyOperationGroup = x.KeyOperationGroup ?? new KeyOperationGroup(),
                Kpi               = x.Kpi ?? new Kpi(),
                Order             = x.Order
            }).ToList();
            var result = AddEconomicKpi(operationConfigs);
            var data   = SortData(request.Search, request.SortingDictionary, out totalRecords, result);


            return(new GetOperationsResponse
            {
                TotalRecords = totalRecords,
                Operations = data.MapTo <GetOperationsResponse.Operation>()
            });
            //if (request.OnlyCount)
            //{
            //    return new GetOperationsResponse { Count = DataContext.KeyOperationConfigs.Count() };
            //}
            //else
            //{
            //    return new GetOperationsResponse
            //    {
            //        Operations = DataContext.KeyOperationConfigs.OrderByDescending(x => x.Id)
            //        .Include(x => x.KeyOperationGroup).Skip(request.Skip).Take(request.Take).ToList().MapTo<GetOperationsResponse.Operation>()
            //    };
            //}
        }
 public override Task <GetOperationsResponse> GetOperations(GetOperationsRequest request, ServerCallContext context)
 {
     return(base.GetOperations(request, context));
 }
Ejemplo n.º 5
0
        public async Task <OperationUpdateList> GetBalanceUpdatesAsync(GetOperationsRequest request)
        {
            try
            {
                using var activity = MyTelemetry.StartActivity($"Use DB context {DatabaseContext.Schema}")
                                     ?.AddTag("db-schema", DatabaseContext.Schema);

                await using var ctx = DatabaseContext.Create(_dbContextOptionsBuilder);
                var query = string.IsNullOrWhiteSpace(request.WalletId)
                    ? ctx.OperationHistory
                    : ctx.OperationHistory.Where(e => e.WalletId == request.WalletId);

                if (!string.IsNullOrEmpty(request.AssetId))
                {
                    query = query.Where(e => e.AssetId == request.AssetId);
                }

                if (!request.ShowServiceTypes)
                {
                    query = query.Where(e => e.OperationType != OperationTypes.Unknown);
                }

                query = query
                        .Where(e => e.TimeStamp < request.LastDate)
                        .OrderByDescending(e => e.TimeStamp)
                        .Take(request.BatchSize);

                var list = await query.ToListAsync();

                var resp = new OperationUpdateList()
                {
                    OperationUpdates = new List <OperationUpdate>()
                };
                resp.OperationUpdates.AddRange(list.Select(e => new OperationUpdate(e)));

                if (Program.Settings.ShowSimplexAsDeposits)
                {
                    foreach (var update in resp.OperationUpdates.Where(update => update.OperationType == OperationTypes.SimplexBuy))
                    {
                        update.OperationType = OperationTypes.Deposit;
                    }
                }

                if (Program.Settings.ShowRecurringBuysAsSwaps)
                {
                    foreach (var update in resp.OperationUpdates.Where(update => update.OperationType == OperationTypes.RecurringBuy))
                    {
                        update.OperationType = OperationTypes.Swap;
                    }
                }

                //await _cacheManager.InitializeCacheForWalletAndAssetAsync(request.WalletId, request.AssetId);
                return(resp);
            }
            catch (Exception e)
            {
                _logger.LogError(e,
                                 "Cannot get OperationUpdate for walletId: {walletId}, batch: {batch}, lastDate: {lastDate}",
                                 request.WalletId, request.BatchSize, request.LastDate);

                e.WriteToActivity();
                request.AddToActivityAsJsonTag("request");

                throw;
            }
        }