Exemple #1
0
 /// <summary>
 /// Imposta i dati del codice fiscale, utilizzato per la ricerca puntuale
 /// </summary>
 /// <param name="?"></param>
 private void SetCodiceFiscale(ref tCodiceFiscale cf, string codiceFiscale)
 {
     cf.Cognome      = codiceFiscale.Substring(0, 3);
     cf.Nome         = codiceFiscale.Substring(3, 3);
     cf.Anno         = Int32.Parse(codiceFiscale.Substring(6, 2));
     cf.Mese         = codiceFiscale.Substring(8, 1);
     cf.Giorno       = codiceFiscale.Substring(9, 2);
     cf.Comune       = codiceFiscale.Substring(11, 4);
     cf.CodControllo = codiceFiscale.Substring(15, 1);
 }
Exemple #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);
            }
        }