Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="row"></param>
        /// <param name="infoUtente"></param>
        /// <returns></returns>
        private static DocsPaVO.fascicolazione.Folder GetFolder(DataRow row, InfoUtente infoUtente)
        {
            DocsPaVO.fascicolazione.Folder folder = new DocsPaVO.fascicolazione.Folder();

            folder.systemID    = DataReaderHelper.GetValue <object>(row, "SYSTEM_ID", false).ToString();
            folder.descrizione = DataReaderHelper.GetValue <object>(row, "DESCRIPTION", true, string.Empty).ToString();
            folder.idFascicolo = DataReaderHelper.GetValue <object>(row, "ID_FASCICOLO", false).ToString();
            folder.idParent    = DataReaderHelper.GetValue <object>(row, "ID_PARENT", false).ToString();

            using (DocsPaDB.DBProvider dbProvider = new DocsPaDB.DBProvider())
            {
                DataSet dsFolderChilds = new DataSet();

                if (dbProvider.ExecuteQuery(dsFolderChilds, GetQueryFolderChilds(infoUtente, folder.systemID)))
                {
                    foreach (DataRow rowChild in dsFolderChilds.Tables[0].Rows)
                    {
                        DocsPaVO.fascicolazione.Folder child = GetFolder(rowChild, infoUtente);

                        folder.childs.Add(child);
                    }
                }
            }

            return(folder);
        }
Exemple #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="fascicolo"></param>
 /// <param name="folder"></param>
 public InfoFascicoloMigrazione(DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.fascicolazione.Folder folder)
 {
     this.Id          = folder.systemID;
     this.Codice      = string.Format("{0}.{1}", fascicolo.codice, folder.descrizione);
     this.Descrizione = folder.descrizione;
     this.Tipo        = "S";
 }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="codiceFascicolo"></param>
        /// <returns></returns>
        public static DocsPaVO.fascicolazione.Folder GetFolderFascicolo(DocsPaVO.utente.InfoUtente infoUtente, string codiceFascicolo)
        {
            DocsPaVO.fascicolazione.Folder folder = BusinessLogic.Fascicoli.FolderManager.getFolder(infoUtente.idPeople, infoUtente.idGruppo, GetFascicolo(infoUtente, codiceFascicolo));

            if (folder == null)
            {
                throw new ApplicationException(string.Format("Folder per il fascicolo con codice {0} non trovato", codiceFascicolo));
            }

            return(folder);
        }
Exemple #4
0
        public DocsPaVO.fascicolazione.Folder[] GetFoldersByStrutturaTemplate(string name, string idTemplate, string idamm)
        {
            DocsPaVO.fascicolazione.Folder[] folders = new DocsPaVO.fascicolazione.Folder[0];

            try
            {
                DataSet           data  = new DataSet();
                DocsPaUtils.Query query = null;

                if (string.IsNullOrEmpty(name))
                {
                    query = DocsPaUtils.InitQuery.getInstance().getQuery("S_ROOTFOLDER_IN_FASCICOLI");
                }
                else
                {
                    query = DocsPaUtils.InitQuery.getInstance().getQuery("S_FOLDERTEMPLATE_IN_FASCICOLI");
                    query.setParam("NAME", name);
                }

                query.setParam("PARAM1", string.IsNullOrEmpty(idamm) ?
                               string.Empty : string.Format(" AND ID_AMM = {0}", idamm));

                query.setParam("ID_TEMPLATE", idTemplate);
                String sql = query.getSQL();
                _log.Debug(sql);
                new DocsPaDB.DBProvider().ExecuteQuery(data, sql);

                if (data.Tables.Count <= 0)
                {
                    return(folders);
                }

                folders = new DocsPaVO.fascicolazione.Folder[data.Tables[0].Rows.Count];
                for (int i = 0; i < data.Tables[0].Rows.Count; i++)
                {
                    folders[i] = new DocsPaVO.fascicolazione.Folder();
                    DataRow row = data.Tables[0].Rows[i];

                    folders[i].systemID    = row["ID_FOLDER"].ToString();
                    folders[i].idParent    = row["ID_PARENT_FOLDER"].ToString();
                    folders[i].idFascicolo = row["ID_FASCICOLO"].ToString();
                    folders[i].descrizione = row["FOLDER_DESCRIPTION"].ToString();
                    folders[i].dtaApertura = row["APERTURA"].ToString().Trim();
                }
            }
            catch (Exception ex)
            {
                _log.Debug("GetFoldersByStrutturaTemplate - Errore", ex);
            }

            return(folders);
        }
