/// <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); }
/// <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"; }
/// <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); }
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); }
/// <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; } }
/// <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); } }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
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); }
/// <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)); }
/// <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)); }
/// <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> /// 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); }
/// <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) { }
/// <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); }
/// <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)); }
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); }
/// <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)); }