public ActionResult GetPlistElements(GetPlistElements input) { if (!input.OntologyId.HasValue) { throw new ValidationException("必须传入本体标识"); } OntologyDescriptor ontology; if (!AcDomain.NodeHost.Ontologies.TryGetOntology(input.OntologyId.Value, out ontology)) { throw new ValidationException("意外的本体标识" + input.OntologyId); } EntityTypeState entityType; if (!AcDomain.EntityTypeSet.TryGetEntityType(new Coder("Edi", "Element"), out entityType)) { throw new AnycmdException("意外的实体类型Edi.Element"); } foreach (var filter in input.Filters) { PropertyState property; if (!AcDomain.EntityTypeSet.TryGetProperty(entityType, filter.field, out property)) { throw new ValidationException("意外的Element实体类型属性" + filter.field); } } int pageIndex = input.PageIndex; int pageSize = input.PageSize; var queryable = ontology.Elements.Values.Select(a => ElementTr.Create(a.Element)).AsQueryable(); foreach (var filter in input.Filters) { queryable = queryable.Where(filter.ToPredicate(), filter.value); } if (input.GroupId.HasValue) { queryable = queryable.Where(a => a.GroupId == input.GroupId.Value); } var list = queryable.OrderBy(input.SortField + " " + input.SortOrder).Skip(pageIndex * pageSize).Take(pageSize); return(this.JsonResult(new MiniGrid <ElementTr> { total = queryable.Count(), data = list })); }
public ActionResult GetPlistElements(GetPlistElements input) { if (!input.OntologyId.HasValue) { throw new ValidationException("必须传入本体标识"); } OntologyDescriptor ontology; if (!AcDomain.NodeHost.Ontologies.TryGetOntology(input.OntologyId.Value, out ontology)) { throw new ValidationException("意外的本体标识" + input.OntologyId); } EntityTypeState entityType; if (!AcDomain.EntityTypeSet.TryGetEntityType(new Coder("Edi", "Element"), out entityType)) { throw new AnycmdException("意外的实体类型Edi.Element"); } foreach (var filter in input.Filters) { PropertyState property; if (!AcDomain.EntityTypeSet.TryGetProperty(entityType, filter.field, out property)) { throw new ValidationException("意外的Element实体类型属性" + filter.field); } } int pageIndex = input.PageIndex; int pageSize = input.PageSize; var queryable = ontology.Elements.Values.Select(a => ElementTr.Create(a.Element)).AsQueryable(); foreach (var filter in input.Filters) { queryable = queryable.Where(filter.ToPredicate(), filter.value); } if (input.GroupId.HasValue) { queryable = queryable.Where(a => a.GroupId == input.GroupId.Value); } var list = queryable.OrderBy(input.SortField + " " + input.SortOrder).Skip(pageIndex * pageSize).Take(pageSize); return this.JsonResult(new MiniGrid<ElementTr> { total = queryable.Count(), data = list }); }