/// <summary> /// Creazione nuovo sottofascicolo /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"> /// Ruoli superiori cui è impostata la visibilità del sottofascicolo /// </param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = false; ruoliSuperiori = null; result = ResultCreazioneFolder.GENERIC_ERROR; // Verifica l'univocità del folder: in documentum // non possono essere inseriti sottofascicoli // dello stesso livello aventi lo stesso nome if (!this.ExistFolderName(folder)) { retValue = this.ProjectManagerETDOCS.CreateFolder(folder, ruolo, out result, out ruoliSuperiori); if (retValue) { retValue = this.ProjectManagerDocumentum.CreateFolder(folder, ruolo, out result); } } else { result = ResultCreazioneFolder.FOLDER_EXIST; } return(retValue); }
/// <summary></summary> /// <param name="ut"></param> /// <param name="ruo"></param> public InfoUtente(Utente ut, Ruolo ruo) { if (ut != null) { this.idPeople = ut.idPeople; this.userId = ut.userId; this.dst = ut.dst; this.idAmministrazione = ut.idAmministrazione; this.sede = ut.sede; this.urlWA = ut.urlWA; this.matricola = ut.matricola; this.extApplications = ut.extApplications; this.codWorkingApplication = ut.codWorkingApplication; } //BUG - A Volte utente arriva con idAmm nullo if (ruo != null) { this.idCorrGlobali = ruo.systemId; this.idGruppo = ruo.idGruppo; if (ut != null && string.IsNullOrEmpty(ut.idAmministrazione)) { this.idAmministrazione = ruo.idAmministrazione; } } }
/// <summary> /// /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"></param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = false; result = ResultCreazioneFolder.GENERIC_ERROR; ruoliSuperiori = null; try { string idPeopleDelegato = string.Empty; if (this.UserInfo.delegato != null && this.UserInfo.delegato.idPeople != null) { idPeopleDelegato = this.UserInfo.delegato.idPeople; } folder.systemID = this.CreateProject(folder.descrizione, idPeopleDelegato); if (folder.systemID == null) { throw new Exception(); } DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); fascicoli.NewFolder(this.UserInfo.idAmministrazione, folder); fascicoli.Dispose(); //Set project trustees fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); if (ruolo != null) { bool isFolder = (folder.idParent != folder.idFascicolo); // sottofascicoli: si da la visibilità ad essi a tutti coloro che vedono il fascicolo a cui essi appartengono // caso di rootFolder, segue la visibilità del fascicolo a cui fa riferimento (calcolata in fase di creazione del fascicolo) System.Collections.ArrayList listRuoliSuperiori; fascicoli.SetProjectTrustees(this.UserInfo.idPeople, folder.systemID, ruolo, folder.idFascicolo, isFolder, out listRuoliSuperiori, this.UserInfo.delegato); ruoliSuperiori = (Ruolo[])listRuoliSuperiori.ToArray(typeof(Ruolo)); } fascicoli.Dispose(); retValue = true; result = ResultCreazioneFolder.OK; } catch (Exception e) { logger.Debug("Errore durante la creazione di un folder.", e); retValue = false; result = ResultCreazioneFolder.GENERIC_ERROR; } return(retValue); }
private bool uo_is_autorizzata(string _codice, DocsPaVO.utente.Ruolo ruolo_caller, string[] ruoli_autorizzati) { string codice = _codice; if (_codice.StartsWith(@"E\") || _codice.StartsWith(@"I\")) { codice = _codice.Substring(_codice.IndexOf(@"\") + 1); } // if (h_ruoli == null) // h_ruoli = UOManager.GetRuoliUOSemplice (_user.idAmministrazione); string[] ruoli = (string[])h_ruoli[codice]; if (ruoli != null && ruoli.Length > 0) { foreach (string cod_ruolo in ruoli) { if (ruolo_is_autorizzato(cod_ruolo, ruoli_autorizzati)) { return(true); } } } return(false); }
/// <summary> /// /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result) { bool retValue = true; //... non fa nulla result = ResultCreazioneFolder.OK; return(retValue); }
/// <summary> /// Costruisce un oggetto InfoUtente a partire dagli id recuperati /// dalla tabella di configurazione stampa /// </summary> /// <param name="reg">Oggetto RegistroConservazionePrint contentente user_id e id_gruppo</param> /// <returns></returns> private InfoUtente GetInfoUtenteStampa(RegistroConservazionePrint reg) { DocsPaVO.utente.Utente u = Utenti.UserManager.getUtenteById(reg.print_userId); DocsPaVO.utente.Ruolo r = Utenti.UserManager.getRuoloByIdGruppo(reg.print_role); InfoUtente retVal = Utenti.UserManager.GetInfoUtente(u, r); return retVal; }
/// <summary> /// /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"></param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = false; result = ResultCreazioneFolder.GENERIC_ERROR; ruoliSuperiori = null; try { string idPeopleDelegato = string.Empty; if (this.UserInfo.delegato != null && this.UserInfo.delegato.idPeople != null) { idPeopleDelegato = this.UserInfo.delegato.idPeople; } folder.systemID = this.CreateProject(folder.descrizione, idPeopleDelegato); if (folder.systemID == null) { throw new Exception(); } DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); fascicoli.NewFolder(this.UserInfo.idAmministrazione, folder); //Set project trustees bool isFolder = (folder.idParent != folder.idFascicolo); if (ruolo != null) { // sottofascicoli: si da la visibilità ad essi a tutti coloro che vedono il fascicolo a cui essi appartengono // caso di rootFolder, segue la visibilità del fascicolo a cui fa riferimento (calcolata in fase di creazione del fascicolo) System.Collections.ArrayList listRuoliSuperiori; fascicoli.SetProjectTrustees(this.UserInfo.idPeople, folder.systemID, ruolo, folder.idFascicolo, isFolder, out listRuoliSuperiori, this.UserInfo.delegato); ruoliSuperiori = (Ruolo[])listRuoliSuperiori.ToArray(typeof(Ruolo)); } string valorechiave = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_PROJECT_LEVEL"); if (!string.IsNullOrEmpty(valorechiave) && valorechiave.Equals("1") && isFolder) { fascicoli.UpdateFolderLevels(UserInfo.idPeople, UserInfo.idGruppo, UserInfo.idAmministrazione, folder); } retValue = true; result = ResultCreazioneFolder.OK; } catch (Exception ex) { logger.Error(ex); retValue = false; result = ResultCreazioneFolder.GENERIC_ERROR; } return(retValue); }
public static RicercaSmistamentoElement AggiungiElementoRicerca(string idElemento, string tipo, InfoUtente infoUtente, string idRegistro) { //List<RicercaSmistamentoElement> elements = new List<RicercaSmistamentoElement>(); //string tipo = idElemento.Split('§')[0]; //string id = idElemento.Split('§')[1]; try { RicercaSmistamentoElement el = new RicercaSmistamentoElement(); // RUOLO if (tipo.Equals("R")) { string idGruppo = BusinessLogic.Utenti.UserManager.getRuoloById(idElemento).idGruppo; DocsPaVO.utente.Ruolo role = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(idGruppo); el.IdUO = role.uo.systemId; el.IdRuolo = idElemento; el.DescrizioneRuolo = role.descrizione; el.Type = SmistamentoNodeType.RUOLO; } // UTENTE else { DocsPaVO.utente.Utente ut = BusinessLogic.Utenti.UserManager.getUtenteById(idElemento); ut.ruoli = BusinessLogic.Utenti.UserManager.getRuoliUtente(idElemento); Ruolo role = ((Ruolo[])ut.ruoli.ToArray(typeof(Ruolo))).FirstOrDefault(); el.IdUO = role.uo.systemId; el.IdRuolo = role.systemId; //el.DescrizioneRuolo = role.descrizione; el.IdUtente = ut.idPeople; el.DescrizioneUtente = ut.cognome + " " + ut.nome; el.Type = SmistamentoNodeType.UTENTE; } return(el); } catch (Exception ex) { logger.Debug("Elemento non trovato - tipo=" + tipo + ", id=" + idElemento); return(null); } }
private static string GetToken(DocsPaVO.utente.Utente utente, DocsPaVO.utente.Ruolo ruolo) { //Controllo Correttezza Ruolo bool okRuolo = false; foreach (DocsPaVO.utente.Ruolo rl in utente.ruoli) { if (rl.idGruppo == ruolo.idGruppo) { okRuolo = true; } } if (okRuolo) { string tokenDiAutenticazione = null; try { string clearToken = string.Empty; clearToken += ruolo.systemId + "|"; clearToken += utente.idPeople + "|"; clearToken += ruolo.idGruppo + "|"; clearToken += utente.dst + "|"; clearToken += utente.idAmministrazione + "|"; clearToken += utente.userId + "|"; clearToken += utente.sede + "|"; clearToken += utente.urlWA; tokenDiAutenticazione = Utils.Encrypt(clearToken); } catch (Exception e) { // logger.Debug("Errore durante il GetInfoUtente.", e); } tokenDiAutenticazione = "SSO=" + tokenDiAutenticazione; return(tokenDiAutenticazione); } else { //logger.Debug("L'utente : " + utente.descrizione + " non appartiene al ruolo : " + ruolo.descrizione); return(null); } }
/// <summary> /// Questo metodo restituisce la lista dei corrispondenti destinatari della trasmissione. /// Nel caso in cui il destinatario sia una UO, restituisce la lista dei ruoli, /// definiti nella UO abilitati alla ricezione di trasmissioni. /// Nel caso in cui il destinatario sia un ruolo, restituisce la lista dei ruoli, /// definiti nella uo di appartenenza del ruolo, abilitati alla ricezione di trasmissioni. /// </summary> /// <param name="reg">AOO destinataria della spedizione</param> /// <param name="uoId">Identificativo della UO destinataria della spedizione</param> /// <returns>Lista dei ruoli cui trasmettere il documento</returns> private static List <Ruolo> GetRecipients(Registro reg, String uoId) { List <Ruolo> retVal = new List <Ruolo>(); try { Interoperabilita obj = new Interoperabilita(); DataSet ds = new DataSet(); obj.GetSelectiveRecipients(out ds, reg, uoId); for (int i = 0; i < ds.Tables["RUOLI"].Rows.Count; i++) { DataRow ruoloRow = ds.Tables["RUOLI"].Rows[i]; DocsPaVO.utente.Ruolo ruolo = new DocsPaVO.utente.Ruolo(); ruolo.systemId = ruoloRow["SYSTEM_ID"].ToString(); ruolo.codiceCorrispondente = ruoloRow["VAR_CODICE"].ToString(); ruolo.codiceRubrica = ruoloRow["VAR_COD_RUBRICA"].ToString(); ruolo.descrizione = ruoloRow["VAR_DESC_RUOLO"].ToString() + " " + ruoloRow["VAR_DESC_CORR"].ToString(); ruolo.livello = ruoloRow["NUM_LIVELLO"].ToString(); ruolo.idGruppo = ruoloRow["ID_GRUPPO"].ToString(); DocsPaVO.utente.UnitaOrganizzativa uoDest = new DocsPaVO.utente.UnitaOrganizzativa(); ruolo.uo = uoDest; ruolo.uo.systemId = ruoloRow["ID_UO"].ToString(); ruolo.tipoCorrispondente = "R"; retVal.Add(ruolo); } } catch (Exception e) { logger.Debug(e.ToString()); //db.closeConnection(); logger.Debug("Errore nella gestione dell'interoperabilità. (GetRecipients)", e); throw e; } return(retVal); }
/// <summary> /// Creazione di un nuovo documento per la stampa registro. /// </summary> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <param name="ruoliSuperiori"></param> /// <returns>ID del documento o 'null' se si è verificato un errore</returns> public bool CreateDocumentoStampaRegistro(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = false; ruoliSuperiori = null; try { retValue = this.DocumentManagerETDOCS.CreateDocumentoStampaRegistro(schedaDocumento, ruolo, out ruoliSuperiori); if (retValue) { retValue = this.DocumentManagerHERMES.CreateDocumentoStampaRegistro(schedaDocumento, ruolo); } } catch (Exception ex) { retValue = false; string errorMessage = string.Format("Errore nella creazione di un documento stampa registro: {0}", ex.Message); logger.Debug(errorMessage, ex); } return(retValue); }
/// <summary> /// Creazione di un nuovo documento per la stampa registro. /// </summary> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <returns></returns> public bool CreateDocumentoStampaRegistro(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo) { DocsPaVO.utente.Ruolo[] ruoliSuperiori; return(this.CreateDocumentoStampaRegistro(schedaDocumento, ruolo, out ruoliSuperiori)); }
/// <summary> /// Operazione per la creazione di un nuovo protocollo /// /// PreCondizioni: /// - Fornire un oggetto SchedaDocumento valido, completo /// degli attributi e degli oggetti significativi per il protocollo /// (es. numero, dataProtocollo, segnatura, oggetto "Protocollo") /// /// PostCondizioni: /// - Operazione di protocollazione documento effettuata con successo /// /// /// </summary> /// <param name="schedaDocumento">Oggetto contenente i metadati del documento da protocollare</param> /// <param name="ruolo">Ruolo dell'utente che protocolla il documento</param> /// <param name="risultatoProtocollazione">Parametro output: Esito più dettagliato dell'operazione</param> /// <param name="ruoliSuperiori"></param> /// <returns>Boolean, l'operazione di protocollazione è andata a buon fine o meno</returns> public bool CreateProtocollo(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { logger.Info("BEGIN"); //Performance.PerformanceLogWriter.CreatePerformanceLogWriter(@"c:\temp\DocumentManager.txt"); //Performance.PerformanceLogWriter log = new Performance.PerformanceLogWriter(); //log.StartLogEntry("CreateProtocollo"); bool retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; ruoliSuperiori = null; try { //log.StartLogEntry("CreateProtocollo_ETDOCS", true); retValue = this.DocumentManagerETDOCS.CreateProtocollo(schedaDocumento, ruolo, out risultatoProtocollazione, out ruoliSuperiori); //log.EndLogEntry(); //log.StartLogEntry("CreateProtocollo_DCTM", true); if (retValue) { retValue = this.DocumentManagerDocumentum.CreateProtocollo(schedaDocumento, ruolo, out risultatoProtocollazione); } //log.EndLogEntry(); } catch (Exception ex) { string errorMessage = string.Format("Errore nella protocollazione del documento: {0}", ex.Message); logger.Debug(errorMessage, ex); retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; } //log.EndLogEntry(); //Performance.PerformanceLogWriter.FlushPerformanceLogWriter(); logger.Info("END"); return(retValue); }
/// <summary> /// /// </summary> /// <param name="idAmministrazione"></param> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <param name="sede"></param> /// <param name="risultatoProtocollazione"></param> /// <returns></returns> public bool CreateProtocollo(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione) { DocsPaVO.utente.Ruolo[] ruoliSuperiori; return(this.CreateProtocollo(schedaDocumento, ruolo, out risultatoProtocollazione, out ruoliSuperiori)); }
/// <summary> /// Protocollazione di un documento predisposto /// </summary> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <param name="risultatoProtocollazione"></param> /// <returns></returns> public bool ProtocollaDocumentoPredisposto(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione) { bool retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; try { retValue = this.DocumentManagerETDOCS.ProtocollaDocumentoPredisposto(schedaDocumento, ruolo, out risultatoProtocollazione); if (retValue) { retValue = this.DocumentManagerDocumentum.ProtocollaDocumentoPredisposto(schedaDocumento, ruolo, out risultatoProtocollazione); } } catch (Exception ex) { string errorMessage = string.Format("Errore nella protocollazione del documento: {0}", ex.Message); logger.Debug(errorMessage, ex); retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; } return(retValue); }
/// <summary> /// Creazione nuovo sottofascicolo /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"> /// Ruoli superiori cui è impostata la visibilità del sottofascicolo /// </param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { bool retValue = false; result = ResultCreazioneFolder.GENERIC_ERROR; ruoliSuperiori = null; try { // Recuperare l'ID del padre del folder: dato che la modalità è diversa se il padre // è Fascicolo o Sottofascicolo, è necessario verificare la casistica // Caso in cui il parent del sottofascicolo è un sottofascicolo stesso Qualification qualSottoFascicoloParent = Dfs4DocsPa.getSottofascicoloQualificationById(folder.idParent); string parentId = DfsHelper.getDctmObjectId(this.GetServiceInstance <IQueryService>(false), qualSottoFascicoloParent); if (string.IsNullOrEmpty(parentId)) { // Caso in cui il parent del sottofascicolo è un fascicolo stesso qualSottoFascicoloParent = Dfs4DocsPa.getFascicoloQualificationById(folder.idFascicolo); parentId = DfsHelper.getDctmObjectId(this.GetServiceInstance <IQueryService>(false), qualSottoFascicoloParent); } if (!string.IsNullOrEmpty(parentId)) { ObjectIdentity parentIdentity = new ObjectIdentity(new ObjectId(parentId), DctmConfigurations.GetRepositoryName()); ObjectIdentity identity = new ObjectIdentity(DctmConfigurations.GetRepositoryName()); DataObject dataObject = new DataObject(identity, ObjectTypes.SOTTOFASCICOLO); dataObject.Properties.Properties.AddRange(Dfs4DocsPa.getSottoFascicoloProperties(folder)); dataObject.Relationships.Add(DfsHelper.createParentFolderRelationship(parentIdentity)); // Reperimento ACL del fascicolo di appartenenza e associazione al sottofascicolo CustomServices.AclDefinition aclDefinition = this.GetAclDefinitionSottoFascicolo(folder); AclHelper.setAclObjectProperties(dataObject.Properties, aclDefinition); DataPackage dataPackage = new DataPackage(dataObject); dataPackage = this.GetServiceInstance <IObjectService>(false).Create(dataPackage, null); retValue = (dataPackage.DataObjects.Count == 1); if (retValue) { result = ResultCreazioneFolder.OK; logger.Debug(string.Format("Documentum.CreateFolder: creato sottofascicolo con id {0}", folder.systemID)); } } else { throw new ApplicationException(string.Format("Non è stato possibile reperire l'oggetto parent per il folder con id '{0}'", folder.systemID)); } } catch (Exception ex) { retValue = false; logger.Debug(string.Format("Errore in Documentum.CreateFolder:\n{0}", ex.ToString())); } return(retValue); }
/// <summary> /// Import dei sottofascicoli per un fascicolo /// </summary> /// <param name="infoUtente"></param> /// <param name="amministrazione"></param> /// <param name="fascicolo"></param> /// <param name="ruolo"></param> /// <param name="statoMigrazione"></param> /// <param name="folders"></param> private static void ImportaSottofascicoli(InfoUtente infoUtente, InfoAmministrazione amministrazione, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.fascicolazione.Folder[] folders, DocsPaVO.utente.Ruolo ruolo, InfoStatoMigrazione statoMigrazione) { DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager = new DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager(infoUtente); // Fascicolo precedentementei importato DocsPaVO.fascicolazione.Folder previousFolder = null; int countRenamed = 0; if (folders == null) { folders = GetFolders(infoUtente, fascicolo); } // 1. Reperimento sottofascicoli contenuti nel fascicolo foreach (DocsPaVO.fascicolazione.Folder folder in folders) { if (projectManager.ContainsSottofascicolo(folder.systemID)) { // Inserimento dei metadati di migrazione per il folder InfoFascicoloMigrazione infoFascicolo = new InfoFascicoloMigrazione(fascicolo, folder); // Sottofascicolo è già esistente, save dei dati infoFascicolo.EsitoMigrazione = projectManager.ModifyFolder(folder); if (!infoFascicolo.EsitoMigrazione) { infoFascicolo.ErroreMigrazione = string.Format("Errore nella modifica del sottofascicolo: '{0}'", folder.descrizione); } statoMigrazione.SetFascicoloMigrazione(infoFascicolo); if (folder.childs.Count > 0) { // Import dei sottofascicoli figli ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, (DocsPaVO.fascicolazione.Folder[])folder.childs.ToArray(typeof(DocsPaVO.fascicolazione.Folder)), ruolo, statoMigrazione); } // Sottofascicolo già esistente Log.GetInstance(amministrazione).Write(string.Format("Sottofascicolo con codice {0} già esistente. Aggiornamento.", folder.descrizione), false); } else { // Il sottofascicolo non ha descrizione, viene impostata la system_id if (string.IsNullOrEmpty(folder.descrizione)) { folder.descrizione = folder.systemID; } string oldDescription = folder.descrizione; // Verifica se, nell'ambito dello stesso fascicolo, esistono sottofascicoli con descrizione duplicata // if (DocsPaDocumentale_DOCUMENTUM.DctmServices.Dfs4DocsPa.containsSottofascicoloByDescription(folder.idFascicolo, folder.descrizione)) // { folder.descrizione = string.Format("{0} ({1})", folder.descrizione, folder.systemID); // Log.GetInstance(amministrazione).Write(string.Format("Migrazione sottofascicolo. Rinominato sottofascicolo duplicato '{0}' in '{1}'", oldDescription, folder.descrizione), false); // } DocsPaVO.fascicolazione.ResultCreazioneFolder resultCreazioneFolder; // 3. Creazione oggetto Folder if (projectManager.CreateFolder(folder, ruolo, out resultCreazioneFolder)) { // Inserimento dei metadati di migrazione per il folder InfoFascicoloMigrazione infoFascicolo = new InfoFascicoloMigrazione(fascicolo, folder); infoFascicolo.EsitoMigrazione = true; statoMigrazione.SetFascicoloMigrazione(infoFascicolo); Log.GetInstance(amministrazione).Write(string.Format("Migrazione sottofascicolo. Descrizione sottofascicolo: '{0}' - Codice: '{1}' - Descrizione: '{2}'", folder.descrizione, fascicolo.codice, fascicolo.descrizione), false); folder.descrizione = oldDescription; previousFolder = folder; if (folder.childs.Count > 0) { // Import dei sottofascicoli figli ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, (DocsPaVO.fascicolazione.Folder[])folder.childs.ToArray(typeof(DocsPaVO.fascicolazione.Folder)), ruolo, statoMigrazione); } } else { // 2a. Errore nell'inserimento del folder throw new ApplicationException( string.Format("Si è verificato un errore nell'inserimento del sottofascicolo '{0}' per il fascicolo '{1}' per l'amministrazione '{2}'", folder.descrizione, fascicolo.codice, amministrazione.Codice)); } } } }
/// <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); }
/// <summary> /// Creazione di un nuovo folder in un fascicolo in docspa e documentum /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result) { Ruolo[] ruoliSuperiori; return(this.CreateFolder(folder, ruolo, out result, out ruoliSuperiori)); }
/// <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); }
public static Services.Registers.GetRegistersOrRF.GetRegistersOrRFResponse GetRegistersOrRF(Services.Registers.GetRegistersOrRF.GetRegistersOrRFRequest request) { Services.Registers.GetRegistersOrRF.GetRegistersOrRFResponse response = new Services.Registers.GetRegistersOrRF.GetRegistersOrRFResponse(); try { DocsPaVO.utente.Utente utente = null; DocsPaVO.utente.InfoUtente infoUtente = null; //Inizio controllo autenticazione utente infoUtente = Utils.CheckAuthentication(request, "GetRegistersOrRF"); utente = BusinessLogic.Utenti.UserManager.getUtenteById(infoUtente.idPeople); if (utente == null) { //Utente non trovato throw new PisException("USER_NO_EXIST"); } //Fine controllo autenticazione utente if (string.IsNullOrEmpty(request.CodeRole) && string.IsNullOrEmpty(request.IdRole)) { throw new PisException("REQUIRED_CODE_OR_ID_ROLE"); } if (!string.IsNullOrEmpty(request.CodeRole) && !string.IsNullOrEmpty(request.IdRole)) { throw new PisException("REQUIRED_ONLY_CODE_OR_ID_ROLE"); } Domain.Register[] registerResponse = null; DocsPaVO.utente.Registro[] registri = null; DocsPaVO.utente.Ruolo ruolo = null; ArrayList registriLista = new ArrayList(); if (!string.IsNullOrEmpty(request.CodeRole)) { ruolo = BusinessLogic.Utenti.UserManager.getRuoloByCodice(request.CodeRole); } else { if (!string.IsNullOrEmpty(request.IdRole)) { try { //Id gruppo ruolo = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(request.IdRole); } catch { //Ruolo non trovato throw new PisException("ROLE_NO_EXIST"); } } } if (ruolo != null) { //Prendi i registri e gli rf if ((!request.OnlyRegisters && !request.OnlyRF) || (request.OnlyRegisters && request.OnlyRF)) { registriLista = BusinessLogic.Utenti.RegistriManager.getListaRegistriRfRuolo(ruolo.systemId, string.Empty, string.Empty); } else { //Prendi solo i registri if (request.OnlyRegisters && !request.OnlyRF) { registriLista = BusinessLogic.Utenti.RegistriManager.getListaRegistriRfRuolo(ruolo.systemId, "0", string.Empty); } else { //Prendi solo gli RF if (request.OnlyRF && !request.OnlyRegisters) { registriLista = BusinessLogic.Utenti.RegistriManager.getListaRegistriRfRuolo(ruolo.systemId, "1", string.Empty); } } } if (registriLista != null && registriLista.Count > 0) { registerResponse = new Domain.Register[registriLista.Count]; int i = 0; foreach (DocsPaVO.utente.Registro reg in registriLista) { Domain.Register regTemp = new Domain.Register(); regTemp = Utils.GetRegister(reg); registerResponse[i] = regTemp; i++; } } } else { //Ruolo non trovato throw new PisException("ROLE_NO_EXIST"); } response.Registers = registerResponse; response.Success = true; } catch (PisException pisEx) { logger.ErrorFormat("PISException: {0}, {1}", pisEx.ErrorCode, pisEx.Description); response.Error = new Services.ResponseError { Code = pisEx.ErrorCode, Description = pisEx.Description }; response.Success = false; } catch (Exception ex) { logger.ErrorFormat("Eccezione Generica: APPLICATION_ERROR, {0}", ex.Message); response.Error = new Services.ResponseError { Code = "APPLICATION_ERROR", Description = ex.Message }; response.Success = false; } return(response); }
/// <summary> /// Protocollazione di un documento predisposto /// </summary> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <param name="risultatoProtocollazione"></param> /// <returns></returns> public bool ProtocollaDocumentoPredisposto(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione) { bool retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; try { // Stacco del numero di protocollo da parte di WSPia retValue = this._documentManagerWSPIA.CreateProtocollo(schedaDocumento, ruolo, out risultatoProtocollazione); // Se il risultato è positivo, si procede con una protocollazione di predisposto su ETDocs if (retValue && risultatoProtocollazione == ResultProtocollazione.OK) { retValue = this._documentManagerETDOCS.ProtocollaDocumentoPredisposto(schedaDocumento, ruolo, out risultatoProtocollazione); } // Se la protocollazione del predisposto è andata a buon fine, si procede con la put file su WsPia if (retValue && risultatoProtocollazione == ResultProtocollazione.OK) { if (schedaDocumento.documenti.Count > 0) { List <FileRequest> versions = new List <DocsPaVO.documento.FileRequest>( (DocsPaVO.documento.FileRequest[]) schedaDocumento.documenti.ToArray(typeof(DocsPaVO.documento.FileRequest))); // Ordinamento versioni versions.Sort( delegate(DocsPaVO.documento.FileRequest x, DocsPaVO.documento.FileRequest y) { int versionX, versionY; Int32.TryParse(x.version, out versionX); Int32.TryParse(y.version, out versionY); return(versionX.CompareTo(versionY)); } ); // Invio file ultima versione del doc principale TransferFileToWsPia(versions[0]); } if (schedaDocumento.allegati != null && schedaDocumento.allegati.Count > 0) { foreach (FileRequest attachment in schedaDocumento.allegati) { this.TransferFileToWsPia(attachment); } } } // Protocollazione classica //retValue = this.CreateProtocollo(schedaDocumento, ruolo, out risultatoProtocollazione); /* * if(retValue) * retValue = this.DocumentManagerETDOCS.ProtocollaDocumentoPredisposto(schedaDocumento, ruolo, out risultatoProtocollazione); */ } catch (Exception ex) { string errorMessage = string.Format("Errore nella protocollazione del documento: {0}", ex.Message); logger.Debug(errorMessage, ex); retValue = false; risultatoProtocollazione = ResultProtocollazione.APPLICATION_ERROR; } return(retValue); }
/// <summary> /// /// </summary> /// <param name="schedaDocumento"></param> /// <param name="ruolo"></param> /// <param name="ruoliSuperiori"></param> /// <returns></returns> public bool CreateDocumentoGrigio(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.utente.Ruolo[] ruoliSuperiori, string conCopia = null) { logger.Info("BEGIN"); //Performance.PerformanceLogWriter.CreatePerformanceLogWriter(@"c:\temp\DocumentManager.txt"); //Performance.PerformanceLogWriter log = new Performance.PerformanceLogWriter(); //log.StartLogEntry("CreateDocumentoGrigio"); bool retValue = false; ruoliSuperiori = null; try { //log.StartLogEntry("CreateDocumentoGrigio_ETDOCS", true); retValue = this.DocumentManagerETDOCS.CreateDocumentoGrigio(schedaDocumento, ruolo, out ruoliSuperiori); //log.EndLogEntry(); //log.StartLogEntry("CreateDocumentoGrigio_DCTM", true); //log.EndLogEntry(); } catch (Exception ex) { string errorMessage = string.Format("Errore nella creazione di un documento grigio: {0}", ex.Message); logger.Debug(errorMessage, ex); retValue = false; } //log.EndLogEntry(); //Performance.PerformanceLogWriter.FlushPerformanceLogWriter(); logger.Info("END"); return(retValue); }
/// <summary> /// Creazione nuovo sottofascicolo /// </summary> /// <param name="folder"></param> /// <param name="ruolo"></param> /// <param name="result"></param> /// <param name="ruoliSuperiori"> /// Ruoli superiori cui è impostata la visibilità del sottofascicolo /// </param> /// <returns></returns> public bool CreateFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, out DocsPaVO.fascicolazione.ResultCreazioneFolder result, out DocsPaVO.utente.Ruolo[] ruoliSuperiori) { result = ResultCreazioneFolder.OK; ruoliSuperiori = null; return(true); }
private void CreateStrutturaFascicolo(Fascicolo fascicolo, InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo) { DocsPaDB.Query_DocsPAWS.Amministrazione amm = new DocsPaDB.Query_DocsPAWS.Amministrazione(); DocsPaDB.Query_DocsPAWS.Fascicoli fascicoli = new DocsPaDB.Query_DocsPAWS.Fascicoli(); DocsPaVO.amministrazione.OrgNodoTitolario nodoTit = amm.getNodoTitolario(fascicolo.idClassificazione); string idPeopleDelegato = string.Empty; if (infoUtente.delegato != null && infoUtente.delegato.idPeople != null) { idPeopleDelegato = infoUtente.delegato.idPeople; } using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider()) { // Leggo la struttura del template associato al fascicolo e ricreo la struttura su project Folder[] template = new DocsPaDB.Query_DocsPAWS.Fascicoli().GetFascicoloTemplate(fascicolo.systemID, nodoTit.ID, infoUtente.idAmministrazione); if (template == null) { return; } string key_beprojectlevel = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_PROJECT_LEVEL"); var rootfolder = fascicoli.getRootFolderFasc(fascicolo.systemID); foreach (var item in template) { if (string.IsNullOrEmpty(item.idParent)) { item.idParent = rootfolder; } } for (int i = 0; i < template.Length; i++) { string tempID = template[i].systemID; template[i].idFascicolo = fascicolo.systemID; // Creazione del folder template[i].systemID = CreateProject(template[i].descrizione, idPeopleDelegato); if (string.IsNullOrEmpty(template[i].systemID)) { throw new Exception("errore durante la creazione del folder da template"); } // La creazione è andata a buon fine, quindi si aggiorna il record relativo alla folder con i dati del fascicolo if (!fascicoli.NewFolder(infoUtente.idAmministrazione, template[i], dbProvider)) { throw new Exception("errore aggiornamento dati del folder da template"); } // Imposto ID_TITOLARIO, cioe' il titolario di appartenenza sia per il fascicolo che per il folder if (string.IsNullOrEmpty(nodoTit.ID_Titolario)) { if (!fascicoli.updateIdTitolario(nodoTit.ID_Titolario, fascicolo.systemID, template[i].systemID, dbProvider)) { throw new Exception("errore durante l'aggiornamento dell'ID_TITOLARIO per il Fascicolo e il Folder"); } } // Si da la visibilità dei sottofascicoli a tutti coloro che vedono il fascicolo a cui essi appartengono if (ruolo != null) { System.Collections.ArrayList tmp; // Variabile temporanea: i ruoli superiori sono già stati reperiti if (!fascicoli.SetProjectTrustees(infoUtente.idPeople, template[i].systemID, ruolo, template[i].idFascicolo, true, fascicolo.idRegistro, fascicolo.privato != "0", out tmp, infoUtente.delegato)) { throw new Exception("errore durante estensione visibilità del Folder da template"); } } if (!string.IsNullOrEmpty(key_beprojectlevel) && key_beprojectlevel.Equals("1")) { UpdateFolderCodLivello(template[i], infoUtente); } foreach (Folder item in template) { if (item.idParent == tempID) { item.idParent = template[i].systemID; } } } } }
/// <summary> /// Migrazione di un singolo fascicolo /// </summary> /// <param name="fascicolo"></param> /// <param name="infoUtente"></param> /// <param name="amministrazione"></param> /// <param name="statoMigrazione"></param> private static void ImportaFascicolo(DocsPaVO.fascicolazione.Fascicolo fascicolo, InfoUtente infoUtente, InfoAmministrazione amministrazione, InfoStatoMigrazione statoMigrazione) { DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager = new DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager(infoUtente); DocsPaDocumentale.Interfaces.IAclEventListener aclEventListener = new DocsPaDocumentale_DOCUMENTUM.Documentale.AclEventListener(infoUtente); // 1. Reperimento del ruolo creatore del fascicolo DocsPaVO.utente.Ruolo ruolo = DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getRuoloCreatore(fascicolo.systemID); // NB: il reperimento dei fascicoli generali serve solo per migrare // gli eventuali sottofascicoli, non per migrare il fascicolo stesso, // che è già stato creato in sede di creazione del nodo di titolario if (fascicolo.tipo == "G") { // 2. Migrazione dei sottofascicoli, in caso di fascicolo generale (già creato in sede di creazione del titolario) ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione); } else { InfoFascicoloMigrazione fascicoloMigrazione = new InfoFascicoloMigrazione(fascicolo); // Calcolo dell'hash del fascicolo fascicoloMigrazione.HashFascicolo = GetHashFascicolo(fascicolo, true); // 2. Creazione del corrispondente fascicolo in documentum DocsPaVO.fascicolazione.ResultCreazioneFascicolo result; DocsPaVO.utente.Ruolo[] ruoliSuperiori; if (projectManager.ContainsFascicoloProcedimentale(fascicolo.systemID)) { // Fascicolo è già esistente, save dei dati con refresh delle entries dell'acl associata fascicoloMigrazione.EsitoMigrazione = projectManager.ModifyProject(fascicolo, true); if (!fascicoloMigrazione.EsitoMigrazione) { fascicoloMigrazione.ErroreMigrazione = string.Format("Si è verificato un errore nella modifica del fascicolo '{0}' per l'amministrazione '{1}'", fascicolo.codice, amministrazione.Codice); } else { // Migrazione dei sottofascicoli ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione); } Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicolo. Codice: '{0}' - Descrizione: '{1}'. Aggiornamento.", fascicolo.codice, fascicolo.descrizione), false); } else if (projectManager.CreateProject(null, fascicolo, ruolo, false, out result, out ruoliSuperiori)) { if (result == DocsPaVO.fascicolazione.ResultCreazioneFascicolo.OK) { fascicoloMigrazione.EsitoMigrazione = true; Log.GetInstance(amministrazione).Write(string.Format("Migrazione fascicolo. Codice: '{0}' - Descrizione: '{1}'", fascicolo.codice, fascicolo.descrizione), false); // 3. Notifica evento di creazione fascicolo completato aclEventListener.FascicoloCreatoEventHandler(null, fascicolo, ruolo, ruoliSuperiori); try { // 4. Migrazione dei sottofascicoli ImportaSottofascicoli(infoUtente, amministrazione, fascicolo, null, ruolo, statoMigrazione); } catch (Exception ex) { //4a. Errore nella migrazione dei sottofascicoli, viene rimosso il fascicolo creato ((DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager)projectManager).DeleteProject(fascicolo); fascicoloMigrazione.EsitoMigrazione = false; fascicoloMigrazione.ErroreMigrazione = ex.Message; } // 5. Impostazione ownership del fascicolo string utenteCreatore = DocsPaDocumentale_DOCUMENTUM.DocsPaObjectTypes.TypeUtente.NormalizeUserName(DocsPaDocumentale_DOCUMENTUM.DocsPaServices.DocsPaQueryHelper.getUtenteCreatore(fascicolo.systemID).userId); ((DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager)projectManager).SetOwnershipFascicolo(fascicolo.systemID, utenteCreatore); } else { // 3a. Errore nella creazione del fascicolo fascicoloMigrazione.EsitoMigrazione = false; fascicoloMigrazione.ErroreMigrazione = string.Format("Si è verificato un errore nella creazione del fascicolo '{0}' per l'amministrazione '{1}'", fascicolo.codice, amministrazione.Codice); } } fascicoloMigrazione.DataMigrazione = DateTime.Now.ToString(); statoMigrazione.SetFascicoloMigrazione(fascicoloMigrazione); } }
/// <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); }
public static Services.Authentication.LogIn.LogInResponse LogIn(Services.Authentication.LogIn.LogInRequest request) { Services.Authentication.LogIn.LogInResponse response = new Services.Authentication.LogIn.LogInResponse(); try { DocsPaVO.utente.Utente utente = null; string idWebSession = string.Empty; string ipAddress = string.Empty; if (request != null && (string.IsNullOrEmpty(request.UserName) || string.IsNullOrEmpty(request.Password))) { throw new PisException("MISSING_PARAMETER"); } DocsPaVO.utente.UserLogin.LoginResult loginResult = DocsPaVO.utente.UserLogin.LoginResult.OK; DocsPaVO.utente.UserLogin login = new DocsPaVO.utente.UserLogin { UserName = request.UserName, Password = request.Password, }; utente = BusinessLogic.Utenti.Login.loginMethod(login, out loginResult, true, idWebSession, out ipAddress); if (utente == null) { //Utente non trovato throw new PisException("USER_NO_EXIST"); } // Giovanni Olivari - 06/11/2012 // Se l'utente non ha Ruoli viene generata un'eccezione prima di questo blocco di codice, // quindi arrivati qui posso essere sicuro di avere almeno un ruolo, prendo il primo della lista // DocsPaVO.utente.Ruolo ruolo = null; ruolo = (DocsPaVO.utente.Ruolo)utente.ruoli[0]; if (loginResult == DocsPaVO.utente.UserLogin.LoginResult.OK) { // Generazione del token di autenticazione response.AuthenticationToken = CreateAuthToken(utente, ruolo); BusinessLogic.Utenti.Login.logoff(utente.userId, utente.idAmministrazione, utente.dst); } else { throw new PisException("MISSING_PARAMETER"); } response.Success = true; } catch (PisException pisEx) { logger.ErrorFormat("PISException: {0}, {1}", pisEx.ErrorCode, pisEx.Description); response.Error = new Services.ResponseError { Code = pisEx.ErrorCode, Description = pisEx.Description }; response.Success = false; } catch (Exception ex) { logger.ErrorFormat("Eccezione Generica: APPLICATION_ERROR, {0}", ex.Message); response.Error = new Services.ResponseError { Code = "APPLICATION_ERROR", Description = ex.Message }; response.Success = false; } return(response); }
public void filtra_trasmissioni(DocsPaVO.rubrica.ParametriRicercaRubrica qr, ref ArrayList ers) { ArrayList a = new ArrayList(); ArrayList ruoli_autorizzati = new ArrayList(); DocsPaVO.trasmissione.TipoOggetto tipo_oggetto; tipo_oggetto = (qr.ObjectType.StartsWith("F:")) ? DocsPaVO.trasmissione.TipoOggetto.FASCICOLO : DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; string id_nodo_titolario = (tipo_oggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) ? qr.ObjectType.Substring(2) : null; DocsPaVO.utente.Ruolo r = BusinessLogic.Utenti.UserManager.getRuolo(qr.caller.IdRuolo); DocsPaDB.Utils.Gerarchia g = new DocsPaDB.Utils.Gerarchia(); switch (qr.calltype) { case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_MODELLI_TRASM_ALL: case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_TRASM_ALL: ruoli_autorizzati = g.getRuoliAut(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_MODELLI_TRASM_SUP: case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_TRASM_SUP: ruoli_autorizzati = g.getGerarchiaSup(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_MODELLI_TRASM_INF: case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_TRASM_INF: ruoli_autorizzati = g.getGerarchiaInf(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_MODELLI_TRASM_PARILIVELLO: case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_TRASM_PARILIVELLO: ruoli_autorizzati = g.getGerarchiaPariLiv(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.rubrica.ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_INT_DEST: DocsPaVO.trasmissione.RagioneTrasmissione rTo = BusinessLogic.Trasmissioni.RagioniManager.GetRagione("TO", _user.idAmministrazione); DocsPaVO.trasmissione.TipoGerarchia gTo = rTo.tipoDestinatario; switch (gTo) { case DocsPaVO.trasmissione.TipoGerarchia.INFERIORE: ruoli_autorizzati = g.getGerarchiaInf(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.trasmissione.TipoGerarchia.PARILIVELLO: ruoli_autorizzati = g.getGerarchiaPariLiv(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.trasmissione.TipoGerarchia.SUPERIORE: ruoli_autorizzati = g.getGerarchiaSup(r, qr.caller.IdRegistro, id_nodo_titolario, tipo_oggetto); break; case DocsPaVO.trasmissione.TipoGerarchia.TUTTI: ruoli_autorizzati = g.getRuoliAut(r, qr.caller.IdRegistro, null, tipo_oggetto); break; } break; default: return; } string[] c_ruoli_aut = new string[ruoli_autorizzati.Count]; for (int i = 0; i < ruoli_autorizzati.Count; i++) { c_ruoli_aut[i] = ((DocsPaVO.utente.Ruolo)ruoli_autorizzati[i]).codiceRubrica; } Array.Sort(c_ruoli_aut); foreach (DocsPaVO.rubrica.ElementoRubrica er in ers) { try { switch (er.tipo) { case "U": if (uo_is_autorizzata((er.interno ? "I" : "E") + @"\" + er.codice, r, c_ruoli_aut) || (qr.ObjectType == "G")) { a.Add(er); } break; case "R": if (ruolo_is_autorizzato(er.codice, c_ruoli_aut) || (qr.ObjectType == "G")) { a.Add(er); } break; case "P": if (utente_is_autorizzato((er.interno ? "I" : "E") + @"\" + er.codice, c_ruoli_aut) || (qr.ObjectType == "G")) { a.Add(er); } break; case "L": case "F": //if (utente_is_autorizzato ((er.interno ? "I" : "E") + @"\" + er.codice, c_ruoli_aut) || (qr.ObjectType == "G")) a.Add(er); break; } } catch (Exception ex) { Console.WriteLine(ex.Message); } } ers = a; }
public static Services.Authentication.Authenticate.AuthenticateResponse Authenticate(Services.Authentication.Authenticate.AuthenticateRequest request) { Services.Authentication.Authenticate.AuthenticateResponse response = new Services.Authentication.Authenticate.AuthenticateResponse(); try { DocsPaVO.utente.Utente utente = null; if (request == null || string.IsNullOrEmpty(request.UserName)) { throw new PisException("MISSING_PARAMETER"); } if (string.IsNullOrEmpty(request.Password)) { throw new PisException("MISSING_PARAMETER"); } DocsPaVO.utente.UserLogin userlog = new UserLogin(request.UserName, request.Password, null); System.Collections.ArrayList listaAmmin = BusinessLogic.Utenti.UserManager.getListaIdAmmUtente(userlog); if (listaAmmin != null && listaAmmin.Count > 0) { if (listaAmmin.Count == 1) { userlog.IdAmministrazione = listaAmmin[0].ToString(); } else { throw new PisException("APPLICATION_ERROR"); } } if (listaAmmin == null) { throw new PisException("APPLICATION_ERROR"); } utente = BusinessLogic.Utenti.UserManager.getUtente(request.UserName, userlog.IdAmministrazione); if (utente == null) { //Utente non trovato throw new PisException("APPLICATION_ERROR"); } string encPass = BusinessLogic.Amministrazione.AmministraManager.GetPasswordUtenteMultiAmm(request.UserName.ToUpper()); encPass = encPass.Split('^')[0]; if (DocsPaUtils.Security.CryptographyManager.CalcolaImpronta(System.Text.Encoding.Unicode.GetBytes(request.Password)) != encPass) { throw new PisException("APPLICATION_ERROR"); } DocsPaVO.utente.Ruolo ruolo = Utils.GetRuoloPreferito(utente.idPeople); if (ruolo == null) { //L'utente non ha ruoli throw new PisException("APPLICATION_ERROR"); } DocsPaVO.utente.InfoUtente infoUtente = new DocsPaVO.utente.InfoUtente(utente, ruolo); utente.ruoli = new System.Collections.ArrayList(); utente.ruoli.Add(ruolo); response.AuthenticationToken = CreateAuthToken(utente, ruolo); DocsPaVO.utente.Corrispondente corr = BusinessLogic.Utenti.UserManager.getCorrispondenteBySystemID(utente.systemId); response.User = Utils.GetCorrespondent(corr, infoUtente); //response.User = new Domain.Correspondent(); //response.User.Name = utente.nome; //response.User.Surname = utente.cognome; //response.User.Location = utente.sede; //response.User.Email = utente.email; //response.User.Id = utente.systemId; //response.User.CorrespondentType = utente.tipoCorrispondente; //response.User.Type = "I"; //response.User.Description = utente.descrizione; //response.User.Code = utente.userId; response.Success = true; } catch (PisException pisEx) { logger.ErrorFormat("PISException: {0}, {1}", pisEx.ErrorCode, pisEx.Description); response.Error = new Services.ResponseError { Code = pisEx.ErrorCode, Description = pisEx.Description }; response.Success = false; } catch (Exception ex) { logger.ErrorFormat("Eccezione Generica: APPLICATION_ERROR, {0}", ex.Message); response.Error = new Services.ResponseError { Code = "APPLICATION_ERROR", Description = ex.Message }; response.Success = false; } return(response); }