private Expression <Func <PaymentLogEntryDbModel, bool> > ComposeFilter(PaymentLogsFilter filter) { var exp = base.ComposeBaseFilter <PaymentLogEntryDbModel>(filter); if (!string.IsNullOrWhiteSpace(filter.RecieverId)) { exp = PredicateExtensions.And(exp, entry => entry.RecieverId.ToLower().Contains(filter.RecieverId.ToLower())); } if (!string.IsNullOrWhiteSpace(filter.SenderId)) { exp = PredicateExtensions.And(exp, entry => entry.SenderId.ToLower().Contains(filter.SenderId.ToLower())); } if (filter.MinTransfer.HasValue) { exp = PredicateExtensions.And(exp, entry => entry.Transfer >= filter.MinTransfer.Value); } if (filter.MaxTransfer.HasValue) { exp = PredicateExtensions.And(exp, entry => entry.Transfer <= filter.MaxTransfer.Value); } return(exp); }
public async Task <IEnumerable <PaymentLogEntry> > GetLogsAsync(PaymentLogsFilter filter) { var dbModels = await Context .PaymentLogEntries .Where(ComposeFilter(filter)) .ToListAsync() .ConfigureAwait(false); return(Mapper.Map <IEnumerable <PaymentLogEntry> >(dbModels)); }
public async Task <IActionResult> GetPaymentLogs([FromQuery] PaymentLogsFilter filter) { var result = await _loggingService.GetLogsAsync(filter); return(Ok(result)); }