public async Task <SearchResult <Transaction> > SearchTransaction(TransactionSearchOptions searchOptions) { IQueryable <Transaction> query = this.db.Transactions; if (searchOptions.CurrencyCode.HasValue) { query = query.Where(x => x.CurrencyCode == searchOptions.CurrencyCode.Value); } if (searchOptions.Status.HasValue) { query = query.Where(x => x.Status == searchOptions.Status.Value); } if (searchOptions.FromDate.HasValue) { query = query.Where(x => x.TransactionDate >= searchOptions.FromDate.Value); } if (searchOptions.ToDate.HasValue) { query = query.Where(x => x.TransactionDate <= searchOptions.ToDate.Value); } return(new SearchResult <Transaction> { Count = await query.CountAsync(), Items = await query .Skip(searchOptions.Skip) .Take(searchOptions.Take) .ToArrayAsync(), }); }
private static string GetTransactionSearchPath(string transactionType, TransactionSearchOptions searchOptions, Dictionary <string, string> optionalParams = null) { if (searchOptions == null) { throw new ArgumentNullException(nameof(searchOptions)); } var queryString = searchOptions.GetQueryParamters(); if (optionalParams != null && optionalParams.Count > 0) { queryString = $"{queryString}&{optionalParams.GetQueryParameters()}"; } return($"{string.Format(TransactionSearchPath, transactionType)}?{queryString}"); }
public Task <SearchResponse> SearchByTransactionAsync(string transactionType, TransactionSearchOptions searchOptions, Dictionary <string, string> optionalParams = null) { return(GetAsync <SearchResponse>(GetTransactionSearchPath(transactionType, searchOptions, optionalParams))); }