public List <IQueryFilter> GetFilters() { var result = new List <IQueryFilter>(); var refObj = new MdMerchandise(); if (!string.IsNullOrEmpty(this.MaLoaiVatTu)) { var codeTypes = this.MaLoaiVatTu.Split(',').ToList(); IQueryFilter queryFilterByGroup = new QueryFilterLinQ(); if (this.MaNhomVatTu != null) { var codeGroups = this.MaNhomVatTu.Split(',').ToList(); queryFilterByGroup.Method = FilterMethod.In; queryFilterByGroup.Value = codeGroups; queryFilterByGroup.Property = ClassHelper.GetProperty(() => refObj.MaNhomVatTu); } result.Add(new QueryFilterLinQ { Method = FilterMethod.And, SubFilters = new List <IQueryFilter>() { new QueryFilterLinQ() { Property = ClassHelper.GetProperty(() => refObj.MaLoaiVatTu), Value = codeTypes, Method = FilterMethod.In }, queryFilterByGroup, new QueryFilterLinQ() { Method = FilterMethod.Or, SubFilters = new List <IQueryFilter>() { new QueryFilterLinQ { Property = ClassHelper.GetProperty(() => refObj.TenHang), Value = this.TenVatTu, Method = FilterMethod.Like }, new QueryFilterLinQ { Property = ClassHelper.GetProperty(() => refObj.MaVatTu), Value = this.MaVatTu, Method = FilterMethod.Like } } } } }); } else { result.Add(new QueryFilterLinQ() { Method = FilterMethod.Or, SubFilters = new List <IQueryFilter>() { new QueryFilterLinQ { Property = ClassHelper.GetProperty(() => refObj.TenHang), Value = this.TenVatTu, Method = FilterMethod.Like }, new QueryFilterLinQ { Property = ClassHelper.GetProperty(() => refObj.MaVatTu), Value = this.MaVatTu, Method = FilterMethod.Like } } }); } return(result); }
public async Task <ResultObj <PagedObj <TEntity> > > FilterAsync <TSearch>(FilterObj <TSearch> filtered, IQueryBuilder query = null) where TSearch : IDataSearch { query = query ?? new QueryBuilder(); var advanceData = filtered.AdvanceData; if (!filtered.IsAdvance) { advanceData.LoadGeneralParam(filtered.Summary); } var filters = advanceData.GetFilters(); if (filters.Count > 0) { var newQuery = new QueryFilterLinQ { Method = filtered.IsAdvance ? FilterMethod.And : FilterMethod.Or, SubFilters = filters, }; if (query.Filter == null) { query.Filter = newQuery; } else { query.Filter.MergeFilter(newQuery); } } var quickFilters = advanceData.GetQuickFilters(); if (quickFilters != null && quickFilters.Any()) { var newQuery = new QueryFilterLinQ { Method = FilterMethod.And, SubFilters = quickFilters, }; if (query.Filter == null) { query.Filter = newQuery; } else { query.Filter.MergeFilter(newQuery); } } // load order if (!string.IsNullOrEmpty(filtered.OrderBy)) { query.OrderBy(new QueryOrder { Field = filtered.OrderBy, MethodName = filtered.OrderType }); } // at lease one order for paging if (query.Orders.Count == 0) { query.OrderBy(new QueryOrder { Field = advanceData.DefaultOrder }); } // query var result = new ResultObj <PagedObj <TEntity> >(); try { var data = await QueryPagedAsync(query); result.Value = data; result.State = ResultState.Success; } catch (Exception ex) { result.SetException = ex; } return(result); }