Example #1
0
        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
            }));
        }
Example #2
0
        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 });
        }