예제 #1
0
        /// <summary>
        /// Aggiornamento delle fascicolazioni
        /// </summary>
        /// <param name="idFolder"></param>
        public virtual bool UpdateFascicolazioni(string idFolder)
        {
            bool retValue = false;

            // Reperimento record di tipo "C"
            string idFolderC = DocsPaQueryHelper.getIdFolderCType(idFolder);

            try
            {
                IQueryService queryService = DctmServiceFactory.GetServiceInstance <IQueryService>(UserManager.ImpersonateSuperUser());

                // 1. Reperimento di tutti i documenti contenuti in fascicolo in DCTM
                List <string> documentiInDctm = new List <string>(Dfs4DocsPa.getIdDocumentiInFascicolo(queryService, idFolder));

                // 2. Reperimento di tutti i documenti contenuti in fascicolo in PITRE
                foreach (string idDocumento in DocsPaQueryHelper.getDocumentiInFolder(idFolderC))
                {
                    // 3. Per ogni documento contenuto nel fascicolo, verifica se esiste nel corrispondente fascicolo in DCTM
                    if (!documentiInDctm.Contains(idDocumento))
                    {
                        // 4. Verifica se il documento esiste in DCTM
                        if (!Dfs4DocsPa.containsDocumento(idDocumento, queryService))
                        {
                            throw new ApplicationException(string.Format("Documento con id '{0}' non esistente in Documentum", idDocumento));
                        }

                        // 4. Inserimento del documento nel fascicolo in DCTM se non esiste
                        if (!this.AddDocumentInFolder(idDocumento, idFolderC))
                        {
                            throw new ApplicationException(string.Format("Errore in inserimento del documento con id '{0}' nel fascicolo con id '{1}'", idDocumento, idFolderC));
                        }
                    }
                }

                retValue = true;
            }
            catch (Exception ex)
            {
                retValue = false;

                logger.Debug(string.Format("Errore in Documentum.UpdateFascicolazioni:\n{0}", ex.ToString()));
            }

            return(retValue);
        }