Пример #1
0
        public DepositHistoryResponse GetDeposits([FromUri] GetDepositsRequest request)
        {
            var pageSize = 10;

            var dateTimeOffset = DateTimeOffset.Now.AddYears(-1);

            var filteredQueryable = _paymentQueries.GetDeposits()
                                    .Where(o => o.PlayerId == PlayerId)
                                    .Where(o => o.DateSubmitted >= dateTimeOffset);

            if (request.StartDate != null)
            {
                filteredQueryable = filteredQueryable
                                    .Where(o => o.DateSubmitted >= request.StartDate.Value);
            }

            if (request.EndDate != null)
            {
                filteredQueryable = filteredQueryable
                                    .Where(o => o.DateSubmitted <= request.EndDate.Value);
            }

            if (request.DepositType != null)
            {
                filteredQueryable = filteredQueryable
                                    .Where(o => o.DepositType == request.DepositType.Value);
            }

            var orderedQueryable = filteredQueryable
                                   .OrderByDescending(o => o.DateSubmitted);

            var deposits = orderedQueryable
                           .Skip(pageSize * request.Page)
                           .Take(pageSize)
                           .ToList();

            var totalItemsCount = orderedQueryable.Count();

            var result = deposits.Select(o => new OfflineDeposit
            {
                Id              = o.Id,
                Amount          = o.Amount,
                AmountFormatted = o.Amount.Format(o.CurrencyCode, false),
                DateCreated     = o.DateSubmitted.ToString("yyyy/MM/dd HH:mm"),
                DepositType     = o.DepositType.ToString(),
                ReferenceCode   = o.ReferenceCode,
                UnverifyReason  = o.UnverifyReason?.ToDescription(),
                Status          = o.Status
            });

            return(new DepositHistoryResponse
            {
                Deposits = result,
                PageSize = pageSize,
                TotalItemsCount = totalItemsCount
            });
        }
Пример #2
0
        public async Task <GetDepositsResponse> GetDeposits(GetDepositsRequest request)
        {
            request.AddToActivityAsJsonTag("request-data");
            _logger.LogInformation("Receive GetDeposits request: {JsonRequest}", JsonConvert.SerializeObject(request));

            if (request.BatchSize % 2 != 0)
            {
                return new GetDepositsResponse
                       {
                           Success      = false,
                           ErrorMessage = "Butch size must be even"
                       }
            }
            ;

            try
            {
                await using var context = new DatabaseContext(_dbContextOptionsBuilder.Options);

                var query = context.Deposits.AsNoTracking();

                if (request.LastId > 0)
                {
                    query = query.Where(e => e.Id < request.LastId);
                }

                if (!string.IsNullOrWhiteSpace(request.WalletId))
                {
                    query = query.Where(e => e.WalletId == request.WalletId);
                }

                if (!string.IsNullOrWhiteSpace(request.AssetSymbol))
                {
                    query = query.Where(e => e.AssetSymbol == request.AssetSymbol);
                }

                var deposits = await query
                               .OrderByDescending(e => e.Id)
                               .Take(request.BatchSize)
                               .ToListAsync();

                var response = new GetDepositsResponse
                {
                    Success           = true,
                    DepositCollection = deposits.Select(e => new Deposit(e)).ToList(),
                    IdForNextQuery    = deposits.Count > 0 ? deposits.Min(d => d.Id) : 0
                };

                response.DepositCollection.Count.AddToActivityAsTag("response-count-items");
                _logger.LogInformation("Return GetDeposits response count items: {count}",
                                       response.DepositCollection.Count);
                return(response);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception,
                                 "Cannot get GetDeposits take: {takeValue}, LastId: {LastId}",
                                 request.BatchSize, request.LastId);
                return(new GetDepositsResponse {
                    Success = false, ErrorMessage = exception.Message
                });
            }
        }