Example #1
0
        public Folder Delete(string url, Guid libraryId, string folderPath)
        {
            Folder folder;

            try
            {
                using (var clientContext = new SPContext(url, credentials.Get(url)))
                {
                    SP.List splist = clientContext.Web.Lists.GetById(libraryId);

                    SP.Folder rootFolder = splist.RootFolder;
                    clientContext.Load(rootFolder, f => f.ServerRelativeUrl);

                    SP.Folder spfolder = clientContext.Web.GetFolderByServerRelativeUrl(folderPath);
                    clientContext.Load(spfolder, f => f.Name, f => f.ServerRelativeUrl, f => f.ItemCount);

                    clientContext.ExecuteQuery();

                    bool pathIsNotEmpty  = !String.IsNullOrEmpty(spfolder.ServerRelativeUrl.Trim('/'));
                    bool isARootFolder   = rootFolder.ServerRelativeUrl.Trim('/').Equals(spfolder.ServerRelativeUrl.Trim('/'));
                    bool hasParentFolder = pathIsNotEmpty && !isARootFolder;
                    if (hasParentFolder && !IsHiddenFolder(spfolder.ServerRelativeUrl, rootFolder.ServerRelativeUrl))
                    {
                        folder = new Folder(spfolder.Name, spfolder.ServerRelativeUrl, spfolder.ItemCount, libraryId);

                        spfolder.DeleteObject();
                        clientContext.ExecuteQuery();
                    }
                    else
                    {
                        throw new SPInternalException("Folder can not be removed.");
                    }
                }
            }
            catch (SPInternalException)
            {
                throw;
            }
            catch (Exception ex)
            {
                string message = string.Format("An exception of type {0} occurred in the InternalApi.SPFolderService.Delete() method LibraryId: {1} ServerRelativeUrl: '{2}' in SPWebUrl: '{3}'. The exception message is: {4}", ex.GetType(), libraryId, folderPath, url, ex.Message);
                SPLog.RoleOperationUnavailable(ex, message);

                throw new SPInternalException(message, ex);
            }
            return(folder);
        }
Example #2
0
        private Folder MoveFld(Folder folder, string newUrl, bool delete = true)
        {
            var newFolder = CreateFolder(newUrl);

            if (delete)
            {
                folder.Folders.ToList().ForEach(r => MoveFolder(r.ServerRelativeUrl, newUrl));
                folder.Files.ToList().ForEach(r => MoveFile(r.ServerRelativeUrl, newUrl));

                folder.DeleteObject();
                clientContext.ExecuteQuery();
            }
            else
            {
                folder.Folders.ToList().ForEach(r => CopyFolder(r.ServerRelativeUrl, newUrl));
                folder.Files.ToList().ForEach(r => CopyFile(r.ServerRelativeUrl, newUrl));
            }

            return(newFolder);
        }
Example #3
0
        public bool DeleteFile(string fileName, string folderName)
        {
            bool   result   = false;
            string siteUrl  = SLMConstant.Ecm.SiteUrl;      //http://ecm/dept/public
            string sitePath = SLMConstant.Ecm.SitePath;     ///dept/public/OBTDocument/
            string domain   = SLMConstant.Ecm.Domain;
            string username = SLMConstant.Ecm.Username;
            string password = SLMConstant.Ecm.Password;

            try
            {
                using (ToEcm.ClientContext clientContext = new ToEcm.ClientContext(siteUrl)
                {
                    Credentials = new NetworkCredential(username, password, domain)
                })
                {
                    string serverRelativeUrlOfFile = sitePath + folderName + "/" + fileName;

                    log.Info("Delete File Path " + serverRelativeUrlOfFile);

                    ToEcm.Web web = clientContext.Web;
                    clientContext.Load(web);

                    ToEcm.File file = web.GetFileByServerRelativeUrl(serverRelativeUrlOfFile);
                    clientContext.Load(file);
                    clientContext.ExecuteQuery();

                    if (file != null)
                    {
                        file.DeleteObject();
                        clientContext.ExecuteQuery();
                    }
                    result = true;

                    //Added By Pom 24/05/2016
                    //ลบ Folder ทิ้งในกรณีที่ไม่มี file เหลือใน Folder นั้น
                    try
                    {
                        log.Info("Start Delete Folder " + sitePath + folderName + "/");
                        ToEcm.Folder folder = web.GetFolderByServerRelativeUrl(sitePath + folderName + "/");
                        clientContext.Load(folder);
                        clientContext.ExecuteQuery();

                        if (folder != null)
                        {
                            ToEcm.FileCollection fileColl = folder.Files;
                            clientContext.Load(fileColl);
                            clientContext.ExecuteQuery();

                            log.Info("Files currently in folder " + folderName + " = " + fileColl.Count.ToString());

                            if (fileColl.Count == 0)
                            {
                                folder.DeleteObject();
                                clientContext.ExecuteQuery();
                                log.Info("Folder Deleted Successfully");
                            }
                        }
                        else
                        {
                            log.Info("Folder " + folderName + " is null");
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error("Error DeleteFile : Cannot delete empty folder " + folderName + ", " + ex);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error("Error DeleteFile : " + ex);
            }

            return(result);
        }
        private Folder MoveFld(Folder folder, string newUrl, bool delete = true)
        {
            var newFolder = CreateFolder(newUrl);

            if (delete)
            {
                folder.Folders.ToList().ForEach(r => MoveFolder(r.ServerRelativeUrl, newUrl));
                folder.Files.ToList().ForEach(r => MoveFile(r.ServerRelativeUrl, newUrl));

                folder.DeleteObject();
                clientContext.ExecuteQuery();
            }
            else
            {
                folder.Folders.ToList().ForEach(r => CopyFolder(r.ServerRelativeUrl, newUrl));
                folder.Files.ToList().ForEach(r => CopyFile(r.ServerRelativeUrl, newUrl));
            }

            return newFolder;
        }