public override DocsPaIntegration.Search.SearchOutput Search(DocsPaIntegration.Search.SearchInfo searchInfo)
 {
     try
     {
         List <SearchOutputRow> rows   = new List <SearchOutputRow>();
         ExternalWSSoapClient   soap   = getWSClient();
         SearchInfoWS           search = new SearchInfoWS();
         search.Descrizione   = searchInfo.Descrizione;
         search.Codice        = searchInfo.Codice;
         search.PageSize      = searchInfo.PageSize;
         search.RequestedPage = searchInfo.RequestedPage;
         SearchOutputWS outputWS = soap.Search(search);
         if (outputWS.Code == SearchOutputCode.KO)
         {
             throw new SearchException(SearchExceptionCode.SERVER_ERROR, outputWS.ErrorMessage);
         }
         for (int i = 0; i < outputWS.Rows.Length; i++)
         {
             SearchOutputRow row = new SearchOutputRow();
             row.Codice      = outputWS.Rows[i].Codice;
             row.Descrizione = outputWS.Rows[i].Descrizione;
             rows.Add(row);
         }
         SearchOutput res = new SearchOutput(rows, outputWS.NumTotResults);
         return(res);
     }
     catch (SearchException se)
     {
         throw se;
     }
     catch (Exception e)
     {
         throw new SearchException(SearchExceptionCode.SERVICE_UNAVAILABLE);
     }
 }
