/// <summary> /// Trasmissione manuale dell'oggetto agli utenti destinatari /// </summary> /// <param name="idOggetto">Id dell'oggetto da trasmettere</param> /// <param name="tipoOggetto">Tipo dell'oggetto da trasmettere</param> /// <param name="modello">Modello trasmissione da utilizzare</param> /// <remarks> /// Sarà applicata la ragione trasmissione predefinita per l'amministrazione /// </remarks> public virtual void Execute(string idOggetto, DocsPaVO.trasmissione.TipoOggetto tipoOggetto, string ragione, string noteGenerali, bool notificaInToDoList, params string[] idDestinatari) { //string idTrasmissione = this.GetIdTrasmissione(idOggetto, tipoOggetto, (ragione ?? string.Empty)); string idTrasmissione = this.GetIdTrasmissioneDaInviare(idOggetto, tipoOggetto, (ragione ?? string.Empty)); if (string.IsNullOrEmpty(idTrasmissione)) { // Creazione della nuova trasmissione DocsPaVO.trasmissione.Trasmissione tx = this.PrepareTrasmissione(idOggetto, tipoOggetto, ragione, noteGenerali, notificaInToDoList, idDestinatari); tx = BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(string.Empty, tx); } else { // Invio della trasmissione esistente DocsPaVO.trasmissione.Trasmissione tx = this.GetTrasmissione(idTrasmissione, idOggetto, tipoOggetto); // La trasmissione ancora non è stata inviata this.UpdateTrasmissione(tx, idDestinatari); tx = BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(string.Empty, tx); } }
/// <summary> /// Handler dell'evento di avvenuta trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="infoSecurity"> /// Oggetto contenente i metadati relativi alla tipologia di ACL /// impostata nella trasmissione di un documento / fascicolo /// </param> public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList) { // In caso di trasmissione con cessione diritti attivata, cambia il proprietario del documento // in OCS proprietario e non, hanno il solo diritto di lettura, quindi basta aggiornare l'acl //TODO: if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { // Reperimento ACL per il documento smistato bool retValue = false; try { //bisogna reperire l'id OCS UserCredentialsType credentials = OCSUtils.getApplicationUserCredentials(); long idOCS = OCSDocumentHelper.getDocumentIdOCS(trasmissione.infoDocumento.docNumber, null, credentials); //reperisco la acl del documento docspa e aggiorno quelle di OCS retValue = OCSDocumentHelper.setAclDocument(trasmissione.infoDocumento.idProfile, idOCS, this.InfoUtente, credentials); } catch (Exception ex) { retValue = false; logger.Error("Errore in OCS.TrasmissioneCompletataEventHandler", ex); } } }
internal static void trasmetti(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.Modelli_Trasmissioni.ModelloTrasmissione modello, ref DocsPaVO.documento.resultProtoEmergenza res, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo) { try { //cerca trasmissione dal template //DocsPaVO.trasmissione.Trasmissione trasm =Trasmissioni.TemplateTrasmManager.creaTrasmDaTemplate(schedaDocumento, template, infoUtente, ruolo); DocsPaVO.trasmissione.Trasmissione trasm = creaTrasmDaModello(schedaDocumento, modello, infoUtente, ruolo); if (trasm == null) { res.messaggio = res.messaggio + " - " + " Trasmissione annullata!"; return; } if (infoUtente.delegato != null) { trasm.delegato = ((DocsPaVO.utente.InfoUtente)(infoUtente.delegato)).idPeople; } //trasm = Trasmissioni.TrasmManager.saveTrasmMethod(trasm); //trasm = Trasmissioni.ExecTrasmManager.executeTrasmMethod(null, trasm); trasm = Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(null, trasm); res.isTrasmesso = true; } catch (Exception e) { res.messaggio = res.messaggio + " - " + e.Message; logger.Debug(e.ToString()); } }
/// <summary> /// Inizializzazione della trasmissione /// </summary> /// <param name="tipoOggetto"></param> /// <param name="idOggetto"></param> /// <remarks> /// Le classi derivate dovranno utilizzare tale metodo per inizializzare l'oggetto trasmissione piuttosto che crearne uno nuovo /// </remarks> /// <returns></returns> protected virtual DocsPaVO.trasmissione.Trasmissione CreateTrasmissione(DocsPaVO.trasmissione.TipoOggetto tipoOggetto, string idOggetto) { DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); DocsPaVO.documento.SchedaDocumento schedaDocumento = null; DocsPaVO.fascicolazione.Fascicolo schedaFascicolo = null; if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; schedaDocumento = BusinessLogic.Documenti.DocManager.getDettaglio(this._infoUtente, idOggetto, idOggetto); trasmissione.infoDocumento = new DocsPaVO.documento.InfoDocumento(schedaDocumento); } else if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.FASCICOLO; schedaFascicolo = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(idOggetto, this._infoUtente); trasmissione.infoFascicolo = new DocsPaVO.fascicolazione.InfoFascicolo(schedaFascicolo); } trasmissione.utente = BusinessLogic.Utenti.UserManager.getUtente(this._infoUtente.idPeople); trasmissione.ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(this._infoUtente.idCorrGlobali); return(trasmissione); }
/// <summary> /// Reperimento trasmissione corrente /// </summary> /// <param name="idTrasmissione"></param> /// <returns></returns> protected virtual DocsPaVO.trasmissione.Trasmissione GetTrasmissione(string idTrasmissione, string idOggetto, DocsPaVO.trasmissione.TipoOggetto tipoOggetto) { DocsPaVO.trasmissione.Trasmissione retValue = null; if (!string.IsNullOrEmpty(idTrasmissione)) { // Reperimento oggetto trasmissione DocsPaVO.trasmissione.OggettoTrasm oggettoTrasm = new DocsPaVO.trasmissione.OggettoTrasm(); if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { DocsPaVO.documento.SchedaDocumento schedaDocumento = BusinessLogic.Documenti.DocManager.getDettaglio(this._infoUtente, idOggetto, idOggetto); oggettoTrasm.infoDocumento = new DocsPaVO.documento.InfoDocumento(schedaDocumento); } else if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { DocsPaVO.fascicolazione.Fascicolo schedaFascicolo = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(idOggetto, this._infoUtente); oggettoTrasm.infoFascicolo = new DocsPaVO.fascicolazione.InfoFascicolo(schedaFascicolo); } System.Collections.Generic.List <DocsPaVO.filtri.FiltroRicerca> filters = new System.Collections.Generic.List <DocsPaVO.filtri.FiltroRicerca>(); DocsPaVO.filtri.FiltroRicerca item = new DocsPaVO.filtri.FiltroRicerca(); item.argomento = DocsPaVO.filtri.trasmissione.listaArgomentiNascosti.ID_TRASMISSIONE.ToString(); item.valore = idTrasmissione; filters.Add(item); DocsPaVO.utente.Utente utente = BusinessLogic.Utenti.UserManager.getUtente(this._infoUtente.idPeople); DocsPaVO.utente.Ruolo ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(this._infoUtente.idCorrGlobali); // Utilizzo del metodo di ricerca trasmissioni fornendo i filtri di ricerca int totalPageNumber; int recordCount; DocsPaVO.trasmissione.Trasmissione[] trasmissioni = (DocsPaVO.trasmissione.Trasmissione[]) BusinessLogic.Trasmissioni.QueryTrasmManager.getQueryEffettuateDocMethodPaging( oggettoTrasm, utente, ruolo, filters.ToArray(), 1, out totalPageNumber, out recordCount).ToArray(typeof(DocsPaVO.trasmissione.Trasmissione)); if (trasmissioni.Length == 1) { // Reperimento prima trasmissione estratta retValue = trasmissioni[0]; } } return(retValue); }
private static DocsPaVO.trasmissione.Trasmissione ExecuteTransmission(DocsPaVO.documento.SchedaDocumento schedaDoc, string idGruppoDest, string idPeopleDest, DocsPaVO.utente.InfoUtente infoUtente) { DocsPaVO.trasmissione.Trasmissione trasm = new DocsPaVO.trasmissione.Trasmissione(); DocsPaDB.Query_DocsPAWS.Utenti u = new DocsPaDB.Query_DocsPAWS.Utenti(); trasm.ruolo = u.GetRuoloByIdGruppo(infoUtente.idGruppo); //istanzaProcesso.RuoloProponente; trasm.utente = u.getUtenteById(infoUtente.idPeople); //istanzaProcesso.UtenteProponente; DocsPaDB.Query_DocsPAWS.Documenti doc = new DocsPaDB.Query_DocsPAWS.Documenti(); trasm.infoDocumento = schedaDoc.InfoDocumento; //INSERISCO LA RAGIONE DI TRASMISSIONE DI SISTEMA PER LIBRO FIRMA DocsPaVO.trasmissione.RagioneTrasmissione ragione = getRagioneTrasm(infoUtente.idAmministrazione, "D"); //CREO LA TRASMISSIONE SINGOLA DocsPaVO.trasmissione.TrasmissioneSingola trasmSing = new DocsPaVO.trasmissione.TrasmissioneSingola(); trasmSing.ragione = ragione; trasmSing.tipoTrasm = "S"; DocsPaDB.Query_DocsPAWS.Utenti utenti = new DocsPaDB.Query_DocsPAWS.Utenti(); DocsPaVO.utente.Ruolo ruolo = utenti.GetRuoloByIdGruppo(idGruppoDest); trasmSing.corrispondenteInterno = ruolo; trasmSing.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.RUOLO; System.Collections.ArrayList listaUtenti = new System.Collections.ArrayList(); DocsPaVO.addressbook.QueryCorrispondente qc = new DocsPaVO.addressbook.QueryCorrispondente(); qc.codiceRubrica = ruolo.codiceRubrica; System.Collections.ArrayList registri = ruolo.registri; qc.tipoUtente = DocsPaVO.addressbook.TipoUtente.INTERNO; //qc.idRegistri = registri; qc.idAmministrazione = ruolo.idAmministrazione; qc.getChildren = true; qc.fineValidita = true; listaUtenti = BusinessLogic.Utenti.addressBookManager.listaCorrispondentiIntMethod(qc); System.Collections.ArrayList trasmissioniUt = new System.Collections.ArrayList(); for (int k = 0; k < listaUtenti.Count; k++) { DocsPaVO.trasmissione.TrasmissioneUtente trUt = new DocsPaVO.trasmissione.TrasmissioneUtente(); trUt.utente = (DocsPaVO.utente.Utente)listaUtenti[k]; trUt.daNotificare = (listaUtenti[k] as DocsPaVO.utente.Utente).idPeople.Equals(idPeopleDest); trasmissioniUt.Add(trUt); } trasmSing.trasmissioneUtente = trasmissioniUt; trasm.trasmissioniSingole = new System.Collections.ArrayList() { trasmSing }; return(BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod("", trasm)); }
/// <summary> /// Handler dell'evento di avvenuta accettazione / rifiuto di una trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="ruolo"></param> /// <param name="tipoRisposta"></param> public void TrasmissioneAccettataRifiutataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.trasmissione.TipoRisposta tipoRisposta) { CustomServices.AclDefinition aclData = null; DateTime startDate = DateTime.Now; // Aggiornamento ACL in DCTM, con le credenziali di superuser CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser()); if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { // Reperimento della lista delle ACL aggiornata nella tabella security di docspa aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoDocumento.docNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente); aclService.ClearAndGrant(aclData, trasmissione.infoDocumento.idProfile); } else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { DateTime startDateFasc = DateTime.Now; // Reperimento della lista delle ACL aggiornata nella tabella security di docspa aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoFascicolo.idFascicolo, DocsPaObjectTypes.ObjectTypes.FASCICOLO, this.InfoUtente); aclService.ClearAndGrant(aclData, trasmissione.infoFascicolo.idFascicolo); logger.Debug("Tot sec. FASC: " + DateTime.Now.Subtract(startDateFasc).TotalSeconds.ToString()); string[] idProfiles = DocsPaQueryHelper.getDocumentiInFascicolo(trasmissione.infoFascicolo.idFascicolo); //PORKING: nonè necessario farlo ora, perchè le aCL di Documenti vengono rimappate se necesario quando gli utenti o i ruoli faranno // GetDettaglio con il metedo RefreshAcl if (idProfiles != null && idProfiles.Length < 20) { foreach (string idProfile in idProfiles) { DateTime startDateDoc = DateTime.Now; // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli) // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli) //DCTM è usato solo con PITRE e in PITRE storicamente il idprofile è sempre uguale a docnumber quindi posso togliere questa query //DocsPaQueryHelper.getDocNumber(idProfile) è passare in input direttamente idProfile al metodo getAclDefinition aclData = Dfs4DocsPa.getAclDefinition(idProfile, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente); aclService.ClearAndGrant(aclData, idProfile); logger.DebugFormat("Tot sec. DOC_{0}: {1}", idProfile, DateTime.Now.Subtract(startDateDoc).TotalSeconds.ToString()); } } } logger.Debug("Tot sec.: " + DateTime.Now.Subtract(startDate).TotalSeconds.ToString()); }
/// <summary> /// Associa il nuovo documento creato al task di origine /// </summary> /// <param name="idTask"></param> /// <param name="docnumber"></param> /// <param name="infoUtente"></param> /// <returns></returns> public static bool AssociaContributoAlTask(DocsPaVO.Task.Task task, DocsPaVO.documento.SchedaDocumento schedaDoc, DocsPaVO.utente.InfoUtente infoUtente) { logger.Debug("Chiusura del TASK in BusinessLogic.Task.TaskManager - metodo: AssociaContributoAlTask "); bool result = false; try { DocsPaDB.Query_DocsPAWS.Task t = new DocsPaDB.Query_DocsPAWS.Task(); result = t.AssociaContributoAlTask(task.ID_TASK, schedaDoc.docNumber, infoUtente); // Aggiorno la profile result = t.UpdateTaskStatusInProfile(schedaDoc.docNumber, DocsPaDB.Query_DocsPAWS.Task.TaskStatus.IN_PROGRESS); //Dò visibilità al ruolo mittente del task.Se il contributo viene inserito nel fascicolo da cui è partito il task non è necessario if (result && !string.IsNullOrEmpty(task.ID_PROFILE)) { DocsPaVO.trasmissione.Trasmissione resultTrasm = ExecuteTransmission(schedaDoc, task.RUOLO_MITTENTE.idGruppo, task.UTENTE_MITTENTE.idPeople, infoUtente); string desc = string.Empty; string method = "TRASM_DOC_" + (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).ragione.descrizione.ToUpper().Replace(" ", "_"); if (resultTrasm.infoDocumento.segnatura == null) { desc = "Trasmesso Documento : " + resultTrasm.infoDocumento.docNumber.ToString(); } else { desc = "Trasmesso Documento : " + resultTrasm.infoDocumento.segnatura.ToString(); } if (resultTrasm != null) { BusinessLogic.UserLog.UserLog.WriteLog(resultTrasm.utente.userId, resultTrasm.utente.idPeople, resultTrasm.ruolo.idGruppo, resultTrasm.utente.idAmministrazione, method, resultTrasm.infoDocumento.docNumber, desc, DocsPaVO.Logger.CodAzione.Esito.OK, (infoUtente != null && infoUtente.delegato != null ? infoUtente.delegato : null), "0", (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).systemId); } else { BusinessLogic.UserLog.UserLog.WriteLog(resultTrasm.utente.userId, resultTrasm.utente.idPeople, resultTrasm.ruolo.idGruppo, resultTrasm.utente.idAmministrazione, method, resultTrasm.infoDocumento.docNumber, desc, DocsPaVO.Logger.CodAzione.Esito.KO, (infoUtente != null && infoUtente.delegato != null ? infoUtente.delegato : null), "0", (resultTrasm.trasmissioniSingole[0] as DocsPaVO.trasmissione.TrasmissioneSingola).systemId); } } } catch (Exception e) { logger.Debug("Errore in BusinessLogic.Task.TaskManager - metodo: AssociaContributoAlTask ", e); result = false; } return(result); }
private static DocsPaVO.trasmissione.Trasmissione addTrasmissioneSingola(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.TrasmissioneSingola trasmSingolaTemplate, string idAmministrazione) { DocsPaVO.utente.Corrispondente corr = trasmSingolaTemplate.corrispondenteInterno; if (!Utenti.addressBookManager.isCorrispondenteValido(corr.systemId)) { logger.Debug("Corrispondente: id:" + corr.systemId + " - desc:" + corr.descrizione + " non valido"); return(trasmissione); } DocsPaVO.trasmissione.RagioneTrasmissione ragione = trasmSingolaTemplate.ragione; // Aggiungo la trasmissione singola DocsPaVO.trasmissione.TrasmissioneSingola trasmissioneSingola = new DocsPaVO.trasmissione.TrasmissioneSingola(); trasmissioneSingola.tipoTrasm = "S"; trasmissioneSingola.corrispondenteInterno = corr; trasmissioneSingola.ragione = ragione; // Aggiungo la lista di trasmissioniUtente if (corr.GetType() == typeof(DocsPaVO.utente.Ruolo)) { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.RUOLO; ArrayList listaUtenti = queryUtenti(corr.codiceRubrica, idAmministrazione); //ciclo per utenti se dest è gruppo o ruolo if (listaUtenti == null || listaUtenti.Count == 0) { return(trasmissione); } for (int i = 0; i < listaUtenti.Count; i++) { DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)listaUtenti[i]; if (ragione.descrizione.Equals("RISPOSTA")) { trasmissioneUtente.idTrasmRispSing = trasmissioneSingola.systemId; } trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } } else { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.UTENTE; DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)corr; trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } trasmissione.trasmissioniSingole.Add(trasmissioneSingola); return(trasmissione); }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> /// <param name="objTrasm"></param> /// <param name="modello"></param> /// <returns></returns> private DocsPaVO.trasmissione.Trasmissione ImpostaNotificheUtentiDaModello( DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.trasmissione.Trasmissione objTrasm, DocsPaVO.Modelli_Trasmissioni.ModelloTrasmissione modello) { if (objTrasm.trasmissioniSingole != null && objTrasm.trasmissioniSingole.Count > 0) { foreach (DocsPaVO.trasmissione.TrasmissioneSingola ts in objTrasm.trasmissioniSingole) { foreach (DocsPaVO.trasmissione.TrasmissioneUtente tu in ts.trasmissioneUtente) { tu.daNotificare = DaNotificareSuModello(infoUtente, tu.utente.idPeople, ts.corrispondenteInterno.systemId, modello); } } } return(objTrasm); }
public static DocsPaVO.trasmissione.Trasmissione addTrasmFascicoloDaTemplate(DocsPaVO.fascicolazione.InfoFascicolo infoFascicolo, DocsPaVO.trasmissione.TemplateTrasmissione template, DocsPaVO.utente.Utente utente, DocsPaVO.utente.Ruolo ruolo) { //DocsPaVO.utente.Utente utente = utenti.getUtente(infoUtente.idPeople); //DocsPaVO.utente.Ruolo ruolo = Utenti.UserManager.getRuolo(infoUtente.idCorrGlobali); // DocsPaVO.utente.InfoUtente infoUtente = null; if (template == null) { return(null); } DocsPaVO.trasmissione.Trasmissione trasmTemplate = cercaTrasmissioneFascicoloTemplate(template, infoFascicolo, utente, ruolo); if (trasmTemplate == null) { return(null); } DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); //Ricostruisci la nuova trasmissione, con le trasmissioni utenti aggiornate trasmissione.utente = utente; trasmissione.ruolo = ruolo; trasmissione.tipoOggetto = trasmTemplate.tipoOggetto; trasmissione.noteGenerali = template.descrizione; // CONTROLLARE DOVE PRENDERE L'INFORMAZIONE trasmissione.infoFascicolo = infoFascicolo; if (trasmTemplate.trasmissioniSingole != null && trasmTemplate.trasmissioniSingole.Count > 0) { for (int i = 0; i < trasmTemplate.trasmissioniSingole.Count; i++) { trasmissione = addTrasmissioneSingola(trasmissione, ((DocsPaVO.trasmissione.TrasmissioneSingola)trasmTemplate.trasmissioniSingole[i]), utente.idAmministrazione); } } if (trasmissione != null && trasmissione.trasmissioniSingole != null && trasmissione.trasmissioniSingole.Count > 0) { trasmissione = TrasmManager.saveTrasmMethod(trasmissione); } else { logger.Debug("Errore nella creazione dell'oggetto trasmissione da template o trasmissioni singole non presenti"); return(null); } return(trasmissione); }
/// <summary> /// Salva la trasmissione manuale dell'oggetto agli utenti destinatari /// </summary> /// <param name="idOggetto">Id dell'oggetto da trasmettere</param> /// <param name="tipoOggetto"></param> /// <param name="ragione"></param> /// <param name="noteGenerali"></param> /// <param name="notificaInToDoList"></param> /// <param name="idDestinatari"></param> /// <remarks> /// Sarà applicata la ragione trasmissione predefinita per l'amministrazione /// </remarks> public virtual void Save(string idOggetto, DocsPaVO.trasmissione.TipoOggetto tipoOggetto, string ragione, string noteGenerali, bool notificaInToDoList, params string[] idDestinatari) { //DocsPaVO.ricerche.SearchPagingContext pc = new DocsPaVO.ricerche.SearchPagingContext(1, Int32.MaxValue); //DocsPaVO.trasmissione.InfoTrasmissione[] txEffettuate = BusinessLogic.Trasmissioni.QueryTrasmManager.GetInfoTrasmissioniEffettuate(this._infoUtente, idOggetto, (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO ? "D" : "F"), pc); string idTrasmissione = this.GetIdTrasmissioneDaInviare(idOggetto, tipoOggetto, (ragione ?? string.Empty)); bool prepareNew = false; if (string.IsNullOrEmpty(idTrasmissione)) { prepareNew = true; } else { DocsPaVO.trasmissione.Trasmissione tx = this.GetTrasmissione(idTrasmissione, idOggetto, tipoOggetto); this.UpdateTrasmissione(tx, idDestinatari); tx = BusinessLogic.Trasmissioni.TrasmManager.saveTrasmMethod(tx); } if (prepareNew) { DocsPaVO.trasmissione.Trasmissione tx = this.PrepareTrasmissione(idOggetto, tipoOggetto, ragione, noteGenerali, notificaInToDoList, idDestinatari); tx = BusinessLogic.Trasmissioni.TrasmManager.saveTrasmMethod(tx); } }
/// <summary> /// Handler dell'evento di avvenuta trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="infoSecurity"> /// Oggetto contenente i metadati relativi alla tipologia di ACL /// impostata nella trasmissione di un documento / fascicolo /// </param> public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList) { // In caso di trasmissione con cessione diritti, // viene modificata l'ownership del documento / fascicolo trasmesso // se il documento era di proprietà del cedente if (trasmissione.cessione != null && trasmissione.cessione.docCeduto) { // imposta l'Ownership solo se è stato impostato il nuovo utente che diventerà proprietario del doc/fas. // Questo avviene quando si stanno cedendo i diritti di proprietà (P). // Se si stanno cedendo i diritti acquisiti (A o T o F) questo blocco viene saltato. if (trasmissione.cessione.idPeopleNewPropr != null && trasmissione.cessione.idPeopleNewPropr != "") { IQueryService queryService = DctmServiceFactory.GetServiceInstance <IQueryService>(UserManager.ImpersonateSuperUser()); // Reperimento nome utente e ruolo cui viene impostata l'ownership del documento string ownerUser = DocsPaObjectTypes.TypeUtente.NormalizeUserName(DocsPaQueryHelper.getCodiceUtente(trasmissione.cessione.idPeopleNewPropr)); if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { string ownerRole = DocsPaObjectTypes.TypeGruppo.NormalizeGroupName(DocsPaQueryHelper.getCodiceRuoloFromIdGroups(trasmissione.cessione.idRuoloNewPropr)); Dfs4DocsPa.setOwnershipDocumento(trasmissione.infoDocumento.idProfile, ownerUser, ownerRole, queryService); } else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { Dfs4DocsPa.setOwnershipFascicolo(trasmissione.infoFascicolo.idFascicolo, ownerUser, queryService); } } } CustomServices.AclDefinition aclData = null; if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { // Reperimento della lista delle ACL aggiornata nella tabella security di docspa aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoDocumento.docNumber, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente); // Aggiornamento ACL in DCTM, con le credenziali di superuser CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser()); aclService.ClearAndGrant(aclData, trasmissione.infoDocumento.idProfile); } else if (trasmissione.tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { // Reperimento della lista delle ACL aggiornata nella tabella security di docspa aclData = Dfs4DocsPa.getAclDefinition(trasmissione.infoFascicolo.idFascicolo, DocsPaObjectTypes.ObjectTypes.FASCICOLO, this.InfoUtente); // Aggiornamento ACL in DCTM, con le credenziali di superuser CustomServices.IAclService aclService = DctmServiceFactory.GetCustomServiceInstance <CustomServices.IAclService>(UserManager.ImpersonateSuperUser()); aclService.ClearAndGrant(aclData, trasmissione.infoFascicolo.idFascicolo); string[] idProfiles = DocsPaQueryHelper.getDocumentiInFascicolo(trasmissione.infoFascicolo.idFascicolo); //PORKING: nonè necessario farlo ora, perchè le aCL di Documenti vengono rimappate se necesario quando gli utenti o i ruoli faranno // GetDettaglio con il metedo RefreshAcl if (idProfiles != null && idProfiles.Length < 20) { foreach (string idProfile in idProfiles) { // Aggiornamento delle ACL per tutti i documenti nel fascicolo (compresi eventuali sottofascicoli) //DCTM è usato solo con PITRE e in PITRE storicamente il idprofile è sempre uguale a docnumber quindi posso togliere questa query //DocsPaQueryHelper.getDocNumber(idProfile) è passare in input direttamente idProfile al metodo getAclDefinition aclData = Dfs4DocsPa.getAclDefinition(idProfile, DocsPaObjectTypes.ObjectTypes.DOCUMENTO, this.InfoUtente); aclService.ClearAndGrant(aclData, idProfile); } } } }
/// <summary> /// Tramissione di un fascicolo usando un modello di trasmissione /// Il parametro "idStato" puo' essere null o meno a seconda delle necessità /// </summary> /// <returns></returns> private void EffettuaTrasmissioneDaModello( DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.Modelli_Trasmissioni.ModelloTrasmissione modello, string idOggetto, DocsPaVO.trasmissione.TipoOggetto tipoOggetto) { DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); trasmissione.noteGenerali = modello.VAR_NOTE_GENERALI; DocsPaVO.documento.SchedaDocumento schedaDocumento = null; DocsPaVO.fascicolazione.Fascicolo schedaFascicolo = null; if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; schedaDocumento = BusinessLogic.Documenti.DocManager.getDettaglio(infoUtente, idOggetto, idOggetto); trasmissione.infoDocumento = new DocsPaVO.documento.InfoDocumento(schedaDocumento); } else if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.FASCICOLO; schedaFascicolo = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(idOggetto, infoUtente); trasmissione.infoFascicolo = new DocsPaVO.fascicolazione.InfoFascicolo(schedaFascicolo); } trasmissione.utente = BusinessLogic.Utenti.UserManager.getUtente(infoUtente.idPeople); trasmissione.ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(infoUtente.idCorrGlobali); if (modello != null) { trasmissione.NO_NOTIFY = modello.NO_NOTIFY; } //Parametri delle trasmissioni singole foreach (DocsPaVO.Modelli_Trasmissioni.RagioneDest ragioneDest in modello.RAGIONI_DESTINATARI) { foreach (DocsPaVO.Modelli_Trasmissioni.MittDest mittDest in ragioneDest.DESTINATARI) { DocsPaVO.utente.Corrispondente corr = new DocsPaVO.utente.Corrispondente(); if (mittDest.CHA_TIPO_MITT_DEST == "D") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteByCodRubrica(mittDest.VAR_COD_RUBRICA, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } else { if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { corr = GetCorrispondente(infoUtente, mittDest.CHA_TIPO_MITT_DEST, schedaDocumento.creatoreDocumento.idPeople, schedaDocumento.creatoreDocumento.idCorrGlob_Ruolo, schedaDocumento.creatoreDocumento.idCorrGlob_UO, trasmissione); } else { corr = GetCorrispondente(infoUtente, mittDest.CHA_TIPO_MITT_DEST, schedaFascicolo.creatoreFascicolo.idPeople, schedaFascicolo.creatoreFascicolo.idCorrGlob_Ruolo, schedaFascicolo.creatoreFascicolo.idCorrGlob_UO, trasmissione); } } if (corr != null) { DocsPaVO.trasmissione.RagioneTrasmissione ragione = BusinessLogic.Trasmissioni.QueryTrasmManager.getRagioneById(mittDest.ID_RAGIONE.ToString()); trasmissione = AddTrasmissioneSingola(infoUtente, trasmissione, corr, ragione, mittDest.VAR_NOTE_SING, mittDest.CHA_TIPO_TRASM, mittDest.SCADENZA); } } } trasmissione = ImpostaNotificheUtentiDaModello(infoUtente, trasmissione, modello); trasmissione = BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(string.Empty, trasmissione); }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> /// <param name="trasmissione"></param> /// <param name="corr"></param> /// <param name="ragione"></param> /// <param name="note"></param> /// <param name="tipoTrasm"></param> /// <param name="scadenza"></param> /// <returns></returns> public static DocsPaVO.trasmissione.Trasmissione addTrasmissioneSingola( DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.utente.Corrispondente corr, DocsPaVO.trasmissione.RagioneTrasmissione ragione, string note, string tipoTrasm, int scadenza) { if (trasmissione.trasmissioniSingole != null) { // controllo se esiste la trasmissione singola associata a corrispondente selezionato foreach (DocsPaVO.trasmissione.TrasmissioneSingola ts in trasmissione.trasmissioniSingole) { if (ts.corrispondenteInterno.systemId.Equals(corr.systemId)) { if (ts.daEliminare) { ts.daEliminare = false; return(trasmissione); } else { return(trasmissione); } } } } // Aggiungo la trasmissione singola DocsPaVO.trasmissione.TrasmissioneSingola trasmissioneSingola = new DocsPaVO.trasmissione.TrasmissioneSingola(); trasmissioneSingola.tipoTrasm = tipoTrasm; trasmissioneSingola.corrispondenteInterno = corr; trasmissioneSingola.ragione = ragione; trasmissioneSingola.noteSingole = note; //Imposto la data di scadenza if (scadenza > 0) { string dataScadenza = ""; System.DateTime data = System.DateTime.Now.AddDays(scadenza); dataScadenza = data.Day + "/" + data.Month + "/" + data.Year; trasmissioneSingola.dataScadenza = dataScadenza; } // Aggiungo la lista di trasmissioniUtente if (corr is DocsPaVO.utente.Ruolo) { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.RUOLO; DocsPaVO.utente.Corrispondente[] listaUtenti = queryUtenti(infoUtente, corr); if (listaUtenti.Length == 0) { trasmissioneSingola = null; } //ciclo per utenti se dest è gruppo o ruolo for (int i = 0; i < listaUtenti.Length; i++) { DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)listaUtenti[i]; trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } } if (corr is DocsPaVO.utente.Utente) { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.UTENTE; DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)corr; trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } if (corr is DocsPaVO.utente.UnitaOrganizzativa) { DocsPaVO.utente.UnitaOrganizzativa theUo = (DocsPaVO.utente.UnitaOrganizzativa)corr; DocsPaVO.addressbook.QueryCorrispondenteAutorizzato qca = new DocsPaVO.addressbook.QueryCorrispondenteAutorizzato(); qca.ragione = trasmissioneSingola.ragione; qca.ruolo = trasmissione.ruolo; System.Collections.ArrayList ruoli = BusinessLogic.Utenti.addressBookManager.getRuoliRiferimentoAutorizzati(qca, theUo); foreach (DocsPaVO.utente.Ruolo r in ruoli) { trasmissione = addTrasmissioneSingola(infoUtente, trasmissione, r, ragione, note, tipoTrasm, scadenza); } return(trasmissione); } if (trasmissioneSingola != null) { trasmissione.trasmissioniSingole.Add(trasmissioneSingola); } return(trasmissione); }
/// <summary> /// Tramissione di un fascicolo usando un modello di trasmissione /// Il parametro "idStato" puo' essere null o meno a seconda delle necessità /// </summary> /// <returns></returns> /// public static void effettuaTrasmissioneFascDaModello( DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.Modelli_Trasmissioni.ModelloTrasmissione modello, string idStato, DocsPaVO.fascicolazione.Fascicolo fascicolo) { DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); trasmissione.noteGenerali = modello.VAR_NOTE_GENERALI; trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.FASCICOLO; trasmissione.infoFascicolo = new DocsPaVO.fascicolazione.InfoFascicolo(fascicolo); trasmissione.utente = BusinessLogic.Utenti.UserManager.getUtente(infoUtente.idPeople); trasmissione.ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(infoUtente.idCorrGlobali); if (modello != null) { trasmissione.NO_NOTIFY = modello.NO_NOTIFY; } //Parametri delle trasmissioni singole foreach (DocsPaVO.Modelli_Trasmissioni.RagioneDest ragioneDest in modello.RAGIONI_DESTINATARI) { foreach (DocsPaVO.Modelli_Trasmissioni.MittDest mittDest in ragioneDest.DESTINATARI) { DocsPaVO.utente.Corrispondente corr = new DocsPaVO.utente.Corrispondente(); if (mittDest.CHA_TIPO_MITT_DEST == "D") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteByCodRubrica(mittDest.VAR_COD_RUBRICA, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } else { corr = getCorrispondenti(infoUtente, mittDest.CHA_TIPO_MITT_DEST, fascicolo, trasmissione); } if (corr != null) { DocsPaVO.trasmissione.RagioneTrasmissione ragione = BusinessLogic.Trasmissioni.QueryTrasmManager.getRagioneById(mittDest.ID_RAGIONE.ToString()); trasmissione = addTrasmissioneSingola(infoUtente, trasmissione, corr, ragione, mittDest.VAR_NOTE_SING, mittDest.CHA_TIPO_TRASM, mittDest.SCADENZA); } } } trasmissione = impostaNotificheUtentiDaModello(infoUtente, trasmissione, modello); trasmissione = BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(string.Empty, trasmissione); string desc = ""; string notify = "1"; if (trasmissione.NO_NOTIFY != null && trasmissione.NO_NOTIFY.Equals("1")) { notify = "0"; } else { notify = "1"; } if (trasmissione != null) { // LOG per documento if (trasmissione.infoDocumento != null && !string.IsNullOrEmpty(trasmissione.infoDocumento.idProfile)) { foreach (DocsPaVO.trasmissione.TrasmissioneSingola single in trasmissione.trasmissioniSingole) { string method = "TRASM_DOC_" + single.ragione.descrizione.ToUpper().Replace(" ", "_"); if (trasmissione.infoDocumento.segnatura == null) { desc = "Trasmesso Documento : " + trasmissione.infoDocumento.docNumber.ToString(); } else { desc = "Trasmesso Documento : " + trasmissione.infoDocumento.segnatura.ToString(); } BusinessLogic.UserLog.UserLog.WriteLog(trasmissione.utente.userId, trasmissione.utente.idPeople, trasmissione.ruolo.idGruppo, trasmissione.utente.idAmministrazione, method, trasmissione.infoDocumento.docNumber, desc, DocsPaVO.Logger.CodAzione.Esito.OK, infoUtente.delegato, notify, single.systemId); } } // LOG per fascicolo if (trasmissione.infoFascicolo != null && !string.IsNullOrEmpty(trasmissione.infoFascicolo.idFascicolo)) { foreach (DocsPaVO.trasmissione.TrasmissioneSingola single in trasmissione.trasmissioniSingole) { string method = "TRASM_FOLDER_" + single.ragione.descrizione.ToUpper().Replace(" ", "_"); desc = "Trasmesso Fascicolo ID: " + trasmissione.infoFascicolo.idFascicolo.ToString(); BusinessLogic.UserLog.UserLog.WriteLog(trasmissione.utente.userId, trasmissione.utente.idPeople, trasmissione.ruolo.idGruppo, trasmissione.utente.idAmministrazione, method, trasmissione.infoFascicolo.idFascicolo, desc, DocsPaVO.Logger.CodAzione.Esito.OK, infoUtente.delegato, notify, single.systemId); } } } if (!string.IsNullOrEmpty(idStato)) { BusinessLogic.DiagrammiStato.DiagrammiStato.salvaStoricoTrasmDiagrammiFasc(trasmissione.systemId, fascicolo.systemID, idStato); } }
/// <summary> /// /// </summary> /// <param name="trasmissione"></param> /// <param name="infoSecurity"></param> public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList) { this.InstanceETDOCS.TrasmissioneCompletataEventHandler(trasmissione, infoSecurityList); this.InstanceOCS.TrasmissioneCompletataEventHandler(trasmissione, infoSecurityList); }
/// <summary> /// Handler dell'evento di avvenuta accettazione / rifiuto di una trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="ruolo"></param> /// <param name="tipoRisposta"></param> public void TrasmissioneAccettataRifiutataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.trasmissione.TipoRisposta tipoRisposta) { this.InstanceETDOCS.TrasmissioneAccettataRifiutataEventHandler(trasmissione, ruolo, tipoRisposta); this.InstanceOCS.TrasmissioneAccettataRifiutataEventHandler(trasmissione, ruolo, tipoRisposta); }
private static DocsPaVO.trasmissione.Trasmissione creaTrasmDaModello(DocsPaVO.documento.SchedaDocumento schedaDocumento, DocsPaVO.Modelli_Trasmissioni.ModelloTrasmissione modello, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo) { DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); try { DocsPaVO.documento.InfoDocumento infoDocumento = Documenti.DocManager.getInfoDocumento(schedaDocumento); trasmissione.infoDocumento = infoDocumento; DocsPaVO.utente.Utente utente = Utenti.UserManager.getUtente(infoUtente.idPeople); trasmissione.utente = utente; trasmissione.ruolo = ruolo; trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; trasmissione.noteGenerali = modello.VAR_NOTE_GENERALI; for (int i = 0; i < modello.RAGIONI_DESTINATARI.Count; i++) { DocsPaVO.Modelli_Trasmissioni.RagioneDest ragDest = (DocsPaVO.Modelli_Trasmissioni.RagioneDest)modello.RAGIONI_DESTINATARI[i]; ArrayList destinatari = new ArrayList(ragDest.DESTINATARI); for (int j = 0; j < destinatari.Count; j++) { DocsPaVO.Modelli_Trasmissioni.MittDest mittDest = (DocsPaVO.Modelli_Trasmissioni.MittDest)destinatari[j]; DocsPaVO.trasmissione.RagioneTrasmissione ragione = Trasmissioni.QueryTrasmManager.getRagioneById(mittDest.ID_RAGIONE.ToString()); DocsPaVO.utente.Corrispondente corr = Utenti.UserManager.getCorrispondenteBySystemID(mittDest.ID_CORR_GLOBALI.ToString()); if (corr != null) //corr nullo se non esiste o se è stato disabilitato { // Aggiungo la trasmissione singola DocsPaVO.trasmissione.TrasmissioneSingola trasmissioneSingola = new DocsPaVO.trasmissione.TrasmissioneSingola(); trasmissioneSingola.tipoTrasm = mittDest.CHA_TIPO_TRASM; trasmissioneSingola.corrispondenteInterno = corr; trasmissioneSingola.ragione = ragione; trasmissioneSingola.noteSingole = mittDest.VAR_NOTE_SING; // RUOLO if (corr is DocsPaVO.utente.Ruolo) { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.RUOLO; ArrayList listaUtenti = queryUtenti(corr, modello.ID_AMM); if (listaUtenti.Count == 0) { trasmissioneSingola = null; } for (int ut = 0; ut < listaUtenti.Count; ut++) { DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)listaUtenti[ut]; trasmissioneUtente.daNotificare = true; trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } } // UTENTE if (corr is DocsPaVO.utente.Utente) { trasmissioneSingola.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.UTENTE; DocsPaVO.trasmissione.TrasmissioneUtente trasmissioneUtente = new DocsPaVO.trasmissione.TrasmissioneUtente(); trasmissioneUtente.utente = (DocsPaVO.utente.Utente)corr; trasmissioneUtente.daNotificare = true; trasmissioneSingola.trasmissioneUtente.Add(trasmissioneUtente); } if (trasmissioneSingola != null) { trasmissione.trasmissioniSingole.Add(trasmissioneSingola); } } } } } catch { trasmissione = null; } return(trasmissione); }
/// <summary> /// /// </summary> /// <param name="infoUtente"></param> /// <param name="tipo_destinatario"></param> /// <param name="fascicolo"></param> /// <param name="trasmissione"></param> /// <returns></returns> public static DocsPaVO.utente.Corrispondente getCorrispondenti( DocsPaVO.utente.InfoUtente infoUtente, string tipo_destinatario, DocsPaVO.fascicolazione.Fascicolo fascicolo, DocsPaVO.trasmissione.Trasmissione trasmissione) { DocsPaVO.utente.Corrispondente corr = null; //se la il modello di trasmissione ha come destinatario l'utente proprietario del documento //trsmissione a utente proprietario del documento if (tipo_destinatario == "UT_P") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteByIdPeople(fascicolo.creatoreFascicolo.idPeople, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } //ruolo proprietario else if (tipo_destinatario == "R_P") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(fascicolo.creatoreFascicolo.idCorrGlob_Ruolo, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } //uo proprietaria else if (tipo_destinatario == "UO_P") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(fascicolo.creatoreFascicolo.idCorrGlob_UO, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } //responsabile uo proprietario else if (tipo_destinatario == "RSP_P") { string idCorrGlobaliUo = fascicolo.creatoreFascicolo.idCorrGlob_UO; string idCorr = fascicolo.creatoreFascicolo.idCorrGlob_Ruolo; string idCorrGlobaliRuoloRespUo = BusinessLogic.Utenti.UserManager.getRuoloRespUofromUo(idCorrGlobaliUo, "R", idCorr); if (idCorrGlobaliRuoloRespUo != "0" && idCorrGlobaliRuoloRespUo != "-1") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(idCorrGlobaliRuoloRespUo, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } } //ruolo segretario uo del proprietario else if (tipo_destinatario == "R_S") { string idCorrGlobaliUo = fascicolo.creatoreFascicolo.idCorrGlob_UO; string idCorr = fascicolo.creatoreFascicolo.idCorrGlob_Ruolo; string idCorrGlobaliRuoloRespUo = BusinessLogic.Utenti.UserManager.getRuoloRespUofromUo(idCorrGlobaliUo, "S", idCorr); if (idCorrGlobaliRuoloRespUo != "0" && idCorrGlobaliRuoloRespUo != "-1") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(idCorrGlobaliRuoloRespUo, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } } //ruolo responsabile uo del mittente else if (tipo_destinatario == "RSP_M") { string idCorrGlobaliUo = trasmissione.ruolo.uo.systemId; string idCorr = trasmissione.ruolo.systemId; string idCorrGlobaliRuoloRespUo = BusinessLogic.Utenti.UserManager.getRuoloRespUofromUo(idCorrGlobaliUo, "R", idCorr); if (idCorrGlobaliRuoloRespUo != "0" && idCorrGlobaliRuoloRespUo != "-1") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(idCorrGlobaliRuoloRespUo, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } } //RUOLO SEGRETARIO UO DEL MITTENTE else if (tipo_destinatario == "S_M") { string idCorrGlobaliUo = trasmissione.ruolo.uo.systemId; string idCorr = trasmissione.ruolo.systemId; string idCorrGlobaliRuoloRespUo = BusinessLogic.Utenti.UserManager.getRuoloRespUofromUo(idCorrGlobaliUo, "S", idCorr); if (idCorrGlobaliRuoloRespUo != "0" && idCorrGlobaliRuoloRespUo != "-1") { corr = BusinessLogic.Utenti.UserManager.getCorrispondenteCompletoBySystemId(idCorrGlobaliRuoloRespUo, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); } } return(corr); }
/// <summary> /// Handler dell'evento di avvenuta accettazione / rifiuto di una trasmissione di un documento / fascicolo /// </summary> /// <param name="trasmissione"></param> /// <param name="ruolo"></param> /// <param name="tipoRisposta"></param> public void TrasmissioneAccettataRifiutataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.trasmissione.TipoRisposta tipoRisposta) { }
/// <summary> /// /// </summary> /// <param name="trasmissione"></param> /// <param name="infoSecurity"></param> public void TrasmissioneCompletataEventHandler(DocsPaVO.trasmissione.Trasmissione trasmissione, DocsPaVO.trasmissione.infoSecurity[] infoSecurityList) { }
/// <summary> /// Trasmissione di notifica di conversione in PDF terminata (con successo o meno) /// </summary> /// <param name="infoUtente"></param> /// <param name="documentoConvertito"></param> /// <param name="noteGenerali"> /// Note generali da inserire nella trasmissione /// </param> /// <param name="noteIndividuali"></param> private static void ExecuteTrasmissione(DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.documento.SchedaDocumento documentoConvertito, string noteGenerali) { try { if (documentoConvertito == null) { throw new ApplicationException("Scheda Documento non disponibile per la trasmissione"); } DocsPaVO.utente.Utente utente = BusinessLogic.Utenti.UserManager.getUtente(infoUtente.idPeople); //Effettuo una trasmissione all'utente per comunicare l'esito della conversione pdf DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); trasmissione.utente = utente; trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; trasmissione.noteGenerali = noteGenerali; string commandText = "(SELECT SYSTEM_ID FROM DPA_CORR_GLOBALI WHERE ID_GRUPPO = " + infoUtente.idGruppo + ")"; trasmissione.ruolo = BusinessLogic.Utenti.UserManager.getRuolo(commandText); trasmissione.infoDocumento = BusinessLogic.Documenti.DocManager.getInfoDocumento(documentoConvertito); DocsPaVO.trasmissione.RagioneTrasmissione ragione = BusinessLogic.Trasmissioni.RagioniManager.getRagioneNotifica(trasmissione.ruolo.idAmministrazione); DocsPaVO.utente.Corrispondente corr = null; string tipoNotify = ""; if (!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["PDF_CONVERT_SERVER_NOTIFY"].ToString())) { tipoNotify = System.Configuration.ConfigurationManager.AppSettings["PDF_CONVERT_SERVER_NOTIFY"].ToString(); } if (tipoNotify != "" || tipoNotify != "0") { if (tipoNotify == "RS") { corr = (DocsPaVO.utente.Corrispondente)BusinessLogic.Utenti.UserManager.getRuolo(commandText); trasmissione = BusinessLogic.Trasmissioni.TrasmManager.addTrasmissioneSingola(trasmissione, corr, ragione, string.Empty, "S"); } if (tipoNotify == "RT") { corr = (DocsPaVO.utente.Corrispondente)BusinessLogic.Utenti.UserManager.getRuolo(commandText); trasmissione = BusinessLogic.Trasmissioni.TrasmManager.addTrasmissioneSingola(trasmissione, corr, ragione, string.Empty, "T"); } if (tipoNotify == "US") { //corr = (DocsPaVO.utente.Corrispondente) utente; corr = BusinessLogic.Utenti.UserManager.getCorrispondenteByIdPeople(utente.idPeople, DocsPaVO.addressbook.TipoUtente.INTERNO, infoUtente); trasmissione = BusinessLogic.Trasmissioni.TrasmManager.addTrasmissioneSingola(trasmissione, corr, ragione, string.Empty, "S"); } trasmissione = BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(infoUtente.urlWA, trasmissione); if (trasmissione == null) { throw new ApplicationException(); } } } catch (Exception ex) { string errorMessage = string.Format("Si è verificato un errore nell'invio della trasmissione di notifica all'utente '{0}' di conversione in PDF del documento. NoteGenerali di trasmissione: '{1}', Note individuali di trasmissione: '{2}'", infoUtente.userId, noteGenerali, string.Empty); logger.Debug(errorMessage, ex); } }
/// <summary> /// /// </summary> /// <param name="serverName"></param> /// <param name="path"></param> /// <param name="messaggio"></param> /// <param name="infoUtente"></param> /// <param name="ruolo"></param> /// <param name="registro"></param> /// <param name="destinatario"></param> private static void processaMessaggio(string serverName, string path, ZfLib.Message messaggio, DocsPaVO.utente.InfoUtente infoUtente, DocsPaVO.utente.Ruolo ruolo, DocsPaVO.utente.Registro registro, DocsPaVO.utente.Corrispondente destinatario) { logger.Debug("processaMessaggio"); System.IO.FileStream fs = null; bool daAggiornareUffRef = false; bool dbOpen = false; bool fsOpen = false; try { //informazioni sul fax string dataRic = messaggio.GetMsgHistories()[0].Date.ToString(); logger.Debug(" @ dataric = " + dataRic); //accesso al file del fax fs = getFileStream(path + messaggio.GetMsgInfo().Body); //=new System.IO.FileStream(path+messaggio.GetMsgInfo().Body+".G3N",System.IO.FileMode.Open,System.IO.FileAccess.ReadWrite,System.IO.FileShare.ReadWrite); logger.Debug(fs.CanRead.ToString() + "@ OK @"); fsOpen = true; //creazione scheda documento DocsPaVO.documento.SchedaDocumento sd = new DocsPaVO.documento.SchedaDocumento(); sd.idPeople = infoUtente.idPeople; logger.Debug("sd.idPeople = " + sd.idPeople.ToString()); sd.userId = infoUtente.userId; logger.Debug("sd.userId = " + sd.userId.ToString()); DocsPaVO.documento.Oggetto ogg = new DocsPaVO.documento.Oggetto(); ogg.descrizione = "Fax ricevuto in data " + dataRic; //DA COMPLETARE sd.oggetto = ogg; sd.predisponiProtocollazione = true; sd.registro = registro; sd.tipoProto = "A"; sd.typeId = "MAIL"; //aggiunta protocollo entrata DocsPaVO.documento.ProtocolloEntrata protEntr = new DocsPaVO.documento.ProtocolloEntrata(); DocsPaVO.utente.Corrispondente mittente = new DocsPaVO.utente.Corrispondente(); mittente.descrizione = messaggio.GetMsgInfo().Comment; logger.Debug(" @ mittente.descrizione = " + mittente.descrizione); //"QUI SI METTONO INFORMAZIONI"; protEntr.mittente = mittente; sd.protocollo = protEntr; protEntr.dataProtocollazione = System.DateTime.Today.ToString(); sd.appId = "ACROBAT"; sd = BusinessLogic.Documenti.DocSave.addDocGrigia(sd, infoUtente, ruolo); logger.Debug("Salvataggio doc..."); sd = BusinessLogic.Documenti.DocSave.save(infoUtente, sd, false, out daAggiornareUffRef, ruolo); logger.Debug("Salvataggio eseguito"); DocsPaVO.documento.FileDocumento fd = new DocsPaVO.documento.FileDocumento(); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); fd.content = buffer; fd.length = buffer.Length; fd.name = "fax.tif"; BusinessLogic.Documenti.FileManager.putFile((DocsPaVO.documento.FileRequest)sd.documenti[0], fd, infoUtente); logger.Debug("Documento inserito"); fs.Close(); fsOpen = false; //TRASMISSIONE DocsPaVO.trasmissione.Trasmissione trasm = new DocsPaVO.trasmissione.Trasmissione(); trasm.ruolo = ruolo; //db.openConnection(); dbOpen = true; trasm.utente = BusinessLogic.Utenti.UserManager.getUtente(infoUtente.idPeople); DocsPaVO.documento.InfoDocumento infoDoc = new DocsPaVO.documento.InfoDocumento(); infoDoc.idProfile = sd.systemId; infoDoc.docNumber = sd.docNumber; infoDoc.oggetto = sd.oggetto.descrizione; infoDoc.tipoProto = "A"; trasm.infoDocumento = infoDoc; //costruzione singole trasmissioni DocsPaVO.trasmissione.RagioneTrasmissione ragione = getRagioneTrasm(); System.Collections.ArrayList dest = new System.Collections.ArrayList(); dest.Add(destinatario); System.Collections.ArrayList trasmissioniSing = new System.Collections.ArrayList(); for (int i = 0; i < dest.Count; i++) { DocsPaVO.trasmissione.TrasmissioneSingola trSing = new DocsPaVO.trasmissione.TrasmissioneSingola(); trSing.ragione = ragione; logger.Debug(dest[i].GetType().ToString()); if (dest[i].GetType().Equals(typeof(DocsPaVO.utente.Ruolo))) { logger.Debug("ruolo"); trSing.corrispondenteInterno = (DocsPaVO.utente.Ruolo)dest[i]; } else { logger.Debug("utente"); trSing.corrispondenteInterno = (DocsPaVO.utente.Utente)dest[i]; } logger.Debug("ok"); trSing.tipoTrasm = "S"; if (dest[i].GetType().Equals(typeof(DocsPaVO.utente.Ruolo))) { logger.Debug("caso ruolo"); trSing.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.RUOLO; //ricerca degli utenti del ruolo System.Collections.ArrayList utenti = new System.Collections.ArrayList(); DocsPaVO.addressbook.QueryCorrispondente qc = new DocsPaVO.addressbook.QueryCorrispondente(); qc.codiceRubrica = ((DocsPaVO.utente.Ruolo)dest[i]).codiceRubrica; System.Collections.ArrayList registri = new System.Collections.ArrayList(); registri.Add(registro.systemId); qc.idRegistri = registri; qc.idAmministrazione = registro.idAmministrazione; qc.getChildren = true; utenti = BusinessLogic.Utenti.addressBookManager.listaCorrispondentiIntMethod(qc); System.Collections.ArrayList trasmissioniUt = new System.Collections.ArrayList(); for (int k = 0; k < utenti.Count; k++) { DocsPaVO.trasmissione.TrasmissioneUtente trUt = new DocsPaVO.trasmissione.TrasmissioneUtente(); trUt.utente = (DocsPaVO.utente.Utente)utenti[k]; trasmissioniUt.Add(trUt); } trSing.trasmissioneUtente = trasmissioniUt; } else { logger.Debug("Caso utente"); trSing.tipoDest = DocsPaVO.trasmissione.TipoDestinatario.UTENTE; System.Collections.ArrayList trasmissioniUt = new System.Collections.ArrayList(); DocsPaVO.trasmissione.TrasmissioneUtente trUt = new DocsPaVO.trasmissione.TrasmissioneUtente(); trUt.utente = (DocsPaVO.utente.Utente)dest[i]; trasmissioniUt.Add(trUt); trSing.trasmissioneUtente = trasmissioniUt; } trasmissioniSing.Add(trSing); } trasm.trasmissioniSingole = trasmissioniSing; if (infoUtente.delegato != null) { trasm.delegato = ((DocsPaVO.utente.InfoUtente)(infoUtente.delegato)).idPeople; } //BusinessLogic.Trasmissioni.TrasmManager.saveTrasmMethod(trasm); //BusinessLogic.Trasmissioni.ExecTrasmManager.executeTrasmMethod(serverName,trasm); BusinessLogic.Trasmissioni.ExecTrasmManager.saveExecuteTrasmMethod(serverName, trasm); } catch (Exception e) { logger.Debug(e.Message); if (fsOpen) { fs.Close(); } if (dbOpen) { //db.closeConnection(); } logger.Debug("Errore nella gestione dei fax (processaMessaggio)", e); throw e; } }
/// <summary> /// /// </summary> /// <param name="trasmissione"></param> /// <param name="idDestinatari"></param> /// <returns></returns> protected virtual void UpdateTrasmissione( DocsPaVO.trasmissione.Trasmissione trasmissione, params string[] idDestinatari) { DocsPaVO.trasmissione.TrasmissioneSingola[] tsingole = (DocsPaVO.trasmissione.TrasmissioneSingola[]) trasmissione.trasmissioniSingole.ToArray(typeof(DocsPaVO.trasmissione.TrasmissioneSingola)); foreach (string idDest in idDestinatari) { if (tsingole.Count(e => e.corrispondenteInterno.systemId == idDest) == 0) { string codiceDestinatario = string.Empty; if (this._tipoTrasmissione == TipiTrasmissioneEnum.Utente) { DocsPaVO.utente.Utente utente = BusinessLogic.Utenti.UserManager.getUtenteById(idDest); codiceDestinatario = utente.userId; } else { DocsPaVO.utente.Ruolo ruolo = null; int idDestAsInt; if (Int32.TryParse(idDest, out idDestAsInt)) { // L'identificativo fornito è l'id del ruolo direttamente ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(idDest); if (ruolo == null) { ruolo = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(idDest); } } else { // L'identificativo fornito è il codice del ruolo ruolo = BusinessLogic.Utenti.UserManager.getRuoloByCodice(idDest); } codiceDestinatario = ruolo.codiceRubrica; } DocsPaVO.utente.Corrispondente corrispondenteDestinatario = BusinessLogic.Utenti.UserManager.getCorrispondenteByCodRubrica( codiceDestinatario, DocsPaVO.addressbook.TipoUtente.INTERNO, this._infoUtente); if (corrispondenteDestinatario != null) { // Reperimento ragione trasmissione di default string idRagioneDefault = BusinessLogic.Amministrazione.AmministraManager.AmmGetInfoAmmCorrente(this._infoUtente.idAmministrazione).IDRagioneCompetenza; DocsPaVO.trasmissione.RagioneTrasmissione ragione = BusinessLogic.Trasmissioni.QueryTrasmManager.getRagioneById(idRagioneDefault); string tipoTrasm = (this._tipoTrasmissione == TipiTrasmissioneEnum.Utente ? "S" : "T"); trasmissione = AddTrasmissioneSingola(this._infoUtente, trasmissione, corrispondenteDestinatario, ragione, string.Empty, tipoTrasm, 0); } } } }
/// <summary> /// /// </summary> /// <param name="idOggetto"></param> /// <param name="tipoOggetto"></param> /// <param name="ragione"></param> /// <param name="noteGenerali"></param> /// <param name="idDestinatari"></param> /// <returns></returns> protected virtual DocsPaVO.trasmissione.Trasmissione PrepareTrasmissione( string idOggetto, DocsPaVO.trasmissione.TipoOggetto tipoOggetto, string ragione, string noteGenerali, bool notificaInToDoList, params string[] idDestinatari) { DocsPaVO.trasmissione.Trasmissione trasmissione = new DocsPaVO.trasmissione.Trasmissione(); trasmissione.noteGenerali = noteGenerali; DocsPaVO.documento.SchedaDocumento schedaDocumento = null; DocsPaVO.fascicolazione.Fascicolo schedaFascicolo = null; if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.DOCUMENTO; schedaDocumento = BusinessLogic.Documenti.DocManager.getDettaglio(this._infoUtente, idOggetto, idOggetto); trasmissione.infoDocumento = new DocsPaVO.documento.InfoDocumento(schedaDocumento); } else if (tipoOggetto == DocsPaVO.trasmissione.TipoOggetto.FASCICOLO) { trasmissione.tipoOggetto = DocsPaVO.trasmissione.TipoOggetto.FASCICOLO; schedaFascicolo = BusinessLogic.Fascicoli.FascicoloManager.getFascicoloById(idOggetto, this._infoUtente); trasmissione.infoFascicolo = new DocsPaVO.fascicolazione.InfoFascicolo(schedaFascicolo); } trasmissione.NO_NOTIFY = (notificaInToDoList ? "0" : "1"); trasmissione.utente = BusinessLogic.Utenti.UserManager.getUtente(this._infoUtente.idPeople); trasmissione.ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(this._infoUtente.idCorrGlobali); foreach (string idDest in idDestinatari) { string codiceDestinatario = string.Empty; if (this._tipoTrasmissione == TipiTrasmissioneEnum.Utente) { DocsPaVO.utente.Utente utente = BusinessLogic.Utenti.UserManager.getUtenteById(idDest); codiceDestinatario = utente.userId; } else { DocsPaVO.utente.Ruolo ruolo = null; int idDestAsInt; if (Int32.TryParse(idDest, out idDestAsInt)) { // L'identificativo fornito è l'id del ruolo direttamente ruolo = BusinessLogic.Utenti.UserManager.getRuoloById(idDest); if (ruolo == null) { ruolo = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(idDest); } } else { // L'identificativo fornito è il codice del ruolo ruolo = BusinessLogic.Utenti.UserManager.getRuoloByCodice(idDest); } codiceDestinatario = ruolo.codiceRubrica; } DocsPaVO.utente.Corrispondente corrispondenteDestinatario = BusinessLogic.Utenti.UserManager.getCorrispondenteByCodRubrica( codiceDestinatario, DocsPaVO.addressbook.TipoUtente.INTERNO, this._infoUtente); if (corrispondenteDestinatario != null) { DocsPaVO.trasmissione.RagioneTrasmissione ragioneTrasmissione = this.GetRagioneTrasmissione(ragione); string tipoTrasm = (this._tipoTrasmissione == TipiTrasmissioneEnum.Utente ? "S" : "T"); trasmissione = this.AddTrasmissioneSingola(this._infoUtente, trasmissione, corrispondenteDestinatario, ragioneTrasmissione, string.Empty, tipoTrasm, 0); } } return(trasmissione); }