示例#1
0
        public IVmListItemsData <IVmTreeItem> GetFilteredTree(IVmGetFilteredTree vmGetFilteredTree)
        {
            var treeType = Enum.Parse(typeof(TreeTypeEnum), vmGetFilteredTree.TreeType);
            VmListItemsData <IVmTreeItem> result = null;//new VmListItemsData<IVmTreeItem>();// { FilteredTree = new List<VmTreeItem>(), TreeType = vmGetFilteredTree.TreeType };
            var lowerValue = vmGetFilteredTree.SearchValue?.ToLower();

            contextManager.ExecuteReader(unitOfWork =>
            {
                switch ((TreeTypeEnum)treeType)
                {
                case TreeTypeEnum.ServiceClass:
                    var scFiltered = SearchFintoTree <ServiceClass, ServiceClassName>(unitOfWork, vmGetFilteredTree);
                    result         = new VmListItemsData <IVmTreeItem>(CreateTree <VmFilteredTreeItem, IVmTreeItem>(scFiltered, x => x.Name));
                    break;

                case TreeTypeEnum.IndustrialClass:
                    result = new VmListItemsData <IVmTreeItem>(CreateTree <VmFilteredTreeItem, IVmTreeItem>(SearchFintoList <IndustrialClass, IndustrialClassName>(unitOfWork, vmGetFilteredTree.SearchValue, industrialClassLevel), x => x.Name));
                    break;

                case TreeTypeEnum.OntologyTerm:
                    var owFiltered    = SearchFintoTree(unitOfWork, vmGetFilteredTree).ToList();
                    var ontologyTerms = owFiltered.SelectMany(x => x.Parents).Any() ? owFiltered.SelectMany(x => x.Parents).Select(x => x.Parent) : owFiltered;
                    result            = new VmListItemsData <IVmTreeItem>(CreateTree <VmExpandedVmTreeItem>(ontologyTerms));
                    break;

                case TreeTypeEnum.AnnotationOntologyTerm:
                    var aotFiltered             = SearchAnnotationFintoTree(unitOfWork, vmGetFilteredTree).ToList();
                    var annotationOntologyTerms = aotFiltered.SelectMany(x => x.Parents).Any() ? aotFiltered.SelectMany(x => x.Parents).Select(x => x.Parent) : aotFiltered;
                    result = new VmListItemsData <IVmTreeItem>(CreateTree <VmExpandedVmTreeItem>(annotationOntologyTerms));
                    break;

                case TreeTypeEnum.LifeEvent:
                    var leFiltered = SearchFintoTree <LifeEvent, LifeEventName>(unitOfWork, vmGetFilteredTree);
                    result         = new VmListItemsData <IVmTreeItem>(CreateTree <VmFilteredTreeItem, IVmTreeItem>(leFiltered, x => x.Name));
                    break;

                case TreeTypeEnum.Organization:
                    result = new VmListItemsData <IVmTreeItem>(CreateTree <VmExpandedVmTreeItem>(SearchOrganizationTree(unitOfWork, vmGetFilteredTree.SearchValue)));
                    break;

                case TreeTypeEnum.DigitalAuthorization:
                    var daFiltered = SearchFintoTree <DigitalAuthorization, DigitalAuthorizationName>(unitOfWork, vmGetFilteredTree);
                    result         = new VmListItemsData <IVmTreeItem>(CreateTree <VmFilteredTreeItem, IVmTreeItem>(daFiltered, x => x.Name));
                    break;

                default:
                    break;
                }
            });

            return(result);
        }
示例#2
0
        private IEnumerable <T> SearchFintoTree <T, TName>(IUnitOfWork unitOfWork, IVmGetFilteredTree searchTerm) where T : class, IFintoItem, IHierarchy <T>, IEntityIdentifier, IFintoItemNames <TName> where TName : NameBase
        {
            var owRep   = unitOfWork.CreateRepository <IRepository <T> >();
            var owQuery = owRep.All();

            if (searchTerm.Id.IsAssigned())
            {
                owQuery = owQuery.Where(x => x.Id == searchTerm.Id || x.ParentId == searchTerm.Id);
            }
            else
            {
                string lowerValue = searchTerm.SearchValue.ToLower();
                owQuery = owQuery.Where(x => x.Names.Any(n => n.Name.ToLower().Contains(lowerValue)));
            }
            owQuery = unitOfWork.ApplyIncludes(owQuery, q => q.Include(i => i.Names).ThenInclude(i => i.Localization));
            var searchResult = SearchTree(owRep.All(), owQuery.OrderBy(x => x.Label));

            return(searchResult);
        }
示例#3
0
        public IVmListItemsData <VmListItem> Search(IVmGetFilteredTree vmGetFilteredTree)
        {
            var treeType = Enum.Parse(typeof(TreeTypeEnum), vmGetFilteredTree.TreeType);


            IEnumerable <IFintoItemBase> searchResult = null;

            contextManager.ExecuteReader(unitOfWork =>
            {
                switch ((TreeTypeEnum)treeType)
                {
                case TreeTypeEnum.ServiceClass:
                    searchResult = SearchFintoList <ServiceClass, ServiceClassName>(unitOfWork, vmGetFilteredTree.SearchValue);
                    break;

                case TreeTypeEnum.IndustrialClass:
                    searchResult = SearchFintoList <IndustrialClass, IndustrialClassName>(unitOfWork, vmGetFilteredTree.SearchValue, industrialClassLevel);
                    break;

                case TreeTypeEnum.OntologyTerm:
                    searchResult = SearchFintoList <OntologyTerm, OntologyTermName>(unitOfWork, vmGetFilteredTree.SearchValue, languages: vmGetFilteredTree.Languages);
                    break;

                case TreeTypeEnum.LifeEvent:
                    searchResult = SearchFintoList <LifeEvent, LifeEventName>(unitOfWork, vmGetFilteredTree.SearchValue);
                    break;

                case TreeTypeEnum.DigitalAuthorization:
                    searchResult = SearchFintoList <DigitalAuthorization, DigitalAuthorizationName>(unitOfWork, vmGetFilteredTree.SearchValue);
                    break;

                default:
                    searchResult = new List <IFintoItem>();
                    break;
                }
            });
            var result = new VmListItemsData <VmListItem>(TranslationManagerToVm.TranslateAll <IFintoItemBase, VmListItem>(searchResult.ToList()).ToList());

            return(result);
        }
示例#4
0
        private IEnumerable <OntologyTerm> SearchFintoTree(IUnitOfWork unitOfWork, IVmGetFilteredTree searchTerm)
        {
            var owRep   = unitOfWork.CreateRepository <IRepository <OntologyTerm> >();
            var owQuery = owRep.All();

            if (searchTerm.Id.IsAssigned())
            {
                owQuery = owQuery.Where(x => x.Id == searchTerm.Id);
            }
            else
            {
                string lowerValue = searchTerm.SearchValue?.ToLower();
//                owQuery = owQuery.Where(x => x.Label.ToLower().Contains(lowerValue));
                owQuery = owQuery.Where(x => x.Names.Any(n => n.Name.ToLower().Contains(lowerValue)));
            }
//            var searchResult = SearchTree(owRep.All(), owQuery);
            var searchResult = unitOfWork.ApplyIncludes(owQuery.OrderBy(x => x.Label),
                                                        q => q.Include(x => x.Children).ThenInclude(x => x.Child).ThenInclude(x => x.Names)
                                                        .Include(x => x.Parents).ThenInclude(x => x.Parent).ThenInclude(x => x.Names)
                                                        .Include(x => x.Names)
                                                        );

            return(searchResult);
        }
示例#5
0
 public IVmListItemsData <IVmTreeItem> GetAnnotationHierarchy(IVmGetFilteredTree model)
 {
     model.TreeType    = TreeTypeEnum.AnnotationOntologyTerm.ToString();
     model.SearchValue = string.Empty;
     return(GetFilteredTree(model));
 }
示例#6
0
        private IEnumerable <OntologyTerm> SearchAnnotationFintoTree(IUnitOfWork unitOfWork, IVmGetFilteredTree searchTerm)
        {
            var owRep   = unitOfWork.CreateRepository <IRepository <OntologyTerm> >();
            var owQuery = owRep.All();

            if (searchTerm.Id.IsAssigned())
            {
                owQuery = owQuery.Where(x => x.Id == searchTerm.Id);
            }

            var searchResult = unitOfWork.ApplyIncludes(owQuery.OrderBy(x => x.Label),
                                                        q => q.Include(x => x.Parents).ThenInclude(x => x.Parent).ThenInclude(x => x.Names)
                                                        .Include(x => x.Names));

            return(searchResult);
        }