Beispiel #2
0
        public override DocsPaIntegration.Search.SearchOutput Search(DocsPaIntegration.Search.SearchInfo searchInfo)
        {
            try
            {
                //Client del webservice
                ArcaWS.ArcaIntraWSService wsArca = new ArcaIntraWSService();
                wsArca.Url = WSUrl;

                //Imposta il profilo per invocare il webservice di Arca
                ArcaWS.tProfilo profilo = new tProfilo();
                SetProfilo(ref profilo);

                //Istanzia l'oggetto per il risultato della ricerca
                ArcaWS.DatiRisposta datiRisposta = new DatiRisposta();

                //Ricerca per codice fiscale
                if (searchInfo.OtherParam.ContainsKey("CF"))
                {
                    //Istanzia l'oggetto per la ricerca per codice fiscale
                    ArcaWS.RichiestaPerCodiceFiscale ricercaCF = new RichiestaPerCodiceFiscale();
                    ricercaCF.Profilo = profilo;

                    //Istanzia l'oggetto per i dati codice fiscale
                    ArcaWS.tCodiceFiscale cfRichiesta = new tCodiceFiscale();

                    //Imposta i dati del codice fiscale
                    SetCodiceFiscale(ref cfRichiesta, searchInfo.OtherParam["CF"].ToString());
                    ricercaCF.CodiceFiscale = cfRichiesta;
                    datiRisposta            = wsArca.ricercaPerCodiceFiscale(ricercaCF);
                }
                else //Ricerca per dati anagrafici
                {
                    //Istanzia l'oggetto per la ricerca per dati anagrafici
                    ArcaWS.RichiestaPerDatiAnagraficiParziali ricercaDA = new RichiestaPerDatiAnagraficiParziali();
                    ricercaDA.Profilo = profilo;

                    //Istanzia l'oggetto per i data anagrafici parziali
                    ArcaWS.tDatiPersonaliParziali2 dpRichiesta = new tDatiPersonaliParziali2();

                    //Imposta i dati anagrafici parziali
                    if (searchInfo.OtherParam.ContainsKey("COGNOME"))
                    {
                        dpRichiesta.Cognome = searchInfo.OtherParam["COGNOME"].ToString();
                    }

                    if (searchInfo.OtherParam.ContainsKey("NOME"))
                    {
                        dpRichiesta.Cognome = searchInfo.OtherParam["NOME"].ToString();
                    }

                    if (searchInfo.OtherParam.ContainsKey("DATA_NASCITA"))
                    {
                        ArcaWS.tData2 dataNascita = new tData2();
                        dataNascita.Anno        = searchInfo.OtherParam["DATA_NASCITA"].ToString().Substring(4, 4);
                        dataNascita.Mese        = searchInfo.OtherParam["DATA_NASCITA"].ToString().Substring(2, 2);
                        dataNascita.Giorno      = searchInfo.OtherParam["DATA_NASCITA"].ToString().Substring(0, 2);
                        dpRichiesta.DataNascita = dataNascita;
                    }

                    if (searchInfo.OtherParam.ContainsKey("SESSO"))
                    {
                        dpRichiesta.Sesso = searchInfo.OtherParam["SESSO"].ToString();
                    }


                    if (searchInfo.OtherParam.ContainsKey("COMUNE_NASCITA") || searchInfo.OtherParam.ContainsKey("PROVINCIA_NASCITA"))
                    {
                        ArcaWS.tLuogo2 comuneNascita = new tLuogo2();
                        if (searchInfo.OtherParam.ContainsKey("COMUNE_NASCITA"))
                        {
                            comuneNascita.Nome = searchInfo.OtherParam["COMUNE_NASCITA"].ToString();
                        }

                        if (searchInfo.OtherParam.ContainsKey("PROVINCIA_NASCITA"))
                        {
                            comuneNascita.Provincia = searchInfo.OtherParam["PROVINCIA_NASCITA"].ToString();
                        }

                        dpRichiesta.ComuneNascita = comuneNascita;
                    }

                    ricercaDA.DatiPersonali = dpRichiesta;
                    datiRisposta            = wsArca.ricercaPerDatiPersonaliParziali(ricercaDA);
                }


                //Se il webservice di Arca è andato in errore lancia un'eccezione con il dettaglio dell'errore
                if (datiRisposta.Esito.ReturnCode != "WS-OK")
                {
                    throw new SearchException(SearchExceptionCode.SERVER_ERROR, datiRisposta.Esito.Descrizione);
                }
                else
                {
                    List <SearchOutputRow> rows = new List <SearchOutputRow>();
                    if (datiRisposta.Esito.TotaleSinonimiRestituiti == 1)
                    {
                        SearchOutputRow       row        = new SearchOutputRow();
                        ArcaWS.tCodiceFiscale cfRisposta = datiRisposta.Dettaglio.HighProfile.CodiceFiscale;
                        row.Codice      = cfRisposta.Cognome + cfRisposta.Nome + cfRisposta.Anno + cfRisposta.Mese + cfRisposta.Giorno + cfRisposta.Comune + cfRisposta.CodControllo;
                        row.Descrizione = datiRisposta.Dettaglio.HighProfile.DatiPersonali.Cognome + " " + datiRisposta.Dettaglio.HighProfile.DatiPersonali.Nome;
                        rows.Add(row);
                    }
                    else
                    {
                        for (int i = 0; i <= datiRisposta.Esito.TotaleSinonimiRestituiti; i++)
                        {
                            SearchOutputRow       row        = new SearchOutputRow();
                            ArcaWS.tCodiceFiscale cfRisposta = datiRisposta.Sinonimi[i].LowProfile.CodiceFiscale;
                            row.Codice      = cfRisposta.Cognome + cfRisposta.Nome + cfRisposta.Anno + cfRisposta.Mese + cfRisposta.Giorno + cfRisposta.Comune + cfRisposta.CodControllo;
                            row.Descrizione = datiRisposta.Sinonimi[i].LowProfile.DatiPersonali.Cognome + " " + datiRisposta.Sinonimi[i].LowProfile.DatiPersonali.Nome;
                            rows.Add(row);
                        }
                    }

                    SearchOutput res = new SearchOutput(rows, datiRisposta.Esito.TotaleSinonimiRestituiti);

                    return(res);
                }
            }
            catch (Exception e)
            {
                throw new SearchException(SearchExceptionCode.SERVICE_UNAVAILABLE);
            }
        }