private static DocsPaVO.documento.FileDocumento CreaRicevutaPresaVisione(DocsPaVO.utente.InfoUtente userInfo, string idDocument) { DocsPaVO.documento.FileDocumento fdoc = new DocsPaVO.documento.FileDocumento(); try { DocsPaVO.documento.SchedaDocumento schedaDoc = BusinessLogic.Documenti.DocManager.getDettaglioNoSecurity(userInfo, idDocument); DocsPaVO.documento.Documento doc = (DocsPaVO.documento.Documento)schedaDoc.documenti[0]; DocsPaVO.Procedimento.Procedimento procedimento = BusinessLogic.Procedimenti.ProcedimentiManager.GetProcedimentoByIdDoc(idDocument); DocsPaVO.utente.Corrispondente corr = BusinessLogic.Utenti.UserManager.getCorrispondenteBySystemID(procedimento.Autore); string text = string.Format("L'utente {0}, in data {1}, ha preso visione del documento {2} sul Portale dei procedimenti amministrativi.\r\nHash del file: {3}", corr.descrizione, procedimento.Documenti[0].DataVisualizzazione, schedaDoc.protocollo.segnatura, GetImpronta(doc) ); PdfModelProcessor processor = new PdfModelProcessor(); fdoc = processor.CreaRicevuta(userInfo, idDocument, text); fdoc.name = "Ricevuta di presa visione.pdf"; fdoc.fullName = fdoc.name; fdoc.nomeOriginale = fdoc.name; fdoc.contentType = "application/pdf"; fdoc.estensioneFile = "pdf"; } catch (Exception ex) { fdoc = null; logger.Error("Errore in CreaRicevutaPresaVisione", ex); } return(fdoc); }
public static DocsPaVO.documento.SchedaDocumento getDettaglioMobile(DocsPaVO.utente.InfoUtente infoUtente, string idProfile, string docNumber) { DocsPaDB.Query_DocsPAWS.Mobile.DocumentiMobile doc = new DocsPaDB.Query_DocsPAWS.Mobile.DocumentiMobile(); DocsPaVO.documento.SchedaDocumento schedaDoc = new DocsPaVO.documento.SchedaDocumento(); schedaDoc = doc.GetDettaglioMobile(infoUtente, idProfile, docNumber, true); if (schedaDoc == null) { throw new Exception(); } else { // Reperimento informazioni se il documento è in stato checkout, // solo per i documenti non di tipo stampa registro schedaDoc.checkOutStatus = BusinessLogic.CheckInOut.CheckInOutServices.GetCheckOutStatus(schedaDoc.systemId, schedaDoc.docNumber, infoUtente); } try { DocsPaDocumentale.Documentale.DocumentManager docManager = new DocsPaDocumentale.Documentale.DocumentManager(infoUtente); DocsPaVO.documento.Documento docPrinc = (schedaDoc.documenti[0] as DocsPaVO.documento.Documento); string ext = docManager.GetFileExtension(schedaDoc.docNumber, docPrinc.version); DocsPaVO.documento.Applicazione app = new DocsPaVO.documento.Applicazione(); app.estensione = ext; docPrinc.applicazione = app; schedaDoc.documenti[0] = docPrinc; } catch (Exception) { } return(schedaDoc); }
private static string GetImpronta(DocsPaVO.documento.Documento doc) { string hash = string.Empty; try { DocsPaDB.Query_DocsPAWS.Documenti docs = new DocsPaDB.Query_DocsPAWS.Documenti(); docs.GetImpronta(out hash, doc.versionId, doc.docNumber); } catch (Exception ex) { hash = "non disponibile"; } return(hash); }
/// <summary> /// </summary> /// <param name="infoUtente"></param> /// <param name="schedaDoc"></param> /// <param name="path"></param> /// <returns></returns> private static bool estrazioneFiles(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento schedaDoc, string path) { System.IO.FileStream fs = null; System.IO.FileStream fsAll = null; try { //estrazione documento principale DocsPaVO.documento.Documento doc = getDocumentoPrincipale(schedaDoc); string docPrincipaleName = "Documento_principale." + doc.fileName.Substring(doc.fileName.IndexOf(".") + 1); fs = new System.IO.FileStream(path + "\\" + docPrincipaleName, System.IO.FileMode.Create); byte[] content = getDocument(infoUtente, doc.docNumber, doc.version, doc.versionId, doc.versionLabel); fs.Write(content, 0, content.Length); fs.Close(); //estrazione degli allegati for (int i = 0; i < schedaDoc.allegati.Count; i++) { DocsPaVO.documento.Allegato all = (DocsPaVO.documento.Allegato)schedaDoc.allegati[i]; string allegatoName = "Allegato_" + i; fsAll = new System.IO.FileStream(path + "\\" + allegatoName + "." + getEstensione(all.fileName), System.IO.FileMode.Create); byte[] all_content = getDocument(infoUtente, all.docNumber, all.version, all.versionId, all.versionLabel); fsAll.Write(all_content, 0, all_content.Length); fsAll.Close(); } return(true); } catch (Exception e) { // logger.addMessage("Estrazione del file non eseguita.Eccezione: "+e.ToString()); logger.Debug("Estrazione del file non eseguita.Eccezione: " + e.ToString()); if (fs != null) { fs.Close(); } if (fsAll != null) { fsAll.Close(); } return(false); } }
internal static DocsPaVO.documento.SchedaDocumento addFirstVersione(DocsPaVO.documento.SchedaDocumento schedaDocumento, IDMObjects.IFnDocumentDual IDMdoc) { DocsPaVO.documento.Documento versione = null; logger.Debug("sono in add first versione"); if (schedaDocumento.documenti == null) { schedaDocumento.documenti = new ArrayList(); } if (schedaDocumento.documenti.Count == 0) { versione = new DocsPaVO.documento.Documento(); } else { versione = (DocsPaVO.documento.Documento)schedaDocumento.documenti[0]; } versione.docNumber = schedaDocumento.docNumber; // gestione dei firmatari setFirmatari(versione); versione.fileSize = "0"; if (versione.daInviare != null && versione.daInviare.Length > 0) { versione.daInviare = "1"; } //string nomeFile = ConfigurationManager.AppSettings["FNET_pathServer"] + ConfigurationManager.AppSettings["FNET_nomeFileTemp"]; logger.Debug("prima di SaveNew "); // logger.Debug("chiamata saveNew con file in path: " + nomeFile); //file tmp dinamico costruito on line su percorso standard string nomeFile = ConfigurationManager.AppSettings["FNET_pathServer"] + schedaDocumento.idPeople + "_void.tmp"; try { // verifico preesistenza if (System.IO.File.Exists(nomeFile)) { System.IO.File.Delete(nomeFile); } using (System.IO.StreamWriter writer = new System.IO.StreamWriter(nomeFile)) { writer.WriteLine(" "); writer.Flush(); writer.Close(); } IDMdoc.SaveNew(nomeFile, IDMObjects.idmSaveNewOptions.idmDocSaveNewKeep | IDMObjects.idmSaveNewOptions.idmDocSaveNewIndexContent); logger.Debug("chiamata saveNew con file in path: " + nomeFile + " esisto OK"); bool canCheckout = IDMdoc.GetState(IDMObjects.idmDocState.idmDocCanCheckout); logger.Debug("dopo di GetState canCheckout su doc di saveNew id:" + IDMdoc.ID); bool canCheckin = IDMdoc.GetState(IDMObjects.idmDocState.idmDocCanCheckin); logger.Debug("dopo di GetState canCheckin su doc di saveNew id:" + IDMdoc.ID); versione.versionId = getFNETnumVers("1") + schedaDocumento.docNumber; logger.Debug("dopo di versionID creata: " + versione.versionId); if (schedaDocumento.documenti.Count == 0) { schedaDocumento.documenti.Add(versione); } else { schedaDocumento.documenti[0] = versione; } updateVers(versione); return(schedaDocumento); } catch (Exception ex) { IDMError.ErrorManager idmErrorManager = new IDMError.ErrorManager(); logger.Debug(ex.Message); string msg = ex.Message; for (int i = 0; i < idmErrorManager.Errors.Count; i++) { msg += " " + idmErrorManager.Errors[i].Description; } logger.Debug(msg); return(null); } finally { // verifico preesistenza if (System.IO.File.Exists(nomeFile)) { System.IO.File.Delete(nomeFile); } } }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> /// <param name="allegato"></param> /// <param name="documento"></param> /// <returns></returns> public static bool scambiaAllegatoDocumento(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.Allegato allegato, DocsPaVO.documento.Documento documento) { // Controllo su stato congelato DocumentConsolidation.CanExecuteAction(infoUtente, documento.docNumber, DocumentConsolidation.ConsolidationActionsDeniedEnum.ModifyVersions, true); bool retValue = false; using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext()) { DocsPaDocumentale.Documentale.DocumentManager documentManager = new DocsPaDocumentale.Documentale.DocumentManager(infoUtente); retValue = documentManager.ScambiaAllegatoDocumento(allegato, documento); if (retValue) { transactionContext.Complete(); } } return(retValue); }
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> /// Verifica se, in base allo stato di consolidamento del documento, l'utente è autorizzato ad effettuare modifiche ai metadati del documento /// </summary> /// <param name="userInfo"></param> /// <param name="document"></param> /// <param name="throwOnError"> /// Se true, lancia un'eccezione se i dati non possono essere modificati /// </param> /// <returns></returns> public static bool CanChangeMetadata(DocsPaVO.utente.InfoUtente userInfo, DocsPaVO.documento.SchedaDocumento document, bool throwOnError) { bool canChange = false; DocsPaVO.documento.DocumentConsolidationStateInfo actualState = GetState(userInfo, document.systemId); if (actualState.State == DocsPaVO.documento.DocumentConsolidationStateEnum.None || actualState.State == DocsPaVO.documento.DocumentConsolidationStateEnum.Step1) { // Il primo stato di consolidamento consente ancora di modificare tutti i metadati?? canChange = true; } else if (actualState.State == DocsPaVO.documento.DocumentConsolidationStateEnum.Step2) { // Nome del campo oggetto del controllo string fieldName = string.Empty; // Reperimento dati del documento salvati DocsPaVO.documento.SchedaDocumento savedDocument = BusinessLogic.Documenti.DocManager.getDettaglio(userInfo, document.systemId, document.docNumber); // 1. Verifica oggetto fieldName = "dell'oggetto"; canChange = AreEquals(document.oggetto, savedDocument.oggetto); if (canChange && document.protocollo != null && savedDocument.protocollo != null) { // 2. Verifica mittenti / destinatari fieldName = "dei mittenti o destinatari"; canChange = AreEquals(document.protocollo, savedDocument.protocollo); } if (canChange) { // 3. Verifica data arrivo fieldName = "della data arrivo"; string dataArrivoAsString = string.Empty; string savedDataArrivoAsString = string.Empty; if (document.documenti != null && document.documenti.Count > 0) { DocsPaVO.documento.Documento firstDoc = document.documenti[0] as DocsPaVO.documento.Documento; if (firstDoc != null) { dataArrivoAsString = firstDoc.dataArrivo; } } if (savedDocument.documenti != null && savedDocument.documenti.Count > 0) { DocsPaVO.documento.Documento firstDoc = savedDocument.documenti[0] as DocsPaVO.documento.Documento; if (firstDoc != null) { savedDataArrivoAsString = firstDoc.dataArrivo; } } DateTime dataArrivo; DateTime savedDataArrivo; DateTime.TryParse(dataArrivoAsString, out dataArrivo); DateTime.TryParse(savedDataArrivoAsString, out savedDataArrivo); canChange = (DateTime.Compare(dataArrivo, savedDataArrivo) == 0); } if (!canChange && throwOnError) { throw new ApplicationException(string.Format("La modifica {0} non può essere effettuata in quanto il documento risulta in stato consolidato nei metadati", fieldName)); } } return(canChange); }
/// <summary> /// Costruttore con i relativi controlli!!! /// </summary> /// <param name="schDoc"></param> public Metadati(DocsPaVO.documento.SchedaDocumento schDoc) { try { dataCreazione = schDoc.dataCreazione; oraCreazione = schDoc.oraCreazione; docNumber = schDoc.docNumber; descMezzoSpedizione = schDoc.descMezzoSpedizione; if (schDoc.tipoProto.ToUpper() == "G") { tipoProto = "non protocollato"; } else { tipoProto = schDoc.tipoProto; } if (schDoc.protocollo != null) { if (schDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloEntrata)) { DocsPaVO.documento.ProtocolloEntrata protE = (DocsPaVO.documento.ProtocolloEntrata)schDoc.protocollo; ProtocolloEntrata protocolloE = new ProtocolloEntrata(); protocolloE.anno = protE.anno; protocolloE.dataProtocollazione = protE.dataProtocollazione; protocolloE.dataProtocolloMittente = protE.dataProtocolloMittente; protocolloE.descrizioneProtocolloMittente = protE.descrizioneProtocolloMittente; protocolloE.numero = protE.numero; protocolloE.segnatura = protE.segnatura; if (protE.mittente != null) { protocolloE.mittente = new Corrispondente(); protocolloE.mittente.descrizione = protE.mittente.descrizione; } else { protocolloE.mittente = null; } protocollo = new ProtocolloEntrata(); protocollo = protocolloE; } if (schDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloInterno)) { DocsPaVO.documento.ProtocolloInterno protI = (DocsPaVO.documento.ProtocolloInterno)schDoc.protocollo; ProtocolloInterno protocolloI = new ProtocolloInterno(); protocolloI.anno = protI.anno; protocolloI.dataProtocollazione = protI.dataProtocollazione; protocolloI.numero = protI.numero; protocolloI.segnatura = protI.segnatura; if (protI.mittente != null) { protocolloI.mittente = new Corrispondente(); protocolloI.mittente.descrizione = protI.mittente.descrizione; } else { protocolloI.mittente = null; } if (protI.destinatari.Count > 0) { protocolloI.destinatari = new ArrayList(); for (int i = 0; i < protI.destinatari.Count; i++) { DocsPaVO.utente.Corrispondente corr = (DocsPaVO.utente.Corrispondente)protI.destinatari[i]; Corrispondente corrCons = new Corrispondente(); corrCons.descrizione = corr.descrizione; protocolloI.destinatari.Add(corrCons); } } if (protI.destinatariConoscenza.Count > 0) { protocolloI.destinatariConoscenza = new ArrayList(); for (int i = 0; i < protI.destinatariConoscenza.Count; i++) { DocsPaVO.utente.Corrispondente corr = (DocsPaVO.utente.Corrispondente)protI.destinatariConoscenza[i]; Corrispondente corrCons = new Corrispondente(); corrCons.descrizione = corr.descrizione; protocolloI.destinatariConoscenza.Add(corrCons); } } protocollo = new ProtocolloInterno(); protocollo = protocolloI; } if (schDoc.protocollo.GetType() == typeof(DocsPaVO.documento.ProtocolloUscita)) { DocsPaVO.documento.ProtocolloUscita protU = (DocsPaVO.documento.ProtocolloUscita)schDoc.protocollo; ProtocolloUscita protocolloU = new ProtocolloUscita(); protocolloU.anno = protU.anno; protocolloU.dataProtocollazione = protU.dataProtocollazione; protocolloU.numero = protU.numero; protocolloU.segnatura = protU.segnatura; if (protU.mittente != null) { protocolloU.mittente = new Corrispondente(); protocolloU.mittente.descrizione = protU.mittente.descrizione; } else { protocolloU.mittente = null; } if (protU.destinatari.Count > 0) { protocolloU.destinatari = new ArrayList(); for (int i = 0; i < protU.destinatari.Count; i++) { DocsPaVO.utente.Corrispondente corr = (DocsPaVO.utente.Corrispondente)protU.destinatari[i]; Corrispondente corrCons = new Corrispondente(); corrCons.descrizione = corr.descrizione; protocolloU.destinatari.Add(corrCons); } } if (protU.destinatariConoscenza.Count > 0) { protocolloU.destinatariConoscenza = new ArrayList(); for (int i = 0; i < protU.destinatariConoscenza.Count; i++) { DocsPaVO.utente.Corrispondente corr = (DocsPaVO.utente.Corrispondente)protU.destinatariConoscenza[i]; Corrispondente corrCons = new Corrispondente(); corrCons.descrizione = corr.descrizione; protocolloU.destinatariConoscenza.Add(corrCons); } } protocollo = new ProtocolloUscita(); protocollo = protocolloU; } } if (schDoc.oggetto != null) { oggetto = new Oggetto(); oggetto.descrizione = schDoc.oggetto.descrizione; } if (schDoc.tipologiaAtto != null) { tipologiaAtto = new TipologiaAtto(); tipologiaAtto.descrizione = schDoc.tipologiaAtto.descrizione; } if (schDoc.registro != null) { registro = new Registro(); registro.codRegistro = schDoc.registro.codRegistro; } if (schDoc.protocollatore != null) { protocollatore = new Protocollatore(); protocollatore.Nome_Cognome = schDoc.protocollatore.utente_idPeople; } if (schDoc.creatoreDocumento != null) { creatoreDocumento = new CreatoreDocumento(); creatoreDocumento.Nome_Cognome = schDoc.creatoreDocumento.idPeople; } if (schDoc.documenti.Count > 0) { documenti = new ArrayList(); for (int i = 0; i < schDoc.documenti.Count; i++) { DocsPaVO.documento.Documento doc = (DocsPaVO.documento.Documento)schDoc.documenti[i]; Documento docCons = new Documento(); docCons.autore = doc.autore; docCons.dataInserimento = doc.dataInserimento; docCons.descrizione = doc.descrizione; docCons.version = doc.version; documenti.Add(docCons); } } if (schDoc.allegati.Count > 0) { allegati = new ArrayList(); foreach (documento.Allegato t in schDoc.allegati) { allegati.Add(new Allegato() { autore = t.autore, dataInserimento = t.dataInserimento, descrizione = t.descrizione, version = t.version }); } } if (schDoc.paroleChiave.Count > 0) { paroleChiave = new ArrayList(); foreach (documento.ParolaChiave t in schDoc.paroleChiave) { paroleChiave.Add(new ParolaChiave { descrizione = t.descrizione }); } } } catch { // Ignored } }
/// <summary> /// Crea una nuova versione da un documento acquisito, se è associato un TSR, verrà unito al documento per creare un TSD /// </summary> /// <param name="infoUtente"></param> /// <param name="fileRequest"></param> /// <returns></returns> public static DocsPaVO.documento.FileRequest CreateTSDVersion(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.FileRequest fileRequest) { byte [] lastTSR = BusinessLogic.Interoperabilità.InteroperabilitaUtils.GetTSRForDocument(infoUtente, fileRequest); if (lastTSR == null) { return(null); } //Conversione in TSD DocsPaVO.documento.FileDocumento docFile = FileManager.getFileFirmato(fileRequest, infoUtente, false); BusinessLogic.Documenti.DigitalSignature.VerifyTimeStamp vts = new DigitalSignature.VerifyTimeStamp(); if (vts.Verify(docFile.content, lastTSR).esito != "OK") { return(null); } try { BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.tsd tsdMgr = new BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.tsd(); BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile file = new BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile { Content = docFile.content, Name = docFile.name, MessageFileType = BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.fileType.Binary }; List <BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile> tsrLst = new List <BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile>(); BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile tsrfile = new BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.CryptoFile { Content = lastTSR, MessageFileType = BusinessLogic.Documenti.DigitalSignature.PKCS_Utils.fileType.Binary }; tsrLst.Add(tsrfile); docFile.content = tsdMgr.create(file, tsrLst.ToArray()).Content; docFile.estensioneFile = "tsd"; docFile.fullName = docFile.fullName + ".tsd"; docFile.length = (int)docFile.content.Length; docFile.name = docFile.name + ".tsd"; docFile.nomeOriginale = docFile.nomeOriginale + ".tsd"; } catch (Exception e) { logger.ErrorFormat("Errore creando il TSD!! {0},{1}", e.Message, e.StackTrace); return(null); } DocsPaVO.documento.FileRequest tsdFileReq; if (fileRequest.GetType() == typeof(DocsPaVO.documento.Allegato)) { tsdFileReq = new DocsPaVO.documento.Allegato(); (tsdFileReq as DocsPaVO.documento.Allegato).numeroPagine = (fileRequest as DocsPaVO.documento.Allegato).numeroPagine; } else { tsdFileReq = new DocsPaVO.documento.Documento(); } tsdFileReq.docNumber = fileRequest.docNumber; tsdFileReq.descrizione = "Versione creata per conversione in TSD"; tsdFileReq.firmato = fileRequest.firmato; tsdFileReq = BusinessLogic.Documenti.VersioniManager.addVersion(tsdFileReq, infoUtente, false); if (tsdFileReq != null) { BusinessLogic.UserLog.UserLog.WriteLog(infoUtente, "DOCUMENTOAGGIUNGIVERSIONE", tsdFileReq.docNumber, string.Format("{0}{1}{2}{3}", "Aggiunta al N.ro Doc.: ", tsdFileReq.docNumber, " la Ver. ", tsdFileReq.version + " di tipo TSD"), DocsPaVO.Logger.CodAzione.Esito.OK); } else { BusinessLogic.UserLog.UserLog.WriteLog(infoUtente, "DOCUMENTOAGGIUNGIVERSIONE", tsdFileReq.docNumber, string.Format("{0}{1}{2}{3}", "Aggiunta al N.ro Doc.: ", tsdFileReq.docNumber, " la Ver. ", tsdFileReq.version + " di tipo TSD"), DocsPaVO.Logger.CodAzione.Esito.KO); } tsdFileReq = BusinessLogic.Documenti.FileManager.putFile(tsdFileReq, docFile, infoUtente); List <DocsPaVO.LibroFirma.FirmaElettronica> firmaE = LibroFirma.LibroFirmaManager.GetFirmaElettronicaDaFileRequest(fileRequest); bool isFirmatoElettonicamente = firmaE != null && firmaE.Count > 0; if (isFirmatoElettonicamente) { string impronta = string.Empty; DocsPaDB.Query_DocsPAWS.Documenti docInfoDB = new DocsPaDB.Query_DocsPAWS.Documenti(); docInfoDB.GetImpronta(out impronta, tsdFileReq.versionId, tsdFileReq.docNumber); foreach (DocsPaVO.LibroFirma.FirmaElettronica firma in firmaE) { firma.UpdateXml(impronta, tsdFileReq.versionId, tsdFileReq.version); LibroFirma.LibroFirmaManager.InserisciFirmaElettronica(firma); } } return(tsdFileReq); }
/// <summary> /// Scambia il file associato ad un allegato con il file associato ad un documento /// </summary> /// <param name="allegato"></param> /// <param name="documento"></param> /// <returns></returns> public bool ScambiaAllegatoDocumento(DocsPaVO.documento.Allegato allegato, DocsPaVO.documento.Documento documento) { return(this.Instance.ScambiaAllegatoDocumento(allegato, documento)); }
public bool ScambiaAllegatoDocumento(DocsPaVO.documento.Allegato allegato, DocsPaVO.documento.Documento documento) { throw new NotImplementedException(); }