private static Expression <Func <Department, bool> > Filter(DepartmentQueryRequest filter) { var query = PredicateBuilder.True <Department>(); if (filter != null) { if (!String.IsNullOrWhiteSpace(filter.NamePrefix)) { query = PredicateBuilder.And(query, v => v.Name.StartsWith(filter.NamePrefix)); } if (!String.IsNullOrWhiteSpace(filter.Name)) { query = PredicateBuilder.And(query, v => v.Name.Equals(filter.Name)); } if (filter.StoreId != null) { query = PredicateBuilder.And(query, v => v.StoreId == filter.StoreId.Value); } if (filter.StoreId == null && filter.DataRoleStores != null) { query = PredicateBuilder.And(query, v => filter.DataRoleStores.Contains(v.StoreId)); } } return(query); }
public PagerInfo <DepartmentDto> GetPagedList(PagerRequest pagerRequest, DepartmentQueryRequest request) { var departmentFilter = Filter(request); using (var db = GetYintaiHZhouContext()) { var departments = db.Departments; var stores = db.Stores; var q = from department in departments.AsExpandable().Where(departmentFilter) join store in stores on department.StoreId equals store.Id select new DepartmentDto { Id = department.Id, Name = department.Name, StoreId = store.Id, StoreName = store.Name, SortOrder = department.SortOrder }; var total = q.Count(); var lst = q.OrderByDescending(v => v.SortOrder).Skip(pagerRequest.SkipCount).Take(pagerRequest.PageSize).ToList(); return(new PagerInfo <DepartmentDto>(pagerRequest, total, lst)); } }
public IHttpActionResult GetList([FromUri] DepartmentQueryRequest request, [UserProfile] UserProfile userProfile) { IHttpActionResult httpActionResult; var result = CheckDataRoleAndArrangeParams(request, userProfile, out httpActionResult); if (!result) { return(httpActionResult); } var dto = _departmentRepository.GetPagedList(request.PagerRequest, request); return(RetrunHttpActionResult(dto)); }