Exemple #5
0
        /// <summary>
        /// Reperimento dei metadati di un fascicolo, compresi di eventuali sottofascicoli e documenti
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="idFascicolo"></param>
        /// <returns></returns>
        public static DocsPaVO.ExportFascicolo.MetaInfoFascicolo GetInfoFascicolo(DocsPaVO.utente.InfoUtente infoUtente, string idFascicolo)
        {
            try
            {
                // Creo un oggetto per memorizzare i metadati relativi al fascicolo con id pari a idFascicolo
                DocsPaVO.ExportFascicolo.MetaInfoFascicolo retValue = new DocsPaVO.ExportFascicolo.MetaInfoFascicolo();

                // Richiedo alla logica di business informazioni sul fascicolo
                DocsPaVO.fascicolazione.Fascicolo fascicolo = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(idFascicolo, infoUtente);

                // Memorizzo l'id del fascicolo
                retValue.Id = fascicolo.systemID;
                // Memorizzo il nome da attribuire al fascicolo
                retValue.Nome = GetValidName(fascicolo.codice);

                // Recupero le informazioni sui documenti contenuti in fascicolo
                List <DocsPaVO.ExportFascicolo.MetaInfoDocumento> documenti = GetInfoDocumenti(infoUtente, fascicolo);

                //Decommentare per generare il report navigabile dell'export fascicolo
                //documenti.Add(new DocsPaVO.ExportFascicolo.MetaInfoDocumento { IsAllegato = false, IsProtocollo = false, Id = "OFN-FASCID:" + idFascicolo, Nome = retValue.Nome + "_OFN_Index" });

                // Salvo le informazioni sui documenti
                retValue.Documenti = documenti.ToArray();

                // Reperimento metadati dei sottofascicoli
                DocsPaVO.fascicolazione.Folder folder = BusinessLogic.Fascicoli.FolderManager.getFolder(infoUtente.idPeople, infoUtente.idGruppo, fascicolo);

                List <DocsPaVO.ExportFascicolo.MetaInfoFascicolo> folders = new List <DocsPaVO.ExportFascicolo.MetaInfoFascicolo>();

                // Per ogni sottofascicolo...
                foreach (DocsPaVO.fascicolazione.Folder child in folder.childs)
                {
                    // ...richiedo le informazioni sul sottofascicolo
                    folders.Add(CreateInfoFascicoloForFolder(child, infoUtente));
                }

                // folders conterrà le informazioni su tutti i sottofascicoli di
                // 'fascicolo' e sui documenti in essi contenuti
                retValue.Fascicoli = folders.ToArray();

                // Restituisco i metadati relativi al fascicolo
                return(retValue);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="amministrazione"></param>
        /// <param name="folder"></param>
        /// <param name="projectManager"></param>
        private static void AggiornaAssociazioniFolderDocumenti(DocsPaVO.utente.InfoUtente infoUtente,
                                                                DocsPaVO.amministrazione.InfoAmministrazione amministrazione,
                                                                DocsPaVO.fascicolazione.Folder folder,
                                                                DocsPaDocumentale_DOCUMENTUM.Documentale.ProjectManager projectManager)
        {
            // 3. Aggiornamento fascicolazioni per tutti i sottofascicoli contenuti
            foreach (DocsPaVO.fascicolazione.Folder fld in folder.childs)
            {
                if (projectManager.UpdateFascicolazioni(fld.systemID))
                {
                    Log.GetInstance(amministrazione).Write(string.Format("Aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
                }
                else
                {
                    Log.GetInstance(amministrazione).Write(string.Format("Errore nell'aggiornamento fascicolazioni per il sottofascicolo con id '{0}'", fld.systemID), false);
                }

                AggiornaAssociazioniFolderDocumenti(infoUtente, amministrazione, fld, projectManager);
            }
        }
Exemple #7
0
 /// <summary>
 /// Rimozione di un documento dal fascicolo (in generale, da tutti i folder presenti nel fascicolo)
 /// </summary>
 /// <param name="idProfile"></param>
 /// <param name="folder"></param>
 /// <returns></returns>
 public bool RemoveDocumentFromProject(string idProfile, DocsPaVO.fascicolazione.Folder folder)
 {
     return(this.Instance.RemoveDocumentFromProject(idProfile, folder));
 }
Exemple #8
0
 /// <summary>
 /// Modifica dei dati di un folder
 /// </summary>
 /// <param name="folder"></param>
 /// <returns></returns>
 public bool ModifyFolder(DocsPaVO.fascicolazione.Folder folder)
 {
     return(this.Instance.ModifyFolder(folder));
 }
Exemple #9
0
 /// <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)
 {
     return(this.Instance.CreateFolder(folder, ruolo, out result, out ruoliSuperiori));
 }
Exemple #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="folder"></param>
        /// <returns></returns>
        private static List <DocsPaVO.ExportFascicolo.MetaInfoDocumento> GetInfoDocumenti(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.fascicolazione.Folder folder)
        {
            // Reperimento dei metadati dei documenti contenuti nel fascicolo
            List <DocsPaVO.ExportFascicolo.MetaInfoDocumento> documenti = new List <DocsPaVO.ExportFascicolo.MetaInfoDocumento>();
            List <String> lstTSR = new List <string>();


            //Mi ciclo i documenti per cercare eventuali timestamp e li metto in lista
            foreach (DocsPaVO.documento.InfoDocumento documento in BusinessLogic.Fascicoli.FolderManager.getDocumenti(infoUtente.idGruppo, infoUtente.idPeople, folder))
            {
                string strTSR = getTimeStampForDocNumber(infoUtente, documento.idProfile);
                if (strTSR != null)
                {
                    lstTSR.Add(strTSR.ToLowerInvariant());
                    documenti.Add(
                        new DocsPaVO.ExportFascicolo.MetaInfoDocumento
                    {
                        Id           = "TSR_" + documento.idProfile,
                        Nome         = cleanOriginalFileNameDocumento(infoUtente, documento) + ".TSR",
                        FullName     = getFileName(infoUtente, documento.docNumber) + ".TSR",
                        IsAllegato   = false,
                        IsProtocollo = false
                    });
                }

                // Richiedo gli allegati del documento
                foreach (DocsPaVO.documento.Allegato allegato in BusinessLogic.Documenti.AllegatiManager.getAllegati(documento.docNumber, string.Empty))
                {
                    //relativo timestamp
                    strTSR = getTimeStampForDocNumber(infoUtente, allegato.docNumber);
                    if (strTSR != null)
                    {
                        lstTSR.Add(strTSR.ToLowerInvariant());
                        documenti.Add(
                            new DocsPaVO.ExportFascicolo.MetaInfoDocumento
                        {
                            Id           = "TSR_" + allegato.docNumber,
                            Nome         = cleanOriginalFileNameAllegato(infoUtente, documento, allegato),
                            FullName     = getFileName(infoUtente, allegato.docNumber),
                            IsAllegato   = false,
                            IsProtocollo = false
                        });
                    }
                }
            }


            foreach (DocsPaVO.documento.InfoDocumento documento in BusinessLogic.Fascicoli.FolderManager.getDocumenti(infoUtente.idGruppo, infoUtente.idPeople, folder))
            {
                bool toAdd = true;
                if (System.IO.Path.GetExtension(getOriginalFileName(infoUtente, documento.docNumber)).ToLowerInvariant().Contains("tsr"))
                {
                    string base64TSR = Convert.ToBase64String(GetFile(infoUtente, documento.docNumber).content).ToLowerInvariant();
                    if (lstTSR.Contains(base64TSR))
                    {
                        toAdd = false;
                    }
                }

                if (toAdd)
                {
                    documenti.Add(
                        new DocsPaVO.ExportFascicolo.MetaInfoDocumento
                    {
                        Id           = documento.idProfile,
                        Nome         = cleanOriginalFileNameDocumento(infoUtente, documento),
                        FullName     = getFileName(infoUtente, documento.docNumber),
                        IsAllegato   = documento.allegato,
                        IsProtocollo = (documento.tipoProto != "G")
                    });
                }
                // Richiedo gli allegati del documento
                foreach (DocsPaVO.documento.Allegato allegato in BusinessLogic.Documenti.AllegatiManager.getAllegati(documento.docNumber, string.Empty))
                {
                    toAdd = true;

                    if (System.IO.Path.GetExtension(allegato.fileName).ToLowerInvariant().Contains("tsr"))
                    {
                        string base64TSR = Convert.ToBase64String(GetFile(infoUtente, allegato.docNumber).content).ToLowerInvariant();
                        if (lstTSR.Contains(base64TSR))
                        {
                            toAdd = false;
                        }
                    }

                    if (toAdd)
                    {
                        documenti.Add(
                            new DocsPaVO.ExportFascicolo.MetaInfoDocumento
                        {
                            Id           = allegato.docNumber,
                            IsAllegato   = true,
                            IsProtocollo = false,
                            FullName     = getFileName(infoUtente, allegato.docNumber),
                            Nome         = cleanOriginalFileNameAllegato(infoUtente, documento, allegato),
                        });
                    }
                }
            }
            return(documenti);
        }
Exemple #11
0
        public string Protocolla(ArrayList listaCampi,
                                 ArrayList listaDati,
                                 out int numProto,
                                 out string segnatura)
        {
            string err = string.Empty;

            numProto  = 0;
            segnatura = string.Empty;

            // CAMPI
            string userID            = listaCampi[0].ToString();
            string pwd               = listaCampi[1].ToString();
            string idCorrRuolo       = listaCampi[2].ToString();
            string idGruppo          = listaCampi[3].ToString();
            string livelloRuolo      = listaCampi[4].ToString();
            string idUO              = listaCampi[5].ToString();
            string codUO             = listaCampi[6].ToString();
            string descUO            = listaCampi[7].ToString();
            string idAmm             = listaCampi[8].ToString();
            string idRegistro        = listaCampi[9].ToString();
            string nomeUtenteProt    = listaCampi[10].ToString();
            string cognomeUtenteProt = listaCampi[11].ToString();

            // DATI
            string dataProtoEme     = listaDati[0].ToString();
            string numProtoEme      = listaDati[1].ToString();
            string protoEme         = listaDati[2].ToString();
            string tipoProtocollo   = listaDati[3].ToString();
            string oggetto          = listaDati[4].ToString();
            string corrispondenti   = listaDati[5].ToString();
            string corrispondentiCC = listaDati[6].ToString();
            string dataProtoMitt    = listaDati[7].ToString();
            string numProtoMitt     = listaDati[8].ToString();
            string dataArrivo       = listaDati[9].ToString();
            string codClassifica    = listaDati[10].ToString();
            string note             = listaDati[11].ToString();
            string systemIdRF       = listaDati[12].ToString();

            try
            {
                this.canaleWSAperto();

                // login
                err = Login(userID, pwd, idAmm);
                if (err != null && err != string.Empty)
                {
                    return("ERRORE: " + err);
                }

                // ruolo
                this._ruolo          = new DocsPaVO.utente.Ruolo();
                this._ruolo.systemId = idCorrRuolo;
                this._ruolo.idGruppo = idGruppo;
                DocsPaVO.utente.UnitaOrganizzativa uo = new DocsPaVO.utente.UnitaOrganizzativa();
                uo.codice            = codUO;
                uo.descrizione       = descUO;
                uo.idAmministrazione = idAmm;
                uo.systemId          = idUO;
                this._ruolo.uo       = uo;
                this._ruolo.livello  = livelloRuolo;
                this._ruolo.registri = new ArrayList();
                this._ruolo.registri.Add(this._ws.GetRegistroBySistemId(idRegistro));

                // utente
                DocsPaVO.utente.InfoUtente infoUtente = this.getInfoUtente();

                DocsPaVO.utente.Corrispondente     corr      = null;
                DocsPaVO.documento.SchedaDocumento schedaDoc = new DocsPaVO.documento.SchedaDocumento();;

                // Tipologia Protocollo
                if (tipoProtocollo == "P")
                {
                    DocsPaVO.documento.ProtocolloUscita protoOUT = new DocsPaVO.documento.ProtocolloUscita();

                    // un solo mittente = struttura del protocollista
                    corr                      = new DocsPaVO.utente.Corrispondente();
                    corr.systemId             = idUO;
                    corr.codiceCorrispondente = codUO;
                    corr.descrizione          = descUO;
                    corr.tipoIE               = "I";
                    corr.idAmministrazione    = idAmm;
                    corr.dettagli             = false;
                    protoOUT.mittente         = corr;

                    // uno o più destinatari
                    if (protoOUT.destinatari == null)
                    {
                        protoOUT.destinatari = new ArrayList();
                    }

                    string[] lstCorrEst = corrispondenti.Split(';');
                    foreach (string corrEst in lstCorrEst)
                    {
                        protoOUT.destinatari.Add(corrDestOcc(corrEst.Trim(), idAmm));
                    }

                    if (!string.IsNullOrEmpty(corrispondentiCC.Trim()))
                    {
                        // uno o più destinatari in conoscenza
                        if (protoOUT.destinatariConoscenza == null)
                        {
                            protoOUT.destinatariConoscenza = new ArrayList();
                        }

                        string[] lstCorrEstCC = corrispondentiCC.Split(';');
                        foreach (string corrEstCC in lstCorrEstCC)
                        {
                            protoOUT.destinatariConoscenza.Add(corrDestOcc(corrEstCC.Trim(), idAmm));
                        }
                    }

                    schedaDoc.protocollo = protoOUT;
                    schedaDoc.tipoProto  = "P";
                }

                // protocollo in arrivo
                if (tipoProtocollo == "A")
                {
                    DocsPaVO.documento.ProtocolloEntrata protoIN = new DocsPaVO.documento.ProtocolloEntrata();

                    // un solo mittente = struttura del protocollista
                    //corr = new DocsPaVO.utente.Corrispondente();
                    //corr.systemId = idUO;
                    //corr.codiceCorrispondente = codUO;
                    //corr.descrizione = descUO;
                    //corr.tipoIE = "I";
                    //corr.idAmministrazione = idAmm;
                    //corr.dettagli = false;
                    //protoIN.mittente = corr;
                    string corrispondente = string.Empty;
                    if (!string.IsNullOrEmpty(corrispondenti.Trim()))
                    {
                        if (corrispondenti.Contains(";"))
                        {
                            corrispondente = corrispondenti.Substring(0, corrispondenti.IndexOf(";") + 1);
                        }
                        else
                        {
                            corrispondente = corrispondenti;
                        }
                    }

                    DocsPaVO.utente.Corrispondente corr2 = new DocsPaVO.utente.Corrispondente();
                    corr2.descrizione        = corrispondente;
                    corr2.tipoCorrispondente = "O";
                    corr2.tipoIE             = "E";
                    corr2.idAmministrazione  = idAmm;
                    corr2.dettagli           = false;

                    protoIN.mittente = corr2;

                    // protocollo mittente
                    if (dataProtoMitt != null && dataProtoMitt != string.Empty)
                    {
                        protoIN.dataProtocolloMittente = dataProtoMitt;
                    }
                    if (numProtoMitt != null && numProtoMitt != string.Empty)
                    {
                        protoIN.descrizioneProtocolloMittente = numProtoMitt;
                    }

                    // data arrivo
                    if (dataArrivo != null && dataArrivo != string.Empty)
                    {
                        DocsPaVO.documento.Documento doc = new DocsPaVO.documento.Documento();
                        doc.dataArrivo = dataArrivo;

                        schedaDoc.documenti = new ArrayList();
                        schedaDoc.documenti.Add(doc);
                    }

                    schedaDoc.protocollo = protoIN;
                    schedaDoc.tipoProto  = "A";
                }

                schedaDoc = this.creaSchedaDocumento(idRegistro, oggetto, note, schedaDoc);

                // esegue il tutto solo se il registro non è chiuso
                if (!schedaDoc.registro.stato.Equals("C"))
                {
                    // dati di emergenza
                    schedaDoc.datiEmergenza = new DocsPaVO.documento.DatiEmergenza();
                    schedaDoc.datiEmergenza.dataProtocollazioneEmergenza   = dataProtoEme;
                    schedaDoc.datiEmergenza.protocolloEmergenza            = protoEme;
                    schedaDoc.datiEmergenza.cognomeProtocollatoreEmergenza = cognomeUtenteProt;
                    schedaDoc.datiEmergenza.nomeProtocollatoreEmergenza    = nomeUtenteProt;

                    // protocollatore
                    schedaDoc.protocollatore = new DocsPaVO.documento.Protocollatore(infoUtente.idPeople, idCorrRuolo, idUO, codUO);

                    // creatore del documento
                    schedaDoc.creatoreDocumento = new DocsPaVO.documento.CreatoreDocumento(infoUtente.idPeople, idCorrRuolo, idUO);

                    // controllo su univocità RF nel caso di RF presente nella segnatura
                    // questo codice prevede la presenza della chiave del web config nel WS
                    //if (ConfigurationManager.AppSettings["ENABLE_CODBIS_SEGNATURA"] != null && ConfigurationManager.AppSettings["ENABLE_CODBIS_SEGNATURA"] == "1")
                    //{
                    //DocsPaDB.Query_DocsPAWS.Amministrazione amm = new DocsPaDB.Query_DocsPAWS.Amministrazione();
                    //DocsPaVO.amministrazione.InfoAmministrazione infoAmm = amm.AmmGetInfoAmmCorrente(infoUtente.idAmministrazione);
                    //if (infoAmm.Segnatura.Contains("COD_RF_PROT"))
                    //{
                    //    // se ci sono uno o più RF associati al registro
                    //    DocsPaDB.Query_DocsPAWS.Utenti utenti = new DocsPaDB.Query_DocsPAWS.Utenti();
                    //    ArrayList listaRF = new ArrayList();
                    //    listaRF = utenti.GetListaRegistriRfRuolo(idCorrRuolo, "1", idRegistro);
                    //    if (listaRF != null && listaRF.Count == 1) //se un solo RF non apro popup, ma selec direttamente.
                    //    {
                    //        DocsPaVO.utente.Registro reg = (DocsPaVO.utente.Registro)listaRF[0];
                    //        schedaDoc.id_rf_prot = reg.systemId;
                    //        schedaDoc.cod_rf_prot = reg.codRegistro;
                    //    }
                    //}
                    //}

                    //verifico se è stato inserito il codice RF da foglio excel
                    if (!string.IsNullOrEmpty(systemIdRF))
                    {
                        DocsPaDB.Query_DocsPAWS.Utenti utenti = new DocsPaDB.Query_DocsPAWS.Utenti();
                        DocsPaVO.utente.Registro       reg    = new DocsPaVO.utente.Registro();
                        utenti.GetRegistro(systemIdRF, ref reg);
                        if (reg != null && !string.IsNullOrEmpty(reg.systemId) && !string.IsNullOrEmpty(reg.codRegistro))
                        {
                            schedaDoc.id_rf_prot  = reg.systemId;
                            schedaDoc.cod_rf_prot = reg.codRegistro;
                        }
                    }

                    DocsPaVO.documento.ResultProtocollazione risultatoProtocollazione;
                    DocsPaVO.documento.SchedaDocumento       schedaResult = this._ws.DocumentoProtocolla(schedaDoc, infoUtente, this._ruolo, out risultatoProtocollazione);

                    if (schedaResult != null)
                    {
                        this.putinfoCorr(schedaResult);
                        numProto  = Int32.Parse(schedaResult.protocollo.numero);
                        segnatura = schedaResult.protocollo.segnatura;
                        string idProfile = schedaResult.docNumber;
                        err = "Ok - ";

                        // classificazione
                        if (codClassifica != null && codClassifica != string.Empty)
                        {
                            DocsPaVO.fascicolazione.Fascicolo fascicolo = this._ws.FascicolazioneGetFascicoloDaCodice(infoUtente, codClassifica, schedaDoc.registro, false, false);
                            if (fascicolo != null)
                            {
                                // recupera il folder
                                DocsPaVO.fascicolazione.Folder folder = this._ws.FascicolazioneGetFolder(infoUtente.idPeople, idGruppo, fascicolo);

                                if (folder != null)
                                {
                                    bool   outValue = false;
                                    string msg      = string.Empty;
                                    // classifica
                                    outValue = this._ws.FascicolazioneAddDocFolder(infoUtente, idProfile, folder, fascicolo.descrizione, out msg);
                                    if (outValue)
                                    {
                                        err += " - Classificato su: " + codClassifica;
                                    }
                                    else
                                    {
                                        err += " - Classificazione fallita!";
                                    }
                                }
                                else
                                {
                                    err += " - Classificazione fallita!";
                                }
                            }
                            else
                            {
                                err += " - Classificazione fallita!";
                            }
                        }
                        err += " Nuova segnatura: " + segnatura;
                    }
                    else
                    {
                        err = "Errore: protocollazione fallita!";
                    }
                }
                else
                {
                    err = "registro chiuso";
                }
            }
            catch (Exception ex)
            {
                err = "Errore: protocollazione fallita! - " + ex.ToString();
            }
            finally
            {
                this.Logoff();
                this.chiudiCanaleWS();
            }

            return(err);
        }
Exemple #12
0
 /// <summary>
 /// </summary>
 /// <param name="idProject"></param>
 /// <param name="infoUtente"></param>
 /// <param name="debug"></param>
 public bool DeleteFolder(DocsPaVO.fascicolazione.Folder folder)
 {
     // Delega l'operazione al documentale etdocs
     return(this.InstanceEtdocs.DeleteFolder(folder));
 }
Exemple #13
0
 /// <summary>
 /// Rimozione di un documento dal fascicolo (in generale, da tutti i folder presenti nel fascicolo)
 /// </summary>
 /// <param name="idProfile"></param>
 /// <param name="folder"></param>
 /// <returns></returns>
 public bool RemoveDocumentFromProject(string idProfile, DocsPaVO.fascicolazione.Folder folder)
 {
     // Delega l'operazione al documentale etdocs
     return(this.InstanceEtdocs.RemoveDocumentFromProject(idProfile, folder));
 }
Exemple #14
0
        /// <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));
                    }
                }
            }
        }
