예제 #1
0
        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)));
 }