/// <summary> /// /// </summary> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"></param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { logger.Info("BEGIN"); bool retValue = false; ruoliSuperiori = null; using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider()) { using (System.Data.IDataReader reader = dbProvider.ExecuteReader("select a.CHA_STATO from project a where a.SYSTEM_ID in (select b.ID_TITOLARIO from project b where b.SYSTEM_ID =" + classifica.systemID + ")")) { if (reader.FieldCount > 0) { while (reader.Read()) { string valorechiave = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_FASC_TUTTI_TIT"); if (string.IsNullOrEmpty(valorechiave) || !valorechiave.Equals("1")) { if (reader.GetString(reader.GetOrdinal("CHA_STATO")).ToUpper().Equals("C")) { logger.Debug("sottofascilo chiuso"); throw new Exception("sottofascilo chiuso"); } } } } } logger.Debug(" *** INIZIO TRANSAZIONE CREAZIONE FASCICOLO ***"); dbProvider.BeginTransaction(); fascicolo.idClassificazione = classifica.systemID; result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK; DocsPaVO.fascicolazione.Folder folder = new DocsPaVO.fascicolazione.Folder(); DocsPaDB.Query_DocsPAWS.AmministrazioneXml objAX = new DocsPaDB.Query_DocsPAWS.AmministrazioneXml(); DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); try { fascicolo.stato = "A"; fascicolo.tipo = "P"; // 6 - Si aggiorna il codUltimo relativo al fascicolo (solo per ora perchè andrà tolta questa gestione) if (!fascicoli.aggiornaDpaRegFasc(ref fascicolo.codUltimo, fascicolo.idClassificazione, fascicolo.idRegistro, dbProvider)) { throw new Exception("Errore nell'aggiornamento della tabella dpa_reg_fasc"); } //prova per verifica codice univoco string format = DocsPaDB.Utils.Personalization.getInstance(this.UserInfo.idAmministrazione).FormatoFascicolatura; if (format == null || format.Equals("")) { //in alcuni casi, l'oggetto Personalization non è not null, ma il formato segnatura è null!! //per evitare il blocco della protocollazione a meno di un iisreset inserisco questo codice. logger.Debug("Ricalcolo Personalization"); DocsPaDB.Utils.Personalization.Reset(); format = DocsPaDB.Utils.Personalization.getInstance(this.UserInfo.idAmministrazione).FormatoFascicolatura; if (format == null || format.Equals("")) { throw new FormatoFascicolaturaException(); } } //string codiceFasc = this.CalcolaCodiceFascicolo(this.UserInfo.idAmministrazione, classifica.codice, fascicolo.apertura, classifica.systemID, ref fascicolo.codUltimo, true, dbProvider); string codiceFasc = this.CalcolaCodiceFascicolo(this.UserInfo.idAmministrazione, classifica, fascicolo.apertura, ref fascicolo.codUltimo, true, dbProvider); string idReg = fascicolo.idRegistro; if (idReg != null && idReg == "") { idReg = classifica.registro.systemId; } // 4 - Si verifica che il codice sia univoco if (!objAX.CheckUniqueCode("PROJECT", "VAR_CODICE", codiceFasc, "AND ((ID_REGISTRO IS NULL OR ID_REGISTRO=" + idReg + " ) ) AND ID_AMM =" + this.UserInfo.idAmministrazione + " AND ID_PARENT = " + classifica.systemID + "", dbProvider)) { // 4 - Si verifica se il codice è già presente vienelanciata una eccezione //codiceFascNew = calcolaCodiceFascicolo(infoUtente.idAmministrazione,classificazione.codice, fascicolo.apertura, classificazione.systemID, ref fascicolo.codUltimo, false, dbProvider); throw new FascicoloPresenteException(); } // Creazione fascicolo string idPeopleDelegato = string.Empty; if (fascicolo.creatoreFascicolo != null && fascicolo.creatoreFascicolo.idPeopleDelegato != null) { idPeopleDelegato = fascicolo.creatoreFascicolo.idPeopleDelegato; } string systemIdFasc = this.CreateProject(fascicolo.descrizione, idPeopleDelegato); if (systemIdFasc != null && systemIdFasc != "") { fascicolo.systemID = systemIdFasc; /* 2 - VIENE INVOCATO IL METODO PER LA CREAZIONE DEL FASCICOLO * e della ROOT FOLDER */ bool resultNewFasc = this.CreazioneFascicoloConTransazione(classifica, fascicolo, this.UserInfo, ruolo, enableUfficioReferente, folder, codiceFasc, dbProvider, out ruoliSuperiori); //3 - SE LA CREAZIONE DEL FASCICOLO è ANDATA A BUON FINE SI EFFETTUA IL COMMIT //DELLA TRANSAZIONE if (resultNewFasc) { result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK; } else { throw new Exception("Errore nella gestione dei fascicoli (newFascicolo)"); } } else { throw new Exception("Errore nella gestione dei fascicoli (newFascicolo)"); } //Profilazione dinamica fascicoli if (fascicolo.template != null) { DocsPaDB.Query_DocsPAWS.ModelFasc modelFasc = new DocsPaDB.Query_DocsPAWS.ModelFasc(); modelFasc.salvaInserimentoUtenteProfDimFasc(fascicolo.template, fascicolo.systemID); } //Fine profilazione dinamica fascicoli logger.Debug("Fascicolo creato: idFascicolo = " + fascicolo.systemID); logger.Debug("Folder creata: = " + folder.systemID); if (result == ResultCreazioneFascicolo.OK) { retValue = true; } } catch (FascicoloPresenteException e) { retValue = false; fascicolo = null; result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.FASCICOLO_GIA_PRESENTE; logger.Debug(e.Message); } catch (FormatoFascicolaturaException e) { retValue = false; fascicolo = null; result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.FORMATO_FASCICOLATURA_NON_PRESENTE; logger.Debug(e.Message); } catch (Exception e) { //SE LA CREAZIONE DEL FASCICOLO GENERA ERRORE, //SI RILASCIANO RISORSE ALLOCATE E SI EFFETTUA IL ROLLBACK DELLA TRANSAZIONE retValue = false; fascicolo = null; result = DocsPaVO.fascicolazione.ResultCreazioneFascicolo.GENERIC_ERROR; logger.Debug(e.Message); } if (retValue) { dbProvider.CommitTransaction(); } else { dbProvider.RollbackTransaction(); } } logger.Info("END"); return(retValue); }
/// <summary> /// Creazione nuovo fascicolo /// </summary> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result) { logger.Info("BEGIN"); bool retValue = this.ProjectManagerETDOCS.CreateProject(classifica, fascicolo, ruolo, enableUfficioReferente, out result); if (retValue) { retValue = this.ProjectManagerDocumentum.CreateProject(classifica, fascicolo, ruolo, enableUfficioReferente, out result); } logger.Info("END"); return(retValue); }
/// <summary> /// Creazione di un nuovo fascicolo /// </summary> /// <param name="classifica">Nodo di classificazione in cui creare il fascicolo</param> /// <param name="fascicolo">Metadati del fascicolo</param> /// <param name="ruolo">Ruolo dell'utente che inserisce il fascicolo</param> /// <param name="enableUfficioReferente"></param> /// <param name="result">Esito dettagliato dell'inserimento del fascicolo</param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result) { Ruolo[] ruoliSuperiori; return(this.CreateProject(classifica, fascicolo, ruolo, enableUfficioReferente, out result, out ruoliSuperiori)); }
/// <summary> /// Aggiornamento Acl per il documento /// </summary> /// <param name="idProfile"></param> /// <summary> /// Creazione nuovo fascicolo /// </summary> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"> /// Ruoli superiori cui è stata impostata la visibilità del fascicolo /// </param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { result = ResultCreazioneFascicolo.OK; ruoliSuperiori = null; return(true); }
/// <summary> /// Creazione di un nuovo fascicolo in DocsPa /// </summary> /// <remarks> /// /// PreCondizioni: /// Il fascicolo è stato inserito correttamente in DocsPa /// ed è stato generato un'identificativo univoco /// /// PostCondizioni: /// Creato un oggetto in Documentum corrispondente all'oggetto /// fascicolo di DocsPa. L'oggetto avrà i metadati del fascicolo /// per la sola consultazione in documentum. /// /// </remarks> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result) { bool retValue = true; //... non fa nulla result = ResultCreazioneFascicolo.OK; return(retValue); }
/// <summary> /// Creazione nuovo fascicolo /// </summary> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"> /// Ruoli superiori cui è stata impostata la visibilità del fascicolo /// </param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = this.ProjectManagerETDOCS.CreateProject(classifica, fascicolo, ruolo, enableUfficioReferente, out result, out ruoliSuperiori); if (retValue) { retValue = this.ProjectManagerOCS.CreateProject(classifica, fascicolo, ruolo, enableUfficioReferente, out result); } return(retValue); }
/// <summary> /// Creazione di un nuovo fascicolo in DCTM /// </summary> /// <remarks> /// /// PreCondizioni: /// Il fascicolo è stato inserito correttamente in DocsPa /// ed è stato generato un'identificativo univoco /// /// PostCondizioni: /// Creato un oggetto in Documentum corrispondente all'oggetto /// fascicolo di DocsPa. L'oggetto avrà i metadati del fascicolo /// per la sola consultazione in documentum. /// /// </remarks> /// <param name="classifica"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="enableUfficioReferente"></param> /// <returns></returns> public bool CreateProject(Classificazione classifica, Fascicolo fascicolo, Ruolo ruolo, bool enableUfficioReferente, out ResultCreazioneFascicolo result) { logger.Info("BEGIN"); bool retValue = false; result = ResultCreazioneFascicolo.GENERIC_ERROR; CustomServices.AclDefinition aclFascicolo = null; try { //fascicolo.systemID viene SEMPRE valorizzato da ETDOCS; se così non è --> ERRORE if (string.IsNullOrEmpty(fascicolo.systemID)) { logger.Debug("Errore passaggio dati da ETDOCS."); } else { // Reperimento dell'objectidentity relativo al nodo titolario in cui andrà inserito il fascicolo ObjectIdentity nodoTitolarioIdentity = Dfs4DocsPa.getNodoTitolarioIdentity(fascicolo.idClassificazione); // Reperimento properties del fascicolo procedimentale PropertySet props = new PropertySet(); props.Properties.AddRange(Dfs4DocsPa.getFascicoloProcedimentaleProperties(fascicolo)); // Creazione delle ACL per il fascicolo aclFascicolo = this.CreateAclFascicolo(fascicolo, ruolo); // Associazione delle ACL al fascicolo da creare AclHelper.setAclObjectProperties(props, aclFascicolo); ObjectIdentity identity = new ObjectIdentity(DctmConfigurations.GetRepositoryName()); DataObject dataObject = new DataObject(identity, ObjectTypes.FASCICOLO_PROCEDIMENTALE); dataObject.Properties = props; dataObject.Relationships.Add(DfsHelper.createParentFolderRelationship(nodoTitolarioIdentity)); DataPackage dataPackage = new DataPackage(dataObject); IObjectService objectService = this.GetServiceInstance <IObjectService>(false); dataPackage = objectService.Create(dataPackage, null); retValue = (dataPackage.DataObjects.Count == 1); if (retValue) { result = ResultCreazioneFascicolo.OK; logger.Debug(string.Format("Documentum.CreateProject: creato fascicolo con id {0}", fascicolo.systemID)); } } } catch (Exception ex) { retValue = false; result = ResultCreazioneFascicolo.GENERIC_ERROR; logger.Debug(string.Format("Errore in Documentum.CreateProject:\n{0}", ex.ToString())); if (aclFascicolo != null) { // Rimozione ACL fascicolo in caso di errore this.DeleteAcl(aclFascicolo); } } logger.Info("END"); return(retValue); }