private IQueryable<Viaggio> AddTappaSearchFilter(IQueryable<Viaggio> viaggiToBeFiltered, GeoLocation locationFilter, TipoSearch tipoSearch, TipoTappa tipoTappa) { try { IQueryable<Viaggio> viaggiFiltered = null; if (tipoSearch == null) tipoSearch = TipoSearch.Città; switch (tipoSearch) { case TipoSearch.Città: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.City.Equals(locationFilter.City))); break; case TipoSearch.Provincia: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Province.Equals(locationFilter.Province))); break; case TipoSearch.Regione: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Region.Equals(locationFilter.Region))); break; case TipoSearch.Nazione: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Nation.Equals(locationFilter.Nation))); break; default: throw new Exception("TipoSearch sconosciuto: " + Enum.GetName(typeof(TipoSearch), tipoSearch)); } return viaggiFiltered; } catch (Exception ex) { string msg = String.Format("Errore nell'aggiunta del filtro per tappa/destinazione"); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } }
private IQueryable <Viaggio> AddTappaSearchFilter(IQueryable <Viaggio> viaggiToBeFiltered, GeoLocation locationFilter, TipoSearch tipoSearch, TipoTappa tipoTappa) { try { IQueryable <Viaggio> viaggiFiltered = null; if (tipoSearch == null) { tipoSearch = TipoSearch.Città; } switch (tipoSearch) { case TipoSearch.Città: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.City.Equals(locationFilter.City))); break; case TipoSearch.Provincia: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Province.Equals(locationFilter.Province))); break; case TipoSearch.Regione: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Region.Equals(locationFilter.Region))); break; case TipoSearch.Nazione: viaggiFiltered = viaggiToBeFiltered.Where(v => v.Tappe.Any(t => t.IdTipo == (int)tipoTappa && t.Location.Nation.Equals(locationFilter.Nation))); break; default: throw new Exception("TipoSearch sconosciuto: " + Enum.GetName(typeof(TipoSearch), tipoSearch)); } return(viaggiFiltered); } catch (Exception ex) { string msg = String.Format("Errore nell'aggiunta del filtro per tappa/destinazione"); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } }