public Strato RecuperaStrato(Guid id)
        {
            Strato strato = new Strato();

            SqlServerExecuteObject sseo = null;
            SqlDataReader          dr   = null;

            SqlServerExecuteObject sseo2 = null;
            SqlDataReader          dr2   = null;

            string sSql = @"SELECT Titolo, Descrizione, NomeTipoRisorsa, IdentificatoreUnico, IdentificatoreLivSuperiore, AltriDettagli, InformazioniSupplementari, FormatiPresentazione, NomeTipoRapprSpaziale, NomeLingua, IdStrato FROM vwMETAIdentificazione WHERE IdStrato = @id;
            SELECT Argomenti FROM vwMETAClassificazione WHERE IdStrato = @id;
            SELECT ParoleChiaveThesaurus, NomeThesaurus, NomeTipoData, DataThesaurus FROM vwMETAParoleChiave WHERE IdStrato = @id;
            SELECT DelimitazioneGeograficaLatNord, DelimitazioneGeograficaLatSud, DelimitazioneGeograficaLonEst, DelimitazioneGeograficaLonOvest FROM vwMETALocalizzazione WHERE IdStrato = @id;
            SELECT Nazioni, Regioni, Province, Comuni FROM vwMETATerritori WHERE IdStrato = @id;
            SELECT EstensioneTemporale, DataPubblicazione, DataRevisione, DataCreazione FROM vwMETARiferimentoTemporale WHERE IdStrato = @id;
            SELECT GenealogiaProcessoProduzione, Scala, DistanzaX, DistanzaY FROM vwMETAQualitaValidita WHERE IdStrato = @id;
            SELECT NomeSistemaRiferimento FROM vwMETASistemaRiferimento WHERE IdStrato = @id;
            SELECT TitoloSpecifica, DataSpecifica, NomeTipoData, ConformitaSpecifica FROM vwMETAConformita WHERE IdStrato = @id;
            SELECT LimitazioneAccesso, VincoliAccesso, VincoliFruibilita, AltriVincoli, NomeRestrizioneDati FROM vwMETAVincoliAccesso WHERE IdStrato = @id;
            SELECT NomeResponsabileDati, EmailResponsabileDati, TelefonoResponsabileDati, IndirizzoWebResponsabileDati, NomeRuoloResponsabile FROM vwMETAResponsabiliDati WHERE IdStrato = @id AND IdRuoloResponsabileDati <> 5;
            SELECT FormatoDati, DescVer FROM vwMETADistribuzione WHERE IdStrato = @id;
            SELECT NomeResponsabileDati, EmailResponsabileDati, TelefonoResponsabileDati, IndirizzoWebResponsabileDati, NomeRuoloResponsabile FROM vwMETAResponsabiliDati WHERE IdStrato = @id AND IdRuoloResponsabileDati = 5;
            SELECT DenominazioneResponsabileMetaDati, EmailResponsabileMetaDati, TelefonoResponsabileMetaDati, IndirizzoWebResponsabileMetaDati, NomeRuoloResponsabile FROM vwMETAResponsabiliMetaDati WHERE IdStrato = @id;
            SELECT DataMetadati, LinguaMetadati, IdentificatoreUnicoMetadati, IdentificatoreLivSuperioreMetadati FROM vwMETAMetadati WHERE IdStrato = @id;";

            sseo             = new SqlServerExecuteObject();
            sseo.CommandText = sSql;
            sseo.CommandType = CommandType.Text;
            sseo.SqlParameters.AddWithValue("@id", id);

            sseo2             = new SqlServerExecuteObject();
            sseo2.CommandText = "SELECT * FROM vwMETARisorseOnline WHERE IdRisorsa = @id;";
            sseo2.CommandType = CommandType.Text;
            sseo2.SqlParameters.AddWithValue("@id", id);

            dr  = SqlProvider.ExecuteReaderObject(sseo);
            dr2 = SqlProvider.ExecuteReaderObject(sseo2);

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTitolo, dr.GetString(0)));
                    strato.Titolo = dr.GetString(0);
                }
                if (!dr.IsDBNull(1))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDescrizione, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTipoRisorsa, dr.GetString(2)));
                }

                if (dr2.HasRows)
                {
                    strato.Identificazione.Add(new Tuple <string, string>("TabellaLink", ""));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIdentificatoreUnico, dr.GetString(3)));
                }

                if (!dr.IsDBNull(4))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIdentificatoreLivelloSuperiore, dr.GetString(4)));
                }

                if (!dr.IsDBNull(5))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelAltriDettagli, dr.GetString(5)));
                }

                if (!dr.IsDBNull(6))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelInformazioneSupplementari, dr.GetString(6)));
                }

                if (!dr.IsDBNull(7))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelFormatoPresentazione, dr.GetString(7)));
                }

                if (!dr.IsDBNull(8))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTipoRappresentazioneSpaziale, dr.GetString(8)));
                }

                if (!dr.IsDBNull(9))
                {
                    strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLingua, dr.GetString(9)));
                }

                strato.Identificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIdentificatoreUnico, id.ToString()));
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Classificazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelArgomenti, dr.GetString(0)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.ParoleChiave.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelParoleChiave, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.ParoleChiave.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelThesaurus, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.ParoleChiave.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTipoData, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.ParoleChiave.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelData, dr.GetString(3)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLatitudineNord, dr.GetDecimal(0).ToString()));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLatitudineSud, dr.GetDecimal(1).ToString()));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLongitudineEst, dr.GetDecimal(2).ToString()));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLongitudineOvest, dr.GetDecimal(3).ToString()));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelNazioni, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelRegioni, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelProvince, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Localizzazione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelComuni, dr.GetString(3)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.RiferimentoTemporale.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelEstensioneTemporale, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.RiferimentoTemporale.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDataPubblicazione, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.RiferimentoTemporale.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDataRevisione, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.RiferimentoTemporale.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDataCreazione, dr.GetString(3)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Qualita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelGenealogiaProcessoProduzione, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Qualita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelScala, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Qualita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDistanzaX, dr.GetDecimal(2).ToString()));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Qualita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDistanzaY, dr.GetDecimal(3).ToString()));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.SistemaRiferimento.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelSistemaRiferimento, dr.GetString(0)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Conformita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTitoloSpecifiche, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Conformita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelData, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Conformita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelTipoData, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Conformita.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelConformitaSpecifica, dr.GetString(3)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Vincoli.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelCondizioniApplicabili, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Vincoli.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelVincoliAccesso, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Vincoli.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelVincoliFruibilita, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Vincoli.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelAltriVincoli, dr.GetString(3)));
                }

                if (!dr.IsDBNull(4))
                {
                    strato.Vincoli.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelVincoliSicurezza, dr.GetString(4)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Responsabili.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelEnte, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Responsabili.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoEmail, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Responsabili.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelNumeroTelefono, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Responsabili.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoWeb, dr.GetString(3)));
                }

                if (!dr.IsDBNull(4))
                {
                    strato.Responsabili.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelRuolo, dr.GetString(4)));
                }
            }


            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelFormatoDati, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelVersioneFormato, dr.GetString(1)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelEnte, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoEmail, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelNumeroTelefono, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoWeb, dr.GetString(3)));
                }

                if (!dr.IsDBNull(4))
                {
                    strato.Distribuzione.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelRuolo, dr.GetString(4)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelEnte, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoEmail, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelNumeroTelefono, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIndirizzoWeb, dr.GetString(3)));
                }

                if (!dr.IsDBNull(4))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelRuolo, dr.GetString(4)));
                }
            }

            dr.NextResult();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelDataMetadati, dr.GetString(0)));
                }

                if (!dr.IsDBNull(1))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelLinguaMetadati, dr.GetString(1)));
                }

                if (!dr.IsDBNull(2))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIdentificatoreUnicoMetadati, dr.GetString(2)));
                }

                if (!dr.IsDBNull(3))
                {
                    strato.Metadati.Add(new Tuple <string, string>(DizionarioService.METADATO_LabelIdentificatoreUnicoMetadatiSuperiore, dr.GetString(3)));
                }
            }

            while (dr2.Read())
            {
                StratoMetadatiLink sml = new StratoMetadatiLink();

                sml.Denominazione = dr2.GetString(3);
                sml.LinkTesto     = dr2.GetString(1);
                sml.LinkTooltip   = dr2.GetString(4);
                sml.LinkUrl       = dr2.GetString(2);
                sml.LinkTarget    = "_blank";

                strato.Links.Add(sml);
            }

            if (dr != null)
            {
                dr.Close();
                dr.Dispose();
            }

            if (dr2 != null)
            {
                dr2.Close();
                dr2.Dispose();
            }

            return(strato);
        }
        public ActionResult MetadatoStrato(Guid id)
        {
            ActionResult result = null;
            DatiEStrumentiMetadatoStratoModel model = new DatiEStrumentiMetadatoStratoModel();

            model.VoceMenu = VoceMenuRepository.Instance.RecuperaVoceMenu("MetadatoStrato");

            Strato strato = StratoRepository.Instance.RecuperaStrato(id);

            if (strato != null && model.VoceMenu != null)
            {
                model.Strato = strato;

                //List<WidgetCorrelato> widget = new List<WidgetCorrelato>();
                //widget = WidgetCorrelatoRepository.Instance.RecuperaWidgetCorrelati(model.VoceMenu.ID);

                if (strato.Identificazione.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Identificazione", DizionarioService.METADATO_SezioneIdentificazione));
                }

                if (strato.Classificazione.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Classificazione", DizionarioService.METADATO_SezioneClassificazione));
                }

                if (strato.ParoleChiave.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("ParoleChiave", DizionarioService.METADATO_SezioneParoleChiave));
                }

                if (strato.Localizzazione.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Localizzazione", DizionarioService.METADATO_SezioneLocalizzazione));
                }

                if (strato.RiferimentoTemporale.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("RiferimentoTemporale", DizionarioService.METADATO_SezioneRiferimentoTemporale));
                }

                if (strato.Qualita.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Qualita", DizionarioService.METADATO_SezioneQualita));
                }

                if (strato.SistemaRiferimento.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("SistemaRiferimento", DizionarioService.METADATO_SezioneSistemaRiferimento));
                }

                if (strato.Conformita.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Conformita", DizionarioService.METADATO_SezioneConformita));
                }

                if (strato.Vincoli.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Vincoli", DizionarioService.METADATO_SezioneVincoli));
                }

                if (strato.Responsabili.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Responsabili", DizionarioService.METADATO_SezioneResponsabili));
                }

                if (strato.Distribuzione.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Distribuzione", DizionarioService.METADATO_SezioneDistribusione));
                }

                if (strato.Metadati.Count > 0)
                {
                    model.Tabs.Add(new Tuple <string, string>("Metadati", DizionarioService.METADATO_SezioneMetadati));
                }


                //model.Widget = widget;
                result = View(model);
            }
            else
            {
                result = HttpNotFound();
            }

            return(result);
        }