public async Task <ServiceResponseWithPagination <List <mProductAudit> > > GetProductAuditWithFilter(GetProductAuditFilterDto ProductAuditFilter) { var Queryable = _dbContext.ProductAudits .Include(x => x.ProductAuditType) .Include(x => x.ProductGroup) .Include(x => x.Product) .AsQueryable(); if (!string.IsNullOrWhiteSpace(ProductAuditFilter.Name)) { Queryable = Queryable.Where(x => x.Name.Contains(ProductAuditFilter.Name)); } if (ProductAuditFilter.Remark != null) { Queryable = Queryable.Where(x => x.Remark == ProductAuditFilter.Remark); } if (ProductAuditFilter.ProductGroupId != null) { Queryable = Queryable.Where(x => x.ProductGroupId == ProductAuditFilter.ProductGroupId); } if (!string.IsNullOrWhiteSpace(ProductAuditFilter.OrderingField)) { try { Queryable = Queryable.OrderBy($"{ProductAuditFilter.OrderingField} {(ProductAuditFilter.AscendingOrder ? "ascending" : "descending")}"); } catch { return(ResponseResultWithPagination.Failure <List <mProductAudit> >($"Could not order by field: {ProductAuditFilter.OrderingField}")); } ; } var paginationResult = await _httpcontext.HttpContext.InsertPaginationParametersInResponse(Queryable, ProductAuditFilter.RecordsPerPage, ProductAuditFilter.Page); var dto = await Queryable.Paginate(ProductAuditFilter).ToListAsync(); return(ResponseResultWithPagination.Success(dto, paginationResult)); }
public async Task <IActionResult> GetProductAuditWithFilter([FromQuery] GetProductAuditFilterDto filter) { return(Ok(await _prodService.GetProductAuditWithFilter(filter))); }