public static List <TreeViewItemModel> ToKendoTreeViewItemModelList_todo(this DocumentTreeModels documents) { List <Kendo.Mvc.UI.TreeViewItemModel> result = null; if (documents?.Documents == null || !documents.Documents.Any()) { return(null); } var topMenuItems = DocumentTreeModelsExtensions.GetChildItems(documents, 0); result = new List <TreeViewItemModel>(); foreach (var topMenuItem in topMenuItems) { TreeViewItemModel topMenuTreeItem = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(topMenuItem); result.Add(topMenuTreeItem); if (!topMenuItem.IsDocument) { var children = DocumentTreeModelsExtensions.GetChildItems(documents, topMenuItem.Id); if (children != null && children.Any()) { DocumentTreeModelsExtensions.ProcessSubDocuments(documents, children, ref topMenuTreeItem); } } } return(result); }
private static DocumentTreeModels CreateDocumentsNoSubItems2() { //a combination of top level documents (parent ID of 0) and documents with a parent that is NOT 0 DocumentTreeModels result = new DocumentTreeModels(); DocumentTreeModel document = new DocumentTreeModel { Id = 1, Name = "Development Strategy.docx", IsDocument = true, ParentId = 99 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 2, Name = "Coding standards.docx", IsDocument = true, ParentId = 99 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 3, Name = "Testing Strategy.docx", IsDocument = true, ParentId = 0 }; result.Documents.Add(document); return(result); }
private static DocumentTreeModels CreateDocumentsNoSubItems() { // all the documents are top level documents with a parent ID of 0 DocumentTreeModels result = new DocumentTreeModels(); DocumentTreeModel document = new DocumentTreeModel { Id = 1, Name = "Development Strategy.docx", IsDocument = true, ParentId = 0 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 2, Name = "Coding standards.docx", IsDocument = true, ParentId = 0 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 3, Name = "Testing Strategy.docx", IsDocument = true, ParentId = 0 }; result.Documents.Add(document); return(result); }
/// <summary> /// Convert a list of documents into a Kendo UI tree view for display on the DocumentManager.cshtml page. /// </summary> /// <param name="documents"></param> /// <returns></returns> public static List <TreeViewItemModel> ToKendoTreeViewItemModelList(this DocumentTreeModels documents) { List <Kendo.Mvc.UI.TreeViewItemModel> result = null; if (documents?.Documents == null || !documents.Documents.Any()) { return(null); } var topMenuItems = DocumentTreeModelsExtensions.GetTopLevelItems(documents, 0); result = new List <TreeViewItemModel>(); foreach (var topMenuItem in topMenuItems) { TreeViewItemModel topMenuTreeItem = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(topMenuItem); var children = DocumentTreeModelsExtensions.GetChildItems(documents, topMenuItem.Id); if (children != null && children.Any()) { foreach (var child in children) { var subTopTree = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(child); topMenuTreeItem.Items.Add(subTopTree); var subchildren = DocumentTreeModelsExtensions.GetChildItems(documents, child.Id); if (subchildren == null || !subchildren.Any()) { continue; } foreach (var subchild in subchildren) { var subsubTopTree = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(subchild); subTopTree.Items.Add(subsubTopTree); var subsubchildren = DocumentTreeModelsExtensions.GetChildItems(documents, subchild.Id); if (subsubchildren == null || !subsubchildren.Any()) { continue; } foreach (var subsubchild in subsubchildren) { var subsubTreechild = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(subsubchild); subsubTopTree.Items.Add(subsubTreechild); } } } } result.Add(topMenuTreeItem); } return(result); }
private static void ProcessSubDocuments(DocumentTreeModels documents, List <DocumentTreeModel> children, ref TreeViewItemModel parent) { foreach (var child in children) { var item = DocumentTreeModelsExtensions.CreateKendoTreeViewModel(child); parent.Items.Add(DocumentTreeModelsExtensions.CreateKendoTreeViewModel(child)); if (!child.IsDocument) { var subchildren = DocumentTreeModelsExtensions.GetChildItems(documents, child.Id); if (subchildren == null || !subchildren.Any()) { continue; } DocumentTreeModelsExtensions.ProcessSubDocuments(documents, subchildren, ref item); } } }
/// <summary> /// Return the documents for the specified user /// </summary> /// <param name="email"></param> /// <param name="rooturl"></param> /// <param name="encodedId"></param> /// <returns></returns> public async Task <DocumentTreeModels> GetDocumentsForDocumentTree(string email, string rooturl, string encodedId) { DocumentTreeModels result = null; string url = $"{rooturl}api/documents?useremail={email}"; if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(url) || string.IsNullOrEmpty(encodedId)) { return(null); } LoggingService service = new LoggingService(); var stopwatch = new Stopwatch(); try { string response = await new WebApiServices().GetData(url, encodedId); if (!string.IsNullOrEmpty(response)) { result = new SerializerServices() .DeserializeObject <DocumentTreeModels>(response.NormalizeJsonString()); } } catch (Exception ex) { service.TrackException(ex); throw; } finally { stopwatch.Stop(); var properties = new Dictionary <string, string> { { "UserEmail", email }, { "WebServicesEndpoint", rooturl }, { "EncodedId", encodedId } }; service.TrackEvent(LoggingServiceConstants.GetDocumentsForDocumentTree, stopwatch.Elapsed, properties); } return(result); }
private static DocumentTreeModels CreateDocuments2() { DocumentTreeModels result = new DocumentTreeModels(); DocumentTreeModel document = new DocumentTreeModel { Id = 1, Name = "Development", IsDocument = false, ParentId = 0 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 2, Name = "Coding standards.docx", IsDocument = true, ParentId = 1 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 3, Name = "Testing document.docx", IsDocument = true, ParentId = 99 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 4, Name = "Testing strategy.docx", IsDocument = true, ParentId = 101 }; result.Documents.Add(document); return(result); }
private static List <DocumentTreeModel> GetChildItems(DocumentTreeModels documents, int documentId) { return(documents.Documents.FindAll(m => m.ParentId == documentId)); }
private static List <DocumentTreeModel> GetTopLevelItems(DocumentTreeModels documents, int documentId) { return(documents.Documents.FindAll(m => m.ParentId == documentId || m.ParentId > 0 && documents.Documents.Count(s => s.Id == m.ParentId) == 0)); }
private static DocumentTreeModels CreateDocuments() { DocumentTreeModels result = new DocumentTreeModels(); DocumentTreeModel document = new DocumentTreeModel { Id = 1, Name = "Development", IsDocument = false, ParentId = 0 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 2, Name = "Coding standards.docx", IsDocument = true, ParentId = 1 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 3, Name = "Testing", IsDocument = false, ParentId = 1 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 4, Name = "Testing strategy.docx", IsDocument = true, ParentId = 3 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 5, Name = "Customers", IsDocument = false, ParentId = 0 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 6, Name = "Spirax", IsDocument = false, ParentId = 5 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 7, Name = "Contract.docx", IsDocument = true, ParentId = 6 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 8, Name = "Terms and conditions.docx", IsDocument = true, ParentId = 6 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 9, Name = "Unit Testing", IsDocument = false, ParentId = 3 }; result.Documents.Add(document); document = new DocumentTreeModel { Id = 10, Name = "Unit Testing.docx", IsDocument = false, ParentId = 9 }; result.Documents.Add(document); return(result); }