public async Task <IEnumerable <PaymentTransactionDto> > GetTransactions(GetPaymentTransactionsQuery query) { var result = _dbContext.PaymentTranstactions .AsNoTracking(); result = query.Currency is null ? result : result.Where(p => p.Currency == query.Currency); result = query.From is null ? result : result.Where(p => p.TransactionDate > query.From); result = query.To is null ? result : result.Where(p => p.TransactionDate < query.To); result = query.Status is null ? result : result.Where(p => p.Status == query.Status); var res = (await result.Select(x => new { x.Id, x.Amount, x.Currency, x.Status }) .ToListAsync()) .Select(p => new PaymentTransactionDto { Id = p.Id, Status = p.Status, Payment = $"{p.Amount} {p.Currency}" }); return(res); }
public async Task QueryDataProperlyByParams(string url, string from, string to, string currency, PaymentTransactionStatus?status) { GetPaymentTransactionsQuery query = default; await _queriesMock.GetTransactions(Arg.Do <GetPaymentTransactionsQuery>(q => query = q)); var result = await _client.GetAsync(url); query.Should().BeEquivalentTo(new GetPaymentTransactionsQuery { Currency = currency, From = from is null? (DateTime?)null : DateTime.Parse(from), To = to is null ? (DateTime?)null : DateTime.Parse(to), Status = status });
public async Task <ActionResult <IEnumerable <PaymentTransactionDto> > > Get([FromQuery] GetPaymentTransactionsQuery query) { var result = await _transtactionQueries.GetTransactions(query); return(Ok(result)); }