public static Folder_V3         tmFolder(this urn.microsoft.guidanceexplorer.Folder folder, Guid libraryId, TM_Xml_Database tmDatabase)
        {
            if (folder.isNull())
            {
                return(null);
            }
            if (folder.folderId.isNull())                               // handle legacy case where there is no folderId in the guidanceitems object
            {
                folder.folderId = Guid.NewGuid().str();
            }
            var tmFolder = new Folder_V3
            {
                libraryId  = libraryId,
                name       = folder.caption,
                folderId   = folder.folderId.guid(),
                subFolders = tmDatabase.tmFolders(libraryId, folder.folder1)
            };

            foreach (var view in folder.view)
            {
                tmFolder.views.Add(new View_V3  {
                    viewId = view.id.guid()
                });
            }
            return(tmFolder);
        }
 [EditArticles]  public static urn.microsoft.guidanceexplorer.Folder xmlDB_Add_Folder(this TM_Library tmLibrary, Guid parentFolderId, string folderCaption, TM_Xml_Database tmDatabase)
 {
     try
     {
         var newFolder = new urn.microsoft.guidanceexplorer.Folder
         {
             caption  = folderCaption,
             folderId = Guid.NewGuid().str()
         };
         var guidanceExplorer = tmLibrary.guidanceExplorer(tmDatabase);
         if (parentFolderId == Guid.Empty)
         {
             //adding a folder to the library
             guidanceExplorer.library.libraryStructure.folder.Add(newFolder);
         }
         else
         {
             //adding a folder to folder
             var folder = tmDatabase.xmlDB_Folder(tmLibrary.Id, parentFolderId);
             if (folder == null)
             {
                 "[xmlDB_Add_Folder] couldn't find parent folder (to add folder) with id: {0}".error(parentFolderId);
                 return(null);
             }
             folder.folder1.Add(newFolder);
         }
         guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase);
         return(tmDatabase.xmlDB_Folder(tmLibrary.Id, newFolder.folderId.guid()));
     }
     catch (Exception ex)
     {
         ex.log();
         return(null);
     }
 }
 public static urn.microsoft.guidanceexplorer.Folder xmlDB_Add_Folder(this TM_Library tmLibrary, Guid parentFolderId, string folderCaption, TM_Xml_Database tmDatabase)
 {
     try
     {
         var newFolder = new urn.microsoft.guidanceexplorer.Folder
             {
                     caption = folderCaption,
                     folderId = Guid.NewGuid().str()
                 };
         var guidanceExplorer= tmLibrary.guidanceExplorer(tmDatabase);
         if (parentFolderId == Guid.Empty)
         {
             //adding a folder to the library
             guidanceExplorer.library.libraryStructure.folder.Add(newFolder);
         }
         else
         {
             //adding a folder to folder
             var folder = tmDatabase.xmlDB_Folder(tmLibrary.Id, parentFolderId);
             if (folder == null)
             {
                 "[xmlDB_Add_Folder] couldn't find parent folder (to add folder) with id: {0}".error(parentFolderId);
                 return null;
             }
             folder.folder1.Add(newFolder);
         }
         guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase);
         return tmDatabase.xmlDB_Folder(tmLibrary.Id, newFolder.folderId.guid());
     }
     catch(Exception ex)
     {
         ex.log();
         return null;
     }
 }
 public static List <urn.microsoft.guidanceexplorer.View> xmlDB_Views(this urn.microsoft.guidanceexplorer.Folder folder)
 {
     if (folder.notNull())
     {
         return(folder.view.toList());
     }
     return(new List <urn.microsoft.guidanceexplorer.View>());
 }
        public static IList <urn.microsoft.guidanceexplorer.Folder> xmlDB_Folders_All(this TM_Xml_Database tmDatabase, urn.microsoft.guidanceexplorer.Folder folderToMap)
        {
            var folders = new List <urn.microsoft.guidanceexplorer.Folder> ();

            if (folderToMap.notNull())
            {
                folders.add(folderToMap);
                folders.AddRange(tmDatabase.xmlDB_Folders_All(folderToMap.folder1));
            }
            return(folders);
        }
 public static IList <urn.microsoft.guidanceexplorer.Folder> xmlDB_Folders(this urn.microsoft.guidanceexplorer.Folder folderToMap)
 {
     return(folderToMap.isNull()
                 ? new List <urn.microsoft.guidanceexplorer.Folder>()
                 : folderToMap.folder1);
 }
 public static urn.microsoft.guidanceexplorer.View           xmlDB_View(this urn.microsoft.guidanceexplorer.Folder folder, string viewCaption)
 {
     return((from view in folder.view
             where view.caption == viewCaption
             select view).first());
 }
 public static urn.microsoft.guidanceexplorer.View           xmlDB_View(this urn.microsoft.guidanceexplorer.Folder folder, Guid viewId)
 {
     return((from view in folder.view
             where view.id == viewId.str()
             select view).first());
 }