Ejemplo n.º 1
0
        /// <summary>
        /// Scarica le informazioni su una determinata Folder.
        /// Nota: se la Folder non esiste, viene preventivamente creata
        /// </summary>
        /// <param name="context">Il ClientContext di riferimento</param>
        /// <param name="listName">Il nome della List nella quale cercare oppure creare la Folder</param>
        /// <param name="folderName">Il nome della Folder da restituire. Se non passato, viene ricercata la RootFolder della List di riferimento</param>
        /// <returns>L'oggetto Folder di riferimento</returns>
        private static Folder GetOrCreateFolder(ClientContext context, string listName, string folderName)
        {
            List list = LoadList(context, listName);

            context.Load(list.RootFolder);
            context.Load(list.RootFolder.Folders);
            context.ExecuteQuery();

            if (folderName == null)
            {
                return(list.RootFolder);
            }

            string folderUrl = String.Format("{0}/{1}/{2}", SitePath, listName, folderName);

            FolderCollection folders = list.RootFolder.Folders;
            var existingFolders      = context.LoadQuery <Folder>(
                folders.Where(folder => folder.ServerRelativeUrl == folderUrl)
                );

            context.ExecuteQuery();

            Folder result = existingFolders.FirstOrDefault();

            if (result != null)
            {
                context.Load(result);
                context.Load(result.Files);
                context.ExecuteQuery();
                return(result);
            }

            var itemCreateInfo = new ListItemCreationInformation
            {
                UnderlyingObjectType = FileSystemObjectType.Folder,
                LeafName             = folderName
            };
            ListItem item = list.AddItem(itemCreateInfo);

            item["Title"] = folderName;
            item.Update();
            context.ExecuteQuery();

            existingFolders = context.LoadQuery <Folder>(
                folders.Where(folder => folder.ServerRelativeUrl == folderUrl)
                );
            context.ExecuteQuery();
            return(existingFolders.First());
        }
Ejemplo n.º 2
0
        public async Task Init()
        {
            var folderList = await App._instance.IO.GetLocalDataAsync <List <FolderItem> >(StaticString.FolderListFileName);

            var historyList = await App._instance.IO.GetLocalDataAsync <List <HistoryItem> >(StaticString.HistoryListFileName);

            FolderCollection.Clear();
            DisplayHistoryCollection.Clear();
            if (!folderList.IsNullOrEmpty())
            {
                folderList.ForEach(p => FolderCollection.Add(p));
            }
            else
            {
                var folderItem = new FolderItem(App._instance.App.GetLocalizationTextFromResource(LanguageName.Default), FeatherSymbol.Activity);
                FolderCollection.Add(folderItem);
                await SaveFolderList();
            }

            string lastSelectedFolderId = App._instance.App.GetLocalSetting(Settings.LastSelectFolderId, "");

            if (!FolderCollection.Any(p => p.Id == lastSelectedFolderId))
            {
                lastSelectedFolderId = FolderCollection.First().Id;
            }

            CurrentSelectedFolder = FolderCollection.Where(p => p.Id == lastSelectedFolderId).First();

            if (!historyList.IsNullOrEmpty())
            {
                AllHistoryList = historyList;
                historyList.Where(p => p.FolderId == lastSelectedFolderId).ToList().ForEach(p => DisplayHistoryCollection.Add(p));
                HistoryChanged?.Invoke(this, EventArgs.Empty);
            }
        }