Exemple #15
0
        /// <summary>
        /// Funzione per il repriemento delle informazioni sui sottofascicoli
        /// </summary>
        /// <param name="folder"></param>
        /// <returns></returns>
        private static DocsPaVO.ExportFascicolo.MetaInfoFascicolo CreateInfoFascicoloForFolder(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.InfoUtente infoUtente)
        {
            // Salvo le metainformaizoni di folder
            DocsPaVO.ExportFascicolo.MetaInfoFascicolo infoFascicolo = new DocsPaVO.ExportFascicolo.MetaInfoFascicolo
            {
                Id   = folder.systemID,
                Nome = GetValidName(folder.descrizione)
            };

            // Memorizzo le informazioni sui documenti presenti all'interno di fascicolo
            infoFascicolo.Documenti = GetInfoDocumenti(infoUtente, folder).ToArray();

            List <DocsPaVO.ExportFascicolo.MetaInfoFascicolo> folders = new List <DocsPaVO.ExportFascicolo.MetaInfoFascicolo>();

            // Per ogni sottofascicolo di folder...
            foreach (DocsPaVO.fascicolazione.Folder childFolder in folder.childs)
            {
                // ...ricavo le informazioni sui sottofascicoli e sui
                // documenti in essi contenuti...
                folders.Add(CreateInfoFascicoloForFolder(childFolder, infoUtente));
            }

            // Memorizzo le informazioni sui sottofascicoli
            infoFascicolo.Fascicoli = folders.ToArray();

            // Restituisco le metainformazioni su fascicolo e sui suoi sottofascicoli
            return(infoFascicolo);
        }
