/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { bool retValue = true; //... non fa nulla; return(retValue); }
/// <summary> /// Creazione delle ACL per il fascicolo /// NOTA: RW di DocsPA equivale a DELETE di Documentum /// </summary> /// <param name="fascicolo"></param> /// <param name="ruoloCreatore"></param> /// <returns>ACL creata, ma ancora non associata al documento</returns> protected virtual CustomServices.AclDefinition CreateAclFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.utente.Ruolo ruoloCreatore) { CustomServices.AclDefinition aclData = null; try { // Reperimento ACL per il fascicolo aclData = Dfs4DocsPa.getAclDefinition(fascicolo.systemID, ObjectTypes.FASCICOLO, this.InfoUtente); // istanziamo ACLservice in modalità super-user per poter comunque creare una acl di sistema // nota: questo non sarebbe strettamente necessario (si potrebbe usare una user-acl, di tipo public) // ma si ritiene che non sia bello avere le acl di proprietà degli utenti creatori del documento CustomServices.IAclService aclSvcSuper = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser()); CustomServices.ObjectIdentity aclIdentity = aclSvcSuper.Create(aclData); if (aclIdentity == null) { throw new ApplicationException(string.Concat("Errore nella creazione dell'ACL per il fascicolo con id '{0}'", fascicolo.systemID)); } } catch (Exception ex) { string errorMessage = string.Format("Errore in Documentum.CreateAclFascicolo:\n{0}", ex.ToString()); logger.Debug(errorMessage); throw new ApplicationException(errorMessage); } return(aclData); }
//fine modifica /// <summary> /// aggiunta definizione costruttore per /// anomalia 137 -- visualizzazione fascicoli /// trasmessi da link . PA 25102004 /// </summary> /// <param name="objFascicolo"></param> public InfoFascicolo(Fascicolo objFascicolo) { this.idClassificazione = objFascicolo.idClassificazione; this.idFascicolo = objFascicolo.systemID; this.codice = objFascicolo.codice; this.descrizione = objFascicolo.descrizione; this.apertura = objFascicolo.apertura; this.contatore = objFascicolo.contatore; this.codiceApplicazione = objFascicolo.codiceApplicazione; }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public virtual bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { if (this.ProjectManagerETDOCS.ModifyProject(fascicolo)) { return(this.ProjectManagerDocumentum.ModifyProject(fascicolo)); } else { return(false); } }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <param name="refreshAclIfUpdate"> /// Se true, indica di aggiornare le entries dell'ACL associata al nodo titolario /// </param> /// <returns></returns> public bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo, bool refreshAclIfUpdate) { bool retValue = false; try { // Solo gli attributi del fascicolo procedimentale può essere modificato in documentum if (fascicolo.tipo == "P") { // Reperimento identity del fascicolo procedimentale ObjectIdentity identity = Dfs4DocsPa.getFascicoloProcedimentaleIdentityById(fascicolo.systemID); DataObject dataObject = new DataObject(identity); // Impostazione proprietà fascicolo dataObject.Properties.Properties.AddRange(Dfs4DocsPa.getFascicoloProcedimentaleProperties(fascicolo)); DataPackage dataPackage = new DataPackage(dataObject); IObjectService objectService = this.GetServiceInstance <IObjectService>(true); dataPackage = objectService.Update(dataPackage, null); retValue = (dataPackage.DataObjects.Count == 1); if (retValue) { if (refreshAclIfUpdate) { // Aggiornamento delle entries dell'acl associata al fascicolo this.RefreshAclFascicolo(fascicolo); } logger.Debug(string.Format("Documentum.ModifyProject: modificato fascicolo con id {0}", fascicolo.systemID)); } } else { retValue = true; } } catch (Exception ex) { retValue = false; logger.Debug(string.Format("Errore in Documentum.ModifyProject:\n{0}", ex.ToString())); } return(retValue); }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public virtual bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { bool result = false; using (DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli()) { Ruolo ruolo = null; using (DocsPaDB.Query_DocsPAWS.Utenti u = new Utenti()) ruolo = u.getRuoloById(fascicolo.creatoreFascicolo.idCorrGlob_Ruolo); fascicolo.folderSelezionato = fascicoli.GetFolder(fascicolo.creatoreFascicolo.idPeople, ruolo.idGruppo, fascicolo.systemID); CreateFolderHermes(fascicolo, ruolo); result = fascicoli.SetFascicolo(this.UserInfo, fascicolo); } return(result); }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public virtual bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { bool ret = false; using (DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli()) ret = fascicoli.SetFascicolo(UserInfo, fascicolo); string valorechiave = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_PROJECT_STRUCTURE"); if (!string.IsNullOrEmpty(valorechiave) && valorechiave.Equals("1") && !fascicolo.HasStrutturaTemplate) { Ruolo r = new Utenti().GetRuoloByIdGruppo(UserInfo.idGruppo); CreateStrutturaFascicolo(fascicolo, UserInfo, r); } return(ret); }
public Fascicolo FascicolazioneNewFascicolo(Classificazione classificazione, Fascicolo fascicolo, bool enableUffRef, InfoUtente infoUtente, Ruolo ruolo) { DocsPaVO.fascicolazione.Fascicolo objFascicolo = null; DocsPaVO.fascicolazione.ResultCreazioneFascicolo resultCreazione = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK; try { objFascicolo = BusinessLogic.Fascicoli.FascicoloManager.newFascicolo(classificazione, fascicolo, infoUtente, ruolo, enableUffRef, out resultCreazione); if (objFascicolo != null) { BusinessLogic.UserLog.UserLog.WriteLog(infoUtente, "FASCICOLAZIONENEWFASCICOLO", objFascicolo.systemID, string.Format("{0} {1}", "Cod. Fascicolo:", objFascicolo.codice), DocsPaVO.Logger.CodAzione.Esito.OK); } } catch (Exception e) { resultCreazione = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.GENERIC_ERROR; logger.Debug("Hermes - metodo: FascicolazioneNewFascicolo", e); objFascicolo = null; } return(objFascicolo); }
/// <summary> /// Aggiornamento delle entries dell'acl del fascicolo /// </summary> /// <param name="fascicolo"></param> protected virtual void RefreshAclFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo) { try { // Reperimento ACL per il fascicolo CustomServices.AclDefinition aclData = Dfs4DocsPa.getAclDefinition(fascicolo.systemID, ObjectTypes.FASCICOLO, this.InfoUtente); // istanziamo ACLservice in modalità super-user per poter comunque creare una acl di sistema // nota: questo non sarebbe strettamente necessario (si potrebbe usare una user-acl, di tipo public) // ma si ritiene che non sia bello avere le acl di proprietà degli utenti creatori del documento CustomServices.IAclService aclSvcSuper = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser()); aclSvcSuper.ClearAndGrant(aclData, fascicolo.systemID); } catch (Exception ex) { string errorMessage = string.Format("Errore in Documentum.RefreshAclFascicolo:\n{0}", ex.ToString()); logger.Debug(errorMessage); throw new ApplicationException(errorMessage); } }
/// <summary> /// </summary> /// <param name="db"></param> /// <param name="documento"></param> /// <param name="classificazione"></param> /// <param name="fascicolo"></param> /// <param name="infoUtente"></param> /// <param name="debug"></param> /// <returns></returns> private DocsPaVO.fascicolazione.Fascicolo NewFascicolo(string idAmministrazione, Registro registro, DocsPaVO.fascicolazione.Fascicolo fascicolo, bool enableUffRef, string chiaveFascicolo) { Classifica[] gerarchia = this.GetGerarchia(fascicolo.idClassificazione, registro, idAmministrazione); fascicolo.apertura = DateTime.Now.ToString("dd/MM/yyyy"); string idRegistro = fascicolo.idRegistro; if (!string.IsNullOrEmpty(idRegistro)) { idRegistro = "null"; } DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); if (!fascicoli.newFascicolo(this.UserInfo, idRegistro, fascicolo, gerarchia, enableUffRef, chiaveFascicolo)) { fascicolo = null; } return(fascicolo); }
/// <summary> /// /// </summary> /// <param name="classificazione"></param> /// <param name="fascicolo"></param> /// <param name="infoUtente"></param> /// <param name="ruolo"></param> /// <param name="enableUffRef"></param> /// <param name="folder"></param> /// <param name="codiceFasc"></param> /// <param name="dbProvider"></param> /// <returns></returns> private bool CreazioneFascicoloConTransazione(DocsPaVO.fascicolazione.Classificazione classificazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo, bool enableUffRef, DocsPaVO.fascicolazione.Folder folder, string codiceFasc, DocsPaDB.DBProvider dbProvider, out Ruolo[] ruoliSuperiori) { logger.Info("BEGIN"); bool result = true; ruoliSuperiori = null; DocsPaDB.Query_DocsPAWS.AmministrazioneXml objAX = new DocsPaDB.Query_DocsPAWS.AmministrazioneXml(); DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); string msgError = "errore nel metodo: creazioneFascicoloConTransazione - errore durante la creazione del fascicolo"; try { // 3 - Si calcola il formato del codice del fascicolo fascicolo.codice = codiceFasc; string chiaveFascicolo = this.CalcolaChiaveFascicolo(fascicolo.idClassificazione, DateTime.Today.Year.ToString(), fascicolo.codUltimo, fascicolo.idRegistro); if (string.IsNullOrEmpty(chiaveFascicolo)) { logger.Debug("errore nella calcolo del VAR_CHIAVE_FASCICOLO - DATI MANCANTI "); throw new Exception(); } // 5 - Si aggiorna il record relativo al fascicolo con i nuovi dati fascicolo = this.NewFascicolo(infoUtente.idAmministrazione, classificazione.registro, fascicolo, enableUffRef, chiaveFascicolo); if (fascicolo != null) { //6 - Si crea la folder associata al fascicolo folder.descrizione = fascicolo.codice; folder.idFascicolo = fascicolo.systemID; folder.idParent = fascicolo.systemID; string idPeopleDelegato = string.Empty; if (infoUtente.delegato != null && infoUtente.delegato.idPeople != null) { idPeopleDelegato = infoUtente.delegato.idPeople; } folder.systemID = this.CreateProject(folder.descrizione, idPeopleDelegato); if (!string.IsNullOrEmpty(folder.systemID)) { //7 - La creazione è andata a buon fine, quindi si aggiorna il record relativo alla folder con i dati del fascicolo if (fascicoli.NewFolder(infoUtente.idAmministrazione, folder, dbProvider)) { //8 - Imposto ID_TITOLARIO, cioe' il titolario di appartenenza sia per il fascicolo che per il folder DocsPaDB.Query_DocsPAWS.Amministrazione amm = new DocsPaDB.Query_DocsPAWS.Amministrazione(); DocsPaVO.amministrazione.OrgNodoTitolario nodoTit = amm.getNodoTitolario(fascicolo.idClassificazione); if (!string.IsNullOrEmpty(nodoTit.ID_Titolario)) { if (!fascicoli.updateIdTitolario(nodoTit.ID_Titolario, fascicolo.systemID, folder.systemID, dbProvider)) { msgError = "errore nel metodo: creazioneFascicoloConTransazione - errore durante l'aggiornamento dell'ID_TITOLARIO per il Fascicolo e il Folder"; throw new Exception(); } } } else { msgError = "errore nel metodo: creazioneFascicoloConTransazione - errore durante l'aggiornamento della Root Folder"; throw new Exception(); } //creazione dei sottofascicoli relativi alla tipologia con gara e senza gara fascicolo.folderSelezionato = folder; CreateFolderHermes(fascicolo, ruolo); } else { msgError = "errore nel metodo: creazioneFascicoloConTransazione - errore durante la creazione della Root Folder"; throw new Exception(); } } else { //Se il fascicolo è NULL viene lanciata una eccezione e viene eseguita la Rollback dell'operazione msgError = "errore nel metodo: creazioneFascicoloConTransazione - errore durante l'Update sulla Project"; throw new Exception(); } bool isPrivato = true; if (fascicolo.privato.Equals("0")) { isPrivato = false; } if (ruolo != null) { System.Collections.ArrayList listRuoliSuperiori; // 9 - Si estende la visibilità sul fascicolo creato if (fascicoli.SetProjectTrustees(infoUtente.idPeople, fascicolo.systemID, ruolo, fascicolo.idClassificazione, fascicolo.idRegistro, isPrivato, out listRuoliSuperiori, infoUtente.delegato)) { // 10 - Si estende la visibilità sulla folder creata bool isSottofascicolo = (folder.idParent != folder.idFascicolo); System.Collections.ArrayList tmp; // Variabile temporanea: i ruoli superiori sono già stati reperiti //10.1 - sottofascicoli: si da la visibilità ad essi a tutti coloro che vedono il fascicolo a cui essi appartengono //10.2 caso di rootFolder, segue la visibilità del fascicolo a cui fa riferimento (calcolata in fase di creazione del fascicolo) if (!fascicoli.SetProjectTrustees(infoUtente.idPeople, folder.systemID, ruolo, folder.idFascicolo, isSottofascicolo, fascicolo.idRegistro, isPrivato, out tmp, infoUtente.delegato)) { msgError = "errore durante estensione della visibilità della Folder"; throw new Exception(); } } else { msgError = "errore durante estenzione della visibilità sul Fascicolo"; throw new Exception(); } ruoliSuperiori = (Ruolo[])listRuoliSuperiori.ToArray(typeof(Ruolo)); } } catch { logger.Debug("*** ESEGUITA ROLLBACK DELLA TRANSAZIONE CREAZIONE FASCICOLO: " + msgError + "***"); result = false; } logger.Info("END"); return(result); }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public virtual bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { return(this.ProjectManagerETDOCS.ModifyProject(fascicolo)); }
/// <summary> /// Modifica dei metadati di un fascicolo /// </summary> /// <param name="fascicolo"></param> /// <returns></returns> public bool ModifyProject(DocsPaVO.fascicolazione.Fascicolo fascicolo) { return(this.ModifyProject(fascicolo, false)); }
/// <summary> /// /// </summary> /// <param name="classificazione"></param> /// <param name="fascicolo"></param> /// <param name="infoUtente"></param> /// <param name="ruolo"></param> /// <param name="enableUffRef"></param> /// <param name="folder"></param> /// <param name="codiceFasc"></param> /// <param name="dbProvider"></param> /// <returns></returns> private bool CreazioneFascicoloConTransazione(DocsPaVO.fascicolazione.Classificazione classificazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo, bool enableUffRef, DocsPaVO.fascicolazione.Folder folder, string codiceFasc, DocsPaDB.DBProvider dbProvider, out Ruolo[] ruoliSuperiori) { logger.Info("BEGIN"); bool result = true; ruoliSuperiori = null; DocsPaDB.Query_DocsPAWS.AmministrazioneXml objAX = new DocsPaDB.Query_DocsPAWS.AmministrazioneXml(); DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); string systemIdRoot; try { // 3 - Si calcola il formato del codice del fascicolo fascicolo.codice = codiceFasc; string chiaveFascicolo = CalcolaChiaveFascicolo(fascicolo.idClassificazione, DateTime.Today.Year.ToString(), fascicolo.codUltimo, fascicolo.idRegistro); if (string.IsNullOrEmpty(chiaveFascicolo)) { throw new Exception("errore nel calcolo del VAR_CHIAVE_FASCICOLO - DATI MANCANTI"); } // 5 - Si aggiorna il record relativo al fascicolo con i nuovi dati fascicolo = NewFascicolo(infoUtente.idAmministrazione, classificazione.registro, fascicolo, enableUffRef, chiaveFascicolo); if (fascicoli == null) { throw new Exception("errore durante l'Update sulla Project"); } // 6 - Si crea la folder associata al fascicolo folder.descrizione = fascicolo.codice; folder.idFascicolo = fascicolo.systemID; folder.idParent = fascicolo.systemID; string idPeopleDelegato = string.Empty; if (infoUtente.delegato != null && infoUtente.delegato.idPeople != null) { idPeopleDelegato = infoUtente.delegato.idPeople; } systemIdRoot = CreateProject(folder.descrizione, idPeopleDelegato); if (string.IsNullOrEmpty(systemIdRoot)) { throw new Exception("errore durante la creazione della Root Folder"); } // 7 - La creazione è andata a buon fine, quindi si aggiorna il record relativo alla folder con i dati del fascicolo folder.systemID = systemIdRoot; if (!fascicoli.NewFolder(infoUtente.idAmministrazione, folder, dbProvider)) { throw new Exception("errore durante l'aggiornamento della Root Folder"); } // 8 - Imposto ID_TITOLARIO, cioe' il titolario di appartenenza sia per il fascicolo che per il folder DocsPaDB.Query_DocsPAWS.Amministrazione amm = new DocsPaDB.Query_DocsPAWS.Amministrazione(); DocsPaVO.amministrazione.OrgNodoTitolario nodoTit = amm.getNodoTitolario(fascicolo.idClassificazione); if (nodoTit.ID_Titolario != null && nodoTit.ID_Titolario != "") { if (!fascicoli.updateIdTitolario(nodoTit.ID_Titolario, fascicolo.systemID, folder.systemID, dbProvider)) { throw new Exception("errore durante l'aggiornamento dell'ID_TITOLARIO per il Fascicolo e il Folder"); } } bool isPrivato = fascicolo.privato != "0"; if (ruolo != null) { System.Collections.ArrayList listRuoliSuperiori; // 9 - Si estende la visibilità sul fascicolo creato if (!fascicoli.SetProjectTrustees(infoUtente.idPeople, fascicolo.systemID, ruolo, fascicolo.idClassificazione, fascicolo.idRegistro, isPrivato, out listRuoliSuperiori, infoUtente.delegato, fascicolo.pubblico)) { throw new Exception("errore durante estensione della visibilità sul Fascicolo"); } // 10 - Si estende la visibilità sulla folder creata bool isSottofascicolo = (folder.idParent != folder.idFascicolo); System.Collections.ArrayList tmp; // Variabile temporanea: i ruoli superiori sono già stati reperiti //10.1 - sottofascicoli: si da la visibilità ad essi a tutti coloro che vedono il fascicolo a cui essi appartengono //10.2 caso di rootFolder, segue la visibilità del fascicolo a cui fa riferimento (calcolata in fase di creazione del fascicolo) if (!fascicoli.SetProjectTrustees(infoUtente.idPeople, folder.systemID, ruolo, folder.idFascicolo, isSottofascicolo, fascicolo.idRegistro, isPrivato, out tmp, infoUtente.delegato, fascicolo.pubblico)) { throw new Exception("errore durante estensione della visibilità della Folder"); } ruoliSuperiori = (Ruolo[])listRuoliSuperiori.ToArray(typeof(Ruolo)); } string key_beprojectlevel = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_PROJECT_LEVEL"); if (!string.IsNullOrEmpty(key_beprojectlevel) && key_beprojectlevel.Equals("1")) { folder.codicelivello = string.Format("{0:0000}", Convert.ToInt32(fascicolo.codUltimo)); UpdateFolderCodLivello(folder, infoUtente); } string key_beprojectstructure = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_PROJECT_STRUCTURE"); if (!string.IsNullOrEmpty(key_beprojectstructure) && key_beprojectstructure.Equals("1")) { CreateStrutturaFascicolo(fascicolo, infoUtente, ruolo); } } catch (Exception ex) { logger.Debug("*** ESEGUITA ROLLBACK DELLA TRANSAZIONE CREAZIONE FASCICOLO: ***"); logger.DebugFormat("errore nel metodo: creazioneFascicoloConTransazione - {0}", ex.Message); logger.DebugFormat("StackTrace : {0}", ex.StackTrace); result = false; } logger.Info("END"); return(result); }