/// <summary> /// Modifica dei dati di un folder /// </summary> /// <param name="folder"></param> /// <returns></returns> public bool ModifyFolder(DocsPaVO.fascicolazione.Folder folder) { bool retValue = false; try { // Reperimento identity per il sottofascicolo ObjectIdentity identity = Dfs4DocsPa.getSottofascicoloIdentityById(folder.systemID); DataObject dataObject = new DataObject(identity, ObjectTypes.SOTTOFASCICOLO); // Reperimento properties del sottofascicolo dataObject.Properties.Properties.AddRange(Dfs4DocsPa.getSottoFascicoloProperties(folder)); DataPackage dataPackage = new DataPackage(dataObject); IObjectService objectService = this.GetServiceInstance <IObjectService>(true); dataPackage = objectService.Update(dataPackage, null); retValue = (dataPackage.DataObjects.Count == 1); if (retValue) { logger.Debug(string.Format("Documentum.ModifyFolder: modificato sottofascicolo con id {0}", folder.systemID)); } } catch (Exception ex) { retValue = false; logger.Debug(string.Format("Errore in Documentum.ModifyFolder:\n{0}", ex.ToString())); } return(retValue); }
/// <summary> /// Cancellazione di un folder in DocsPa /// </summary> /// <param name="idProject">Identificativo univoco del folder</param> /// <remarks> /// /// PreCondizioni: /// Il folder è stato rimosso correttamente in DocsPa /// /// PostCondizioni: /// Il corrispondente oggetto in documentum per il folder /// è stato rimosso correttamente /// /// </remarks> /// <returns></returns> public bool DeleteFolder(DocsPaVO.fascicolazione.Folder folder) { bool retValue = false; try { DeleteProfile deleteProfile = new DeleteProfile(); deleteProfile.IsDeepDeleteFolders = true; deleteProfile.IsDeepDeleteChildrenInFolders = true; IObjectService objectService = this.GetServiceInstance <IObjectService>(false); OperationOptions opts = new OperationOptions(); opts.DeleteProfile = deleteProfile; // Reperimento identity per il sottofascicolo ObjectIdentity identity = Dfs4DocsPa.getSottofascicoloIdentityById(folder.systemID); objectService.Delete(new ObjectIdentitySet(identity), opts); retValue = true; logger.Debug(string.Format("Documentum.DeleteFolder: rimosso sottofascicolo con id {0}", folder.systemID)); } catch (Exception ex) { retValue = false; logger.Debug(string.Format("Errore in Documentum.DeleteFolder:\n{0}", ex.ToString())); } return(retValue); }
/// <summary> /// Inserimento di un documento in un folder /// </summary> /// <param name="idProfile"></param> /// <param name="idFolder"></param> /// <returns></returns> public bool AddDocumentInFolder(string idProfile, string idFolder) { logger.Info("BEGIN"); bool retValue = false; // Reperimento idfolder per il record di tipo "C" in docspa (root folder) idFolder = DocsPaQueryHelper.getIdFolderCType(idFolder); // Reperimento docNumber da idProfile string docNumber = DocsPaQueryHelper.getDocNumber(idProfile); //bool stampaRegistro = DocsPaQueryHelper.isStampaRegistro(docNumber); bool stampaRegistro = DocsPaQueryHelper.isStampaRegistroRepertorio(docNumber); try { IObjectService objectService = DctmServiceFactory.GetServiceInstance <IObjectService>(UserManager.ImpersonateSuperUser()); // 1. recuperare il documento con tutti i link a folder attuali ObjectIdentity documentIdentity = Dfs4DocsPa.getDocumentoIdentityByDocNumber(docNumber); if (stampaRegistro) { documentIdentity = Dfs4DocsPa.getDocumentoStampaRegistroIdentityByDocNumber(docNumber); } // 2. Creare il nuovo link al folder di classificazione ObjectIdentity folderIdentity = null; // Verifica se l'idFolder si riferisce ad un fascicolo o a un sottofascicolo if (!DocsPaQueryHelper.isSottofascicolo(idFolder)) { // Reperimento id del fascicolo dal folder (record tipo "C") string tipoFascicolo; string idFascicolo = DocsPaQueryHelper.getIdFascicoloFromFolder(idFolder, out tipoFascicolo); folderIdentity = Dfs4DocsPa.getFascicoloIdentityBySystemId(idFascicolo); //Effettuo un refresh dei permessi sul fascicolo per allineare le ACL con DOCUMENTUM //Fascicolo fascicolo = DocsPaQueryHelper.getFascicolo(idFascicolo, this.InfoUtente); //if (fascicolo != null) // RefreshAclFascicolo(fascicolo); } else { folderIdentity = Dfs4DocsPa.getSottofascicoloIdentityById(idFolder); } ReferenceRelationship addRelationship = DfsHelper.createParentFolderRelationship(folderIdentity); //la aggiungeremo alla lista degli update nell'ultimo passo // 3. salvare DataObject updatedDoc = new DataObject(documentIdentity); updatedDoc.Relationships.Add(addRelationship); // 4. Allineamento ACL documento: // per coerenza è necessario che, una volta che il documento // viene inserito in un fascicolo, questo diventi visibile anche // a tutti gli utenti che hanno la visibilità solo sul fascicolo e // non sul documento this.UpdateAclDocumento(idProfile, docNumber); DataPackage dataPackage = new DataPackage(updatedDoc); dataPackage = objectService.Update(dataPackage, null); retValue = (dataPackage.DataObjects.Count > 0); if (retValue) { logger.Debug(string.Format("Documentum.AddDocumentInFolder: inserito il documento con docnumber {0} nel folder con id {1}", idProfile, idFolder)); } } catch (Exception ex) { retValue = false; logger.Debug(string.Format("Errore in Documentum.AddDocumentInFolder:\n{0}", ex.ToString())); } logger.Info("END"); return(retValue); }