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); }
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); }
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); }
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); }
public IVmListItemsData <IVmTreeItem> GetAnnotationHierarchy(IVmGetFilteredTree model) { model.TreeType = TreeTypeEnum.AnnotationOntologyTerm.ToString(); model.SearchValue = string.Empty; return(GetFilteredTree(model)); }
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); }