Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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");
            }
        }
Exemple #4
0
        /// <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);
        }