Exemple #16
0
 /// <summary>
 /// Handler dell'evento di avvenuta creazione di un sottofascicolo
 /// </summary>
 /// <param name="folder"></param>
 /// <param name="ruolo">Ruolo creatore del sottofascicolo</param>
 /// <param name="ruoliSuperiori">
 /// Riporta una lista di ruoli superiori al ruolo creatore
 /// che devono avere la visibilità sul sottofascicolo
 /// </param>
 public void SottofascicoloCreatoEventHandler(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.utente.Ruolo[] ruoliSuperiori)
 {
 }
Exemple #17
0
        /// <summary>
        /// Handler dell'evento di avvenuta creazione di un sottofascicolo
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="ruolo">Ruolo creatore del sottofascicolo</param>
        /// <param name="ruoliSuperiori">
        /// Riporta una lista di ruoli superiori al ruolo creatore
        /// che devono avere la visibilità sul sottofascicolo
        /// </param>
        public void SottofascicoloCreatoEventHandler(DocsPaVO.fascicolazione.Folder folder, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.utente.Ruolo[] ruoliSuperiori)
        {
            this.InstanceETDOCS.SottofascicoloCreatoEventHandler(folder, ruolo, ruoliSuperiori);

            this.InstanceOCS.SottofascicoloCreatoEventHandler(folder, ruolo, ruoliSuperiori);
        }
Exemple #18
0
 /// <summary>
 /// I campi minimi che devono essere settati per l'oggetto Folder sono:
 /// descrizione
 /// idFascicolo
 /// idParent
 /// </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)
 {
     // Delega l'operazione al documentale etdocs
     return(this.InstanceEtdocs.CreateFolder(folder, ruolo, out result));
 }
Exemple #19
0
        public static bool RiapriLavorazione(DocsPaVO.Task.Task task, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo)
        {
            bool retVal = false;

            try
            {
                // Contesto transazionale
                using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
                {
                    if (!string.IsNullOrEmpty(task.ID_PROJECT) && !string.IsNullOrEmpty(task.ID_PROFILE_REVIEW))
                    {
                        //Inserisco il contributo creato nella precedente lavorazione all'interno di un sottofascicolo
                        string descNewFolder = DocsPaUtils.Configuration.InitConfigurationKeys.GetValue("0", "BE_NOME_SOTTOFASCICOLO");
                        DocsPaVO.fascicolazione.Fascicolo fascicolo        = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(task.ID_PROJECT, infoUtente);
                        DocsPaVO.fascicolazione.Folder    folder           = BusinessLogic.Fascicoli.FolderManager.getFolderByIdFascicolo(infoUtente.idPeople, infoUtente.idGruppo, fascicolo);
                        DocsPaVO.fascicolazione.Folder    folderContributo = (from f in folder.childs.Cast <DocsPaVO.fascicolazione.Folder>() where f.descrizione.Equals(descNewFolder) select f).FirstOrDefault();
                        if (folderContributo == null)
                        {
                            DocsPaVO.fascicolazione.Folder newFolder = new DocsPaVO.fascicolazione.Folder();
                            newFolder.idFascicolo = folder.idFascicolo;
                            newFolder.idParent    = folder.systemID;
                            newFolder.descrizione = descNewFolder;
                            DocsPaVO.fascicolazione.ResultCreazioneFolder result;
                            folderContributo = BusinessLogic.Fascicoli.FolderManager.newFolder(newFolder, infoUtente, ruolo, out result);
                        }
                        if (folderContributo != null && !string.IsNullOrEmpty(folderContributo.systemID))
                        {
                            bool isInFolder = BusinessLogic.Fascicoli.FascicoloManager.IsDocumentoInFolder(task.ID_PROFILE_REVIEW, folderContributo.systemID);
                            if (!isInFolder)
                            {
                                string msg;
                                //Rimuovo dal vecchio fascicolo
                                BusinessLogic.Fascicoli.FolderManager.RemoveDocumentFromFolder(infoUtente, task.ID_PROFILE_REVIEW, folder, "", out msg);
                                System.Collections.ArrayList listFolder = BusinessLogic.Fascicoli.FolderManager.GetFoldersDocument(task.ID_PROFILE_REVIEW, task.ID_PROJECT);
                                foreach (DocsPaVO.fascicolazione.Folder f in listFolder)
                                {
                                    BusinessLogic.Fascicoli.FolderManager.RemoveDocumentFromFolder(infoUtente, task.ID_PROFILE_REVIEW, f, "", out msg);
                                }
                                //Iserisco nel sottofascicolo indicato
                                retVal = BusinessLogic.Fascicoli.FolderManager.addDocFolder(infoUtente, task.ID_PROFILE_REVIEW, folderContributo.systemID, false, out msg);
                            }
                        }
                        if (retVal)
                        {
                            //Riapro la lavorazione del task
                            DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                            retVal = t.RiapriLavorazioneTask(task);
                        }
                    }
                    else
                    {
                        //Riapro la lavorazione del task
                        DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task();
                        retVal = t.RiapriLavorazioneTask(task);
                    }
                    if (retVal)
                    {
                        transactionContext.Complete();
                    }
                    else
                    {
                        transactionContext.Dispose();
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error("Errore in BusinessLogic.Task.TaskManager  - metodo: RiapriLavorazione ", e);
            }
            return(retVal);
        }
Exemple #20
0
 /// <summary>
 /// </summary>
 /// <param name="idProject"></param>
 /// <param name="infoUtente"></param>
 /// <param name="debug"></param>
 public bool DeleteFolder(DocsPaVO.fascicolazione.Folder folder)
 {
     return(this.Instance.DeleteFolder(folder));
 }