public RicercaPersonalizzata() { InitializeComponent(); Parametri = new ParametriRicercaStrutture(); valutazioneMinimaComboBox.SelectedIndex = 0; valutazioneMassimaComboBox.SelectedIndex = valutazioneMassimaComboBox.Items.Count - 1; InitCitta(); Parametri.ValutazioneMediaMinima = int.Parse(valutazioneMinimaComboBox.SelectedItem.ToString()); Parametri.ValutazioneMediaMassima = int.Parse(valutazioneMassimaComboBox.SelectedItem.ToString()); Parametri.Citta = cittaComboBox.Text; }
public static List <Struttura> GetStrutture(ParametriRicercaStrutture parametri) { StringBuilder sottoQueryUno = new StringBuilder("select S.idStruttura, S.indirizzo, S.immagine, S.nome, S.tipo " + $"from Strutture S, Citta C " + $"where S.idCitta = C.idCitta "); if (parametri.Citta != "Tutte le città") { sottoQueryUno.Append($"and C.nome = '{parametri.Citta}' "); } if (parametri.TipoStruttura != "Tutti i tipi") { sottoQueryUno.Append($"and S.tipo = '{parametri.TipoStruttura}' "); } if (parametri.NomeStruttura != "") { sottoQueryUno.Append($"and S.nome like '%{parametri.NomeStruttura.Replace("'", "''")}%'"); } StringBuilder sottoQueryDue = new StringBuilder($"select S.idStruttura, CAST(ISNULL(avg(CAST(TMP.valutazione as DECIMAL(10, 2))), 0) as DECIMAL(10, 2)) as valutazioneMedia " + "from Strutture S left outer join " + "(select * " + "from Recensioni R " + "where R.stato = 'approvato') TMP on S.idStruttura = TMP.idStruttura " + "group by S.idStruttura"); string query = "select * " + $"from ({sottoQueryUno}) TMP1, ({sottoQueryDue}) TMP2 " + $"where TMP1.idStruttura = TMP2.idStruttura and " + $"TMP2.valutazioneMedia >= {parametri.ValutazioneMediaMinima} and TMP2.valutazioneMedia <= {parametri.ValutazioneMediaMassima};"; DataTable table = EseguiComando(query); List <Struttura> strutture = new List <Struttura>(); foreach (DataRow row in table.Rows) { Struttura struttura = new Struttura() { Id = (int)row["idStruttura"], Indirizzo = row["indirizzo"].ToString(), Immagine = ConvertImage(row["immagine"]), Nome = row["nome"].ToString(), ValutazioneMedia = double.Parse(row["valutazioneMedia"].ToString()), Tipo = row["tipo"].ToString() }; strutture.Add(struttura); } return(strutture); }