Ejemplo n.º 1
0
        /// <summary>
        /// Method to delete specific version based on version number
        /// </summary>
        /// <param name="clientContext">SPO Client Context</param>
        /// <param name="deleteDocumentRequest">Request model for delete operation</param>
        /// <param name="LoggerId">MessageId used for logging information</param>
        private void DeleteByVersion(ClientContext clientContext, DeleteDocumentRequest deleteDocumentRequest, string LoggerId)
        {
            try
            {
                Log.DebugFormat("In DeleteByVersion method for MessageId - {0} DocumentId :{1}", LoggerId, deleteDocumentRequest.DocumentId.ToString());

                //Retrieve the file based on DocumentId
                File file = clientContext.Web.GetFileById(deleteDocumentRequest.DocumentId);

                //Load file version collection
                FileVersionCollection fileVersions = file.Versions;
                clientContext.Load(file);
                clientContext.Load(fileVersions);
                //Recycle file based on version label
                fileVersions.RecycleByLabel(deleteDocumentRequest.Version);
                clientContext.ExecuteQueryWithRetry(Convert.ToInt32(ConfigurationManager.AppSettings.Get(ExecuteQueryConstants.RetryCount)),
                                                    Convert.ToInt32(ConfigurationManager.AppSettings.Get(ExecuteQueryConstants.RetryDelayTime)),
                                                    LoggerId);
                Log.DebugFormat("In DeleteByVersion after ExecuteQueryWithRetry for MessageId - {0} - Document Deleted for Version {1}", LoggerId, deleteDocumentRequest.Version);
            }
            catch (Exception e)
            {
                Log.ErrorFormat("Exception in DeleteByVersion method for MessageId - {0} :{1}", LoggerId, e.Message);
                throw;
            }
        }
        //Comentar a sukis que tiene que hablar sobre limites, storage metrics, versionamiento

        public ActionResult ObtenerTamano()
        {
            Double totalSize = 0;
            var    spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext);

            using (var clientContext = spContext.CreateUserClientContextForSPHost())
            {
                Web       web    = clientContext.Web;
                List      oList  = clientContext.Web.Lists.GetByTitle("Documentos");
                CamlQuery oQuery = new CamlQuery();

                FileCollection allFile = oList.RootFolder.Files;
                clientContext.Load(allFile);

                clientContext.ExecuteQuery();
                foreach (File file in allFile)
                {
                    FileVersionCollection versions = file.Versions;
                    totalSize += file.Length;
                    clientContext.Load(versions);

                    clientContext.ExecuteQuery();
                    foreach (FileVersion fileVersion in versions)
                    {
                        totalSize += fileVersion.Size;
                    }
                }
            }
            ViewBag.TotalSize = Math.Round(totalSize / 1024, 2);
            return(View("Index"));
        }
Ejemplo n.º 3
0
        public ArrayList GetLibraryHistoricItem(int idItem)
        {
            CamlQuery query = new CamlQuery();

            //ListItemCollection colItems = libraryList.GetItems(CamlQuery.CreateAllItemsQuery());
            ListItem colItems = libraryList.GetItemById(idItem);

            clientContext.Load(colItems);

            /*
             * clientContext.Load(colItems,
             *  items => items.Include(
             *      item => item.Id,
             *      item => item["Pagina"],
             *      item => item["Adquiriente"]
             *      )
             *  );
             */

            clientContext.ExecuteQuery();

            FileVersionCollection versions = colItems.File.Versions;

            clientContext.Load(versions);
            IEnumerable <Microsoft.SharePoint.Client.FileVersion> oldVersions;

            oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));

            clientContext.ExecuteQuery();

            ArrayList arlVersiones = new ArrayList();

            if (oldVersions != null)
            {
                foreach (FileVersion version in oldVersions)
                {
                    int    versionID        = version.ID;
                    bool   isCurrentVersion = version.IsCurrentVersion;
                    string url          = version.Url;
                    string versionLabel = version.VersionLabel;

                    arlVersiones.Add(clientContext.Url + "/" + url + "|" + versionLabel);
                }
            }

            return(arlVersiones);
        }
Ejemplo n.º 4
0
        public void Prueba()
        {
            ClientContext clientContext = new ClientContext("http://servidors04/sitios/digitalizacion");
            Web           site          = clientContext.Web;

            clientContext.Load(site);
            clientContext.ExecuteQuery();

            //htp://servidors04/sitios/digitalizacion/_vti_history/512/seccion%20primera/Libro_2384_0001.tif
            Microsoft.SharePoint.Client.File file = site.GetFileByServerRelativeUrl("/sitios/digitalizacion/Seccion Primera/Libro_2384_0001.tif");
            clientContext.Load(file);
            clientContext.ExecuteQuery();

            ListItem currentItem = file.ListItemAllFields;

            clientContext.Load(currentItem);
            clientContext.ExecuteQuery();


            FileVersionCollection versions = file.Versions;

            clientContext.Load(versions);
            clientContext.ExecuteQuery();



            if (versions != null)
            {
                foreach (FileVersion oldFileVersion in versions)
                {
                    if (oldFileVersion.VersionLabel == "1.0")
                    {
                        Microsoft.SharePoint.Client.ListCollection lists = site.Lists;

                        clientContext.Load(lists);
                        clientContext.ExecuteQuery();
                    }
                }
            }
        }
Ejemplo n.º 5
0
        static void DeleteOldDocumentVersions(string siteUrl, string userName, string userPassword, string csvFilePath)
        {
            try
            {
                int maxDocumentVersions = 15;//this is the maximum number of document versions that will be stored in the document library

                //get client context
                ClientContext context = GetUserContext(siteUrl, userName, userPassword);

                //get web
                Web web = context.Site.RootWeb;
                context.Load(web, w => w.Webs); //include subwebs
                context.ExecuteQuery();

                //caml query to get all documents in the library
                CamlQuery camlQuery = new CamlQuery();
                camlQuery.ViewXml = "<View Scope='RecursiveAll'></View>";

                //create StringBuilder object for storing documents info
                StringBuilder docsCSVFile = new StringBuilder();
                docsCSVFile.AppendLine("Title, URL, Versions");

                // Loop through all the webs
                foreach (Web subWeb in web.Webs)
                {
                    context.Load(subWeb, subw => subw.Webs); //include title and all webs
                    context.ExecuteQuery();
                    Console.WriteLine("Processing site -> {0}", subWeb.Url);

                    // Loop through all webs in subwebs
                    foreach (Web subsubWeb in subWeb.Webs)
                    {
                        context.Load(subsubWeb, subsubw => subsubw.Title); //include title
                        context.ExecuteQuery();
                        Console.WriteLine("Processing site -> {0}", subsubWeb.Url);

                        //get list
                        List list = subsubWeb.Lists.GetByTitle("Documents");
                        context.Load(list);
                        context.ExecuteQuery();

                        //get all documents in the list
                        ListItemCollection collListItem = list.GetItems(camlQuery);

                        context.Load(collListItem,
                                     items => items.Include(
                                         item => item.Id,
                                         item => item["Title"],
                                         item => item["FileRef"]));
                        context.ExecuteQuery();

                        if (collListItem.Count > 0)
                        {
                            foreach (ListItem oListItem in collListItem)
                            {
                                //get list item
                                context.Load(oListItem, listItem => listItem.File, listItem => listItem.FileSystemObjectType);
                                context.ExecuteQuery();

                                //get file associated with list item
                                Microsoft.SharePoint.Client.File file = oListItem.File;
                                context.Load(file, f => f.CheckOutType, f => f.Versions);
                                context.ExecuteQuery();

                                if (oListItem.FileSystemObjectType == FileSystemObjectType.File) //check if it is a File.
                                {
                                    if (file.CheckOutType == CheckOutType.None)                  //only process the file if it is not checked out
                                    {
                                        //get file version collection
                                        FileVersionCollection fvCollection = file.Versions;
                                        context.Load(fvCollection);
                                        context.ExecuteQuery();
                                        Console.WriteLine("Versions count for file {0} is {1} ", file.Name, file.Versions.Count.ToString());

                                        //check if current number of versions is greater than the max number of versions
                                        if (file.Versions.Count + 1 > maxDocumentVersions) //add 1 to versions count, since it is zero index based
                                        {
                                            Console.WriteLine("Processing document titled, {0}, with URL {1} and {2} versions", oListItem["Title"], oListItem["FileRef"], (file.Versions.Count + 1).ToString());
                                            docsCSVFile.AppendLine(oListItem["Title"] + "," + oListItem["FileRef"] + "," + (file.Versions.Count + 1).ToString());
                                            int versionsToDelete = (file.Versions.Count + 1) - maxDocumentVersions; //add 1 to versions count, since it is zero index based

                                            //loop through collection and delete old versions
                                            for (int i = 0; i < versionsToDelete; i++)
                                            {
                                                FileVersion fileVersion = fvCollection[0];//always delete the first (i.e. oldest) verion
                                                Console.WriteLine("fileVersion with label {0} created on {1} {2} will be deleted", fileVersion.VersionLabel, fileVersion.Created.ToShortDateString(), fileVersion.Created.ToShortTimeString());
                                                fileVersion.DeleteObject();
                                            }
                                            oListItem.SystemUpdate();
                                            context.ExecuteQuery();
                                        } //check for number of document versions
                                    }     //check for file checkout
                                }         //check if it is a file and not a folder
                            }             //loop through documents
                        }                 //check if library has documents
                    }                     //loop through subWeb.Webs
                }                         //loop through web.webs

                //Write docs info to CSV file
                System.IO.File.AppendAllText(csvFilePath, docsCSVFile.ToString());
            }
            catch (ClientRequestException clientEx)
            {
                Console.WriteLine("Client side error occurred: {0} \n{1} " + clientEx.Message + clientEx.InnerException);
                throw clientEx;
            }
            catch (ServerException serverEx)
            {
                Console.WriteLine("Server side error occurred: {0} \n{1} " + serverEx.Message + serverEx.InnerException);
                throw serverEx;
            }
        }