Beispiel #1
0
        public static void AddPaging(this HttpContext httpContext, IPagingResult pagingResult)
        {
            if (httpContext == null)
            {
                return;
            }

            if (pagingResult == null)
            {
                throw new ArgumentNullException(nameof(pagingResult));
            }

            httpContext.Response.Headers.Add(HeaderNumberOfPagesName, pagingResult.TotalItems.ToString(CultureInfo.InvariantCulture));
        }
Beispiel #2
0
 public QueryResult(object data, IPagingResult paging = null, string message = null)
     : base(message)
 {
     Data   = data;
     Paging = paging;
 }
        protected override async ValueTask <IResult <GetTransactionsQueryOutput> > HandleImpl(GetTransactionsQuery request, CancellationToken cancellationToken)
        {
            IPagingResult paging = null;
            var           order  = request.Order ?? Order.Descending;

            var query = _transactionRepository.GetAll();

            if (request.Filter != null)
            {
                if (request.Filter.From.HasValue)
                {
                    query = query.Where(t => t.CreatedAt >= request.Filter.From.Value);
                }
                if (request.Filter.To.HasValue)
                {
                    query = query.Where(t => t.CreatedAt <= request.Filter.To.Value);
                }
                if (request.Filter.AssetId.HasValue)
                {
                    query = query.Where(t => t.AssetId == request.Filter.AssetId.Value);
                }
                if (request.Filter.GroupId.HasValue)
                {
                    query = query.Where(t => t.Asset.GroupId == request.Filter.GroupId.Value);
                }
            }

            query = order == Order.Descending
                        ? query.OrderByDescending(t => t.CreatedAt)
                        : query.OrderBy(t => t.CreatedAt);

            if (request.Paging != null)
            {
                var totalTrans = await query.CountAsync(cancellationToken)
                                 .ConfigureAwait(false);

                query = query.Skip((int)(request.Paging.Page * request.Paging.Items))
                        .Take((int)request.Paging.Items);

                paging = new PagingResult(totalTrans);
            }

            var transactions = await query.ToListAsync(cancellationToken)
                               .ConfigureAwait(false);

            var currencies = await _currencyRepository.GetAll()
                             .ToListAsync(cancellationToken)
                             .ConfigureAwait(false);

            var assets = await _assetRepository.GetAll()
                         .ToListAsync(cancellationToken)
                         .ConfigureAwait(false);

            var groups = await _groupRepository.GetAll()
                         .ToListAsync(cancellationToken)
                         .ConfigureAwait(false);


            var models = transactions.Select(_mapper.Map <Transaction, TransactionModel>).ToList();

            foreach (var model in models)
            {
                if (currencies.Found(model.CurrencyId, out var currency))
                {
                    model.Currency = _mapper.Map <Currency, CurrencyModel>(currency);
                }

                if (assets.Found(model.AssetId, out var asset))
                {
                    model.Asset = _mapper.Map <Asset, AssetModel>(asset);


                    if (groups.Found(asset.GroupId, out var group))
                    {
                        model.Asset.Group = _mapper.Map <Group, GroupModel>(group);
                    }
                }

                if (model.FeeCurrencyId.HasValue && currencies.Found(model.FeeCurrencyId.Value, out var feeCurrency))
                {
                    model.FeeCurrency = _mapper.Map <Currency, CurrencyModel>(feeCurrency);
                }
            }

            var output = new GetTransactionsQueryOutput
            {
                Transactions = models,
                Paging       = paging
            };

            return(output.AsResult());
        }