Exemplo n.º 1
0
        public async Task <PaymentRequestData[]> FindPaymentRequests(PaymentRequestQuery query, CancellationToken cancellationToken = default)
        {
            using var context = _ContextFactory.CreateContext();
            var queryable = context.PaymentRequests.Include(data => data.StoreData).AsQueryable();

            if (!query.IncludeArchived)
            {
                queryable = queryable.Where(data => !data.Archived);
            }
            if (!string.IsNullOrEmpty(query.StoreId))
            {
                queryable = queryable.Where(data =>
                                            data.StoreDataId == query.StoreId);
            }

            if (query.Status != null && query.Status.Any())
            {
                queryable = queryable.Where(data =>
                                            query.Status.Contains(data.Status));
            }

            if (query.Ids != null && query.Ids.Any())
            {
                queryable = queryable.Where(data =>
                                            query.Ids.Contains(data.Id));
            }

            if (!string.IsNullOrEmpty(query.UserId))
            {
                queryable = queryable.Where(i =>
                                            i.StoreData != null && i.StoreData.UserStores.Any(u => u.ApplicationUserId == query.UserId));
            }

            queryable = queryable.OrderByDescending(u => u.Created);

            if (query.Skip.HasValue)
            {
                queryable = queryable.Skip(query.Skip.Value);
            }

            if (query.Count.HasValue)
            {
                queryable = queryable.Take(query.Count.Value);
            }
            var items = await queryable.ToArrayAsync(cancellationToken);

            return(items);
        }
Exemplo n.º 2
0
        public async Task <(int Total, PaymentRequestData[] Items)> FindPaymentRequests(PaymentRequestQuery query, CancellationToken cancellationToken = default)
        {
            using (var context = _ContextFactory.CreateContext())
            {
                var queryable = context.PaymentRequests.Include(data => data.StoreData).AsQueryable();
                if (!string.IsNullOrEmpty(query.StoreId))
                {
                    queryable = queryable.Where(data =>
                                                data.StoreDataId.Equals(query.StoreId, StringComparison.InvariantCulture));
                }

                if (query.Status != null && query.Status.Any())
                {
                    queryable = queryable.Where(data =>
                                                query.Status.Contains(data.Status));
                }

                if (!string.IsNullOrEmpty(query.UserId))
                {
                    queryable = queryable.Where(i =>
                                                i.StoreData != null && i.StoreData.UserStores.Any(u => u.ApplicationUserId == query.UserId));
                }

                var total = await queryable.CountAsync(cancellationToken);

                queryable = queryable.OrderByDescending(u => u.Created);

                if (query.Skip.HasValue)
                {
                    queryable = queryable.Skip(query.Skip.Value);
                }

                if (query.Count.HasValue)
                {
                    queryable = queryable.Take(query.Count.Value);
                }
                return(total, await queryable.ToArrayAsync(cancellationToken));
            }
        }