/// <summary> /// Funzione per la risoluzione di un codice corrispondente /// </summary> /// <param name="code">Codice da risolvere</param> /// <param name="searchOnlyRoles">True se bisogna ricercare solo nei ruoli</param> /// <param name="registro">Registro in cui ricercare</param> /// <param name="callType">Call type da utilizzare per la ricerca</param> /// <returns>Array di oggetti con le informazioni sul corrispondenti trovati</returns> private ElementoRubrica[] ResolveCode(String code, bool searchOnlyRoles, Registro registro, RubricaCallType callType) { ElementoRubrica[] corrSearch = null; if (!String.IsNullOrEmpty(code)) { ParametriRicercaRubrica qco = new ParametriRicercaRubrica(); UserManager.setQueryRubricaCaller(ref qco); qco.codice = code.Trim(); qco.tipoIE = DocsPAWA.DocsPaWR.AddressbookTipoUtente.INTERNO; qco.calltype = callType; //cerco su tutti i tipi utente: if (ConfigurationManager.AppSettings["LISTE_DISTRIBUZIONE"] != null && ConfigurationManager.AppSettings["LISTE_DISTRIBUZIONE"] == "1") { qco.doListe = true; } qco.doRuoli = true; if (searchOnlyRoles) { qco.doUtenti = false; qco.doUo = false; } else { qco.doUtenti = true; qco.doUo = true; } qco.queryCodiceEsatta = true; corrSearch = UserManager.getElementiRubrica(this.Page, qco); } return(corrSearch); }
/// <summary> /// Funzione per la risoluzione di un codice corrispondente /// </summary> /// <param name="code">Codice da risolvere</param> /// <param name="searchOnlyRoles">True se bisogna ricercare solo nei ruoli</param> /// <param name="callType">Call type da utilizzare</param> /// <returns>Array di oggetti con le informazioni sul corrispondenti trovati</returns> private ElementoRubrica[] ResolveCode(String code, bool searchOnlyRoles, RubricaCallType callType) { ElementoRubrica[] corrSearch = null; if (!String.IsNullOrEmpty(code)) { ParametriRicercaRubrica qco = new ParametriRicercaRubrica(); UserManager.setQueryRubricaCaller(ref qco); qco.codice = code.Trim(); qco.tipoIE = DocsPAWA.DocsPaWR.AddressbookTipoUtente.INTERNO; qco.calltype = callType; qco.caller.IdRegistro = this.ddlRegistry.SelectedValue; //cerco su tutti i tipi utente: if (ConfigurationManager.AppSettings["LISTE_DISTRIBUZIONE"] != null && ConfigurationManager.AppSettings["LISTE_DISTRIBUZIONE"] == "1") { qco.doListe = true; } qco.doRuoli = true; if (searchOnlyRoles) { qco.doUtenti = false; qco.doUo = false; } else { qco.doUtenti = true; qco.doUo = true; } qco.queryCodiceEsatta = true; corrSearch = UserManager.getElementiRubrica(this.Page, qco); // Se il calltype è relativo a ruolo da utilizzare per la sostituzione, // vengono esclusi i corrispondenti inibiti if (callType == RubricaCallType.CALLTYPE_REPLACE_ROLE && corrSearch != null && corrSearch.Length == 1 && corrSearch[0].disabledTrasm) { corrSearch = new ElementoRubrica[0]; } } return(corrSearch); }
protected void txt_Descrizione_TextChanged(object sender, EventArgs e) { //In questo caso il campo è readOnly. //Controllo solo il codice perchè la descrizione è sempre readOnly, //l'apertura della rubrica è quindi inutile in quanto non si può //modificare il valore di questo userControl bool eseguiRicerca = true; if (Session["dictionaryCorrispondente"] != null) { dic_Corr = (Dictionary <string, SAAdminTool.DocsPaWR.Corrispondente>)Session["dictionaryCorrispondente"]; if (dic_Corr.ContainsKey(this.ID)) { SAAdminTool.DocsPaWR.Corrispondente corr_saved = dic_Corr[this.ID]; if (dic_Corr[this.ID] != null && corr_saved.codiceRubrica.ToUpper().Equals(txt_Codice.Text.ToUpper())) { eseguiRicerca = false; } if (eseguiRicerca && Session["noRicercaDesc"] != null) { eseguiRicerca = false; Session.Remove("noRicercaDesc"); } } } else { dic_Corr = new Dictionary <string, DocsPaWR.Corrispondente>(); } if (Session["noDoppiaRicerca"] == null) { //caso di annullamento dei dati inseriti if (txt_Descrizione.Text.Equals("") && eseguiRicerca) { eseguiRicerca = false; dic_Corr[this.ID] = null; Session.Add("dictionaryCorrispondente", dic_Corr); txt_Codice.Text = ""; } if (Session["rubrica.campoCorrispondente"] == null && eseguiRicerca) { SAAdminTool.DocsPaWR.Ruolo ruoloSelezionato = UserManager.getRuolo(); DocsPaWR.Registro[] regAll = UserManager.getListaRegistriWithRF(ruoloSelezionato.systemId, "", ""); string condRegistri = string.Empty; string condRegistri2 = string.Empty; if (regAll != null && regAll.Length > 0) { foreach (DocsPaWR.Registro reg in regAll) { condRegistri2 += reg.systemId + ","; } condRegistri = " and (id_registro in (" + condRegistri2.Substring(0, condRegistri2.Length - 1) + ") OR id_registro is null)"; condRegistri2 = condRegistri2.Substring(0, condRegistri2.Length - 1); } //Se in sessione c'è un ruolo, vuol dire che sono sul frontend e quindi la //rubrica puo' funzionare, in quanto preleva da sessione il registro, il ruolo e //l'utente che la vorrebbero utilizzando. //In caso contrario, vuol dire che sto chiamando l'apertura della rubrica //dall'amministrazione, in particolare da una delle due anteprime di profilazione. //In questo caso non essendoci nessun registro, nè ruolo nè utente in sessione, //l'apertura della rubrica viene inibita, ma non è un problema in quanto essendo //un antemprima, serve solo per determinare una veste grafica gradevole per tipo //di documento o di fascicolo che si sta creando. if (ruoloSelezionato != null) { if ((txt_Descrizione.Text != null && txt_Descrizione.Text != "")) { ParametriRicercaRubrica qco = new ParametriRicercaRubrica(); qco.caller = new RubricaCallerIdentity(); qco.caller.IdUtente = UserManager.getInfoUtente().idPeople; qco.caller.filtroRegistroPerRicerca = condRegistri2; qco.descrizione = txt_Descrizione.Text; qco.doUo = true; qco.doRuoli = true; qco.doUtenti = true; qco.tipoIE = AddressbookTipoUtente.GLOBALE; if (this.cbx_storicizzato.Checked) { qco.calltype = RubricaCallType.CALLTYPE_RICERCA_CORRISPONDENTE; } else { qco.calltype = RubricaCallType.CALLTYPE_CORR_INT_EST; } SAAdminTool.DocsPaWR.ElementoRubrica[] er = UserManager.getElementiRubrica(this.Page, qco); // .getElementoRubrica(this.Page, txt_Codice.Text, condRegistri); if (er != null) { if (er.Length == 0) { this.TIPO = ""; this.ID_CORRISPONDENTE = ""; sDescrizione = txt_Descrizione.Text; sCodice = null; dic_Corr[this.ID] = null; Session.Add("dictionaryCorrispondente", dic_Corr); Page.ClientScript.RegisterStartupScript(this.GetType(), "noCorr", String.Format("alert('Nessun corrispondente individuato con la descrizione {0}');", this.txt_Descrizione.Text.Replace("'", "''")), true); } else { if (er.Length == 1) { this.TIPO = er[0].tipo; this.ID_CORRISPONDENTE = er[0].systemId; Session["noDoppiaRicerca"] = true; txt_Descrizione.Text = er[0].descrizione; sDescrizione = er[0].descrizione; txt_Codice.Text = er[0].codice; sCodice = er[0].codice; dic_Corr[this.ID] = UserManager.getCorrispondenteBySystemIDDisabled(this.Page, er[0].systemId); Session.Add("dictionaryCorrispondente", dic_Corr); Session["noRicercaCodice"] = true; } else { // apro popup per la scelta dei corrispondenti dic_Corr[this.ID] = null; Page.ClientScript.RegisterStartupScript(this.GetType(), "multiCorr", "ApriFinestraMultiCorrispondenti('" + this.txt_Codice.ClientID + "','" + this.txt_Descrizione.ClientID + "');", true); Session.Add("multiCorr", er); Session["noRicercaCodice"] = true; Session["idCorrMulti"] = Convert.ToInt32(this.ID); return; } } } } } } } else { Session.Remove("noDoppiaRicerca"); } if (Session["countCorr"] != null && Convert.ToInt32(Session["countCorr"]) > 1) { Session.Remove("whichCorr"); } if (isRiprodotto) { Session.Remove("CorrSelezionatoDaMulti"); Session.Remove("rubrica.campoCorrispondente"); } }
/// <summary> /// Funzione per la ricerca di un corrispondente a partire dal suo codice. /// </summary> /// <param name="callType">Il calltype</param> /// <param name="corrCode">Il codice del corrispondente da ricercare</param> /// <param name="role">Il ruolo con cui è stata lanciata la procedura</param> /// <param name="userInfo">Le informazioni sull'utente che ha lanciato la procedura</param> /// <param name="registrySyd">L'id del registro</param> /// <param name="rfSyd">L'id dell'RF</param> /// <param name="isEnabledSmistamento">True se è abilitato lo smistamento</param> /// <param name="userTypeForProject">La tipologia di utente da ricercare (Interna/Esterna/Globale). Questo parametro viene preso in considerazione solo nel caso di campi custom di tipo Corrispondente.</param> /// <returns>Il corrispondente individuato</returns> public static Corrispondente GetCorrispondenteByCode( ParametriRicercaRubrica.CallType callType, string corrCode, Ruolo role, InfoUtente userInfo, string registrySyd, string rfSyd, bool isEnabledSmistamento, TipoUtente userTypeForProject) { #region Dichiarazione Variabili // L'oggetto utilizzato per memorizzare i parametri di ricerca ParametriRicercaRubrica searchParameters; // L'oggetto per memorizzare le impostazioni sullo smistamento SmistamentoRubrica smistamentoRubrica; // L'oggetto per l'effettuazione delle ricerche nella rubrica DPA3_RubricaSearchAgent corrSearcher; // La lista degli elementi resttiuiti dalla ricerca ArrayList corrList; // Il corrispondente da restituire Corrispondente toReturn = null; #endregion #region Impostazione parametri di ricerca // Creazione oggetto per la memorizzazione dei parametri di ricerca searchParameters = new ParametriRicercaRubrica(); // Impostazione del call type searchParameters.calltype = callType; // Impostazione del codice da ricercare searchParameters.codice = corrCode; // Impostazione del flag per la ricerca del codice esatta searchParameters.queryCodiceEsatta = true; // Creazione del caller searchParameters.caller = new ParametriRicercaRubrica.CallerIdentity(); // Impostazione del calltype searchParameters.caller.IdRuolo = role.systemId; // Impostazione dell'id utente searchParameters.caller.IdUtente = userInfo.idPeople; // Impostazione dell'id registro searchParameters.caller.IdRegistro = registrySyd; // Impostazione del filtro registro per la ricerca searchParameters.caller.filtroRegistroPerRicerca = registrySyd; // La ricerca va effettuata su Uffici, Utenti, Ruoli, RF searchParameters.doUo = true; searchParameters.doUtenti = true; searchParameters.doRuoli = true; searchParameters.doRF = true; bool abilitazioneRubricaComune = BusinessLogic.RubricaComune.Configurazioni.GetConfigurazioni(userInfo).GestioneAbilitata; searchParameters.doRubricaComune = abilitazioneRubricaComune; #endregion #region Impostazione parametri per smistamento // Creazione oggetto per parametri smistamento smistamentoRubrica = new SmistamentoRubrica(); // Abilitazione smistamento smistamentoRubrica.smistamento = isEnabledSmistamento ? "1" : "0"; // Impostazione calltype smistamentoRubrica.calltype = callType; // Impostazione informazioni sull'utente smistamentoRubrica.infoUt = userInfo; // Impostazione ruolo smistamentoRubrica.ruoloProt = role; // Impostazione dell'id del registro smistamentoRubrica.idRegistro = registrySyd; #endregion #region Impostazione parametri dipendenti dal contesto // Impostazione parametri dipendenti dal contesto switch (callType) { case ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_IN: if (!String.IsNullOrEmpty(rfSyd)) { searchParameters.caller.filtroRegistroPerRicerca += ", " + rfSyd; } searchParameters.doRubricaComune = abilitazioneRubricaComune; searchParameters.doRubricaComune = true; smistamentoRubrica.daFiltrareSmistamento = "0"; searchParameters.tipoIE = TipoUtente.GLOBALE; break; case ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_OUT_MITT: smistamentoRubrica.daFiltrareSmistamento = "0"; searchParameters.tipoIE = TipoUtente.INTERNO; break; case ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_OUT: searchParameters.doListe = true; searchParameters.doRubricaComune = abilitazioneRubricaComune; if (!String.IsNullOrEmpty(rfSyd)) { searchParameters.caller.filtroRegistroPerRicerca += ", " + rfSyd; } smistamentoRubrica.daFiltrareSmistamento = "1"; searchParameters.tipoIE = TipoUtente.GLOBALE; break; case ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_INT_MITT: smistamentoRubrica.daFiltrareSmistamento = "0"; searchParameters.tipoIE = TipoUtente.INTERNO; break; case ParametriRicercaRubrica.CallType.CALLTYPE_PROTO_INT_DEST: searchParameters.doListe = true; smistamentoRubrica.daFiltrareSmistamento = "1"; searchParameters.tipoIE = TipoUtente.INTERNO; break; case ParametriRicercaRubrica.CallType.CALLTYPE_CORR_EST: if (!String.IsNullOrEmpty(rfSyd)) { searchParameters.caller.filtroRegistroPerRicerca += ", " + rfSyd; } searchParameters.doRubricaComune = true; searchParameters.tipoIE = userTypeForProject; smistamentoRubrica.daFiltrareSmistamento = "0"; break; } #endregion #region Esecuzione Ricerca // Creazione oggetto per la ricerca corrSearcher = new DPA3_RubricaSearchAgent(userInfo); // Esecuzione della ricerca corrList = corrSearcher.Search(searchParameters, smistamentoRubrica); #endregion #region Gestione risultato // Se non sono stati restituiti corrispondenti eccezione if (corrList == null || corrList.Count == 0) { throw new Exception(String.Format( "Nessun corrispondente rilevato con il codice {0}", corrCode)); } // Se sono stati restituiti più corrispondenti, ambiguità if (corrList.Count > 1) { throw new Exception(String.Format( "La ricerca del corrispondente con codice {0} ha restituito {1} risultati. Provare a restringere il campo di ricerca specificando un RF.", corrCode, corrList.Count)); } #endregion // Reperimento dei dati sul corrispondente try { ElementoRubrica temp = (ElementoRubrica)corrList[0]; if (temp.isRubricaComune) { Corrispondente tempCorr = BusinessLogic.RubricaComune.RubricaServices.UpdateCorrispondente(userInfo, temp.codice); toReturn = tempCorr; } else { toReturn = UserManager.getCorrispondenteBySystemID(temp.systemId); } } catch (Exception e) { throw new ImportException( String.Format( "Errore durante il reperimento dei dati sul corrispondente con codice '{0}'", corrCode)); } // Restituzione del corrispondente return(toReturn); }