public async Task <IActionResult> FilterExpenses([FromQuery] ExpenseFilterRequestDTO requestDTO) { var result = await _expensesService.GetExpensesWithFilter(requestDTO); var mapResult = _mapper.Map <List <Expenses>, List <ExpenseResponseDTO> >(result); return(new OkObjectResult(mapResult)); }
public async Task <List <Domain.Model.Income.Expenses> > GetExpensesWithFilter(ExpenseFilterRequestDTO filterRequestDTO) { var query = _repository.QueryWithoutTracking <Domain.Model.Income.Expenses>().Where(q => q.Status == StatusType.Active); if (filterRequestDTO.BankAccountId.HasValue) { query = query.Where(q => q.BankAccount.Id == filterRequestDTO.BankAccountId); } if (!string.IsNullOrEmpty(filterRequestDTO.Description)) { query = query.Where(q => q.Description.Contains(filterRequestDTO.Description)); } if (filterRequestDTO.ExpenseType.HasValue) { query = query.Where(q => q.Type == filterRequestDTO.ExpenseType.Value); } if (!string.IsNullOrEmpty(filterRequestDTO.DocumentNumber)) { query = query.Where(q => q.DocumentNumber == filterRequestDTO.DocumentNumber); } if (filterRequestDTO.Expiry.HasValue) { query = query.Where(q => q.Expiry == filterRequestDTO.Expiry.Value); } if (filterRequestDTO.ExpiryDate.HasValue) { query = query.Where(q => q.ExpiryDate == filterRequestDTO.ExpiryDate.Value); } query = query.Skip(filterRequestDTO.Start * filterRequestDTO.Length).Take(filterRequestDTO.Length); var expenseList = await query.Include(q => q.BankAccount).ToListAsync(); return(expenseList); }