Example #1
0
 /// <summary>
 /// Aggiornamento visibilità di più ruoli su un titolario
 /// </summary>
 /// <param name="nodoTitolario"></param>
 /// <param name="ruoliTitolario"></param>
 /// <returns></returns>
 public DocsPaVO.amministrazione.EsitoOperazione[] SetAclNodoTitolario(DocsPaVO.amministrazione.OrgNodoTitolario nodoTitolario, DocsPaVO.amministrazione.OrgRuoloTitolario[] ruoliTitolario)
 {
     return(this.InstanceETDOCS.SetAclNodoTitolario(nodoTitolario, ruoliTitolario));
 }
Example #2
0
        /// <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);
        }
Example #3
0
 public bool SetAclRuoloNodoTitolario(DocsPaVO.amministrazione.OrgNodoTitolario nodoTitolario, DocsPaVO.amministrazione.OrgRuoloTitolario ruoloTitolario)
 {
     return(this.InstanceETDOCS.SetAclRuoloNodoTitolario(nodoTitolario, ruoloTitolario));
 }
Example #4
0
 public bool DeleteNodoTitolario(DocsPaVO.amministrazione.OrgNodoTitolario nodoTitolario)
 {
     return(this.InstanceETDOCS.DeleteNodoTitolario(nodoTitolario));
 }
Example #5
0
        private DocsPaVO.InstanceAccess.Metadata.ContestoArchivistico getContestoArchivistico(DocsPaVO.documento.SchedaDocumento schDoc, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.utente.InfoUtente infoUtente)
        {
            DocsPaVO.InstanceAccess.Metadata.ContestoArchivistico   retval  = new DocsPaVO.InstanceAccess.Metadata.ContestoArchivistico();
            List <DocsPaVO.InstanceAccess.Metadata.Fascicolazione>  fasList = new List <DocsPaVO.InstanceAccess.Metadata.Fascicolazione>();
            List <DocsPaVO.InstanceAccess.Metadata.Classificazione> titList = new List <DocsPaVO.InstanceAccess.Metadata.Classificazione>();

            object[] fasAList = BusinessLogic.Fascicoli.FascicoloManager.getFascicoliDaDocNoSecurity(infoUtente, schDoc.systemId).ToArray();
            foreach (object fo in fasAList)
            {
                DocsPaVO.fascicolazione.Fascicolo fas = fo as DocsPaVO.fascicolazione.Fascicolo;

                if (fas != null)
                {
                    if (fas.tipo == "P")
                    {
                        DocsPaVO.InstanceAccess.Metadata.Fascicolazione fascicolazione = new DocsPaVO.InstanceAccess.Metadata.Fascicolazione();

                        fascicolazione.DescrizioneFascicolo = fas.descrizione;
                        fascicolazione.CodiceFascicolo      = fas.codice;

                        fascicolazione.CodiceSottofascicolo      = null;
                        fascicolazione.DescrizioneSottofascicolo = null;


                        fasList.Add(fascicolazione);
                        if (fas.idTitolario != null)
                        {
                            DocsPaVO.amministrazione.OrgNodoTitolario nodo = BusinessLogic.Amministrazione.TitolarioManager.getNodoTitolario(fas.idTitolario);
                            fascicolazione.TitolarioDiRierimento = nodo.Descrizione;
                        }


                        foreach (DocsPaVO.fascicolazione.Folder f in BusinessLogic.Fascicoli.FolderManager.GetFoldersDocument(schDoc.systemId, fas.systemID))
                        {
                            DocsPaVO.InstanceAccess.Metadata.Fascicolazione fasFolder = new DocsPaVO.InstanceAccess.Metadata.Fascicolazione();
                            fasFolder.CodiceFascicolo           = fas.descrizione;
                            fasFolder.DescrizioneFascicolo      = fas.codice;
                            fasFolder.CodiceSottofascicolo      = f.systemID;
                            fasFolder.DescrizioneSottofascicolo = f.descrizione;
                            fasFolder.TitolarioDiRierimento     = fascicolazione.TitolarioDiRierimento;
                            fasList.Add(fasFolder);
                        }
                    }
                    else
                    {
                        DocsPaVO.amministrazione.OrgNodoTitolario        nodo = BusinessLogic.Amministrazione.TitolarioManager.getNodoTitolario(fas.idTitolario);
                        DocsPaVO.InstanceAccess.Metadata.Classificazione cl   = new DocsPaVO.InstanceAccess.Metadata.Classificazione();
                        cl.TitolarioDiRiferimento = nodo.Descrizione;
                        cl.CodiceClassificazione  = nodo.Codice;
                        titList.Add(cl);
                    }
                }
            }

            List <DocsPaVO.InstanceAccess.Metadata.DocumentoCollegato> lstDocColl = new List <DocsPaVO.InstanceAccess.Metadata.DocumentoCollegato>();

            if (schDoc.rispostaDocumento != null)
            {
                if ((schDoc.rispostaDocumento.docNumber != null) && (schDoc.rispostaDocumento.idProfile != null))
                {
                    SchedaDocumento sc = BusinessLogic.Documenti.DocManager.getDettaglio(infoUtente, schDoc.rispostaDocumento.idProfile, schDoc.rispostaDocumento.docNumber);
                    DocsPaVO.InstanceAccess.Metadata.DocumentoCollegato docColl = new DocsPaVO.InstanceAccess.Metadata.DocumentoCollegato
                    {
                        IDdocumento   = schDoc.rispostaDocumento.idProfile,
                        DataCreazione = formattaData(convertiData(sc.dataCreazione)),
                        Oggetto       = sc.oggetto.descrizione,
                    };
                    if (sc.protocollo != null)
                    {
                        docColl.DataProtocollo      = formattaData(convertiData(sc.protocollo.dataProtocollazione));
                        docColl.NumeroProtocollo    = sc.protocollo.numero;
                        docColl.SegnaturaProtocollo = sc.protocollo.segnatura;
                    }
                    lstDocColl.Add(docColl);
                }
            }



            retval.Fascicolazione     = fasList.ToArray();
            retval.Classificazione    = titList.ToArray();
            retval.DocumentoCollegato = lstDocColl.ToArray();
            return(retval);
        }
Example #6
0
        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;
                        }
                    }
                }
            }
        }
Example #7
0
        /// <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);
        }