public EventListView GenerateEventListView(int venueId = 0, int cityId = 0) { var eventListView = new EventListView { SelectedVenue = venueId, SelectedCity = cityId }; var concertsList = new List<Concert>(ConcertDbContext.GetConcerts().Where(a => DateTime.Compare(a.ConcertDate, DateTime.Today) >= 0)); // If Concerts have expired, roll dates forward if (concertsList.Count < 2) { if (!new ResetCode().RefreshConcerts(false)) { // If connection fails, prompt user on troubleshoot steps UpdateStatus(string.Format("ERROR connecting to {0} database server. Make sure: 1. The database server name, username and password in the web.config are correct, 2. Auditing is enabled on the Database Server, 3. Firewall rules allow access - including Azure Services, and 4. the Database server name resolves using nslookup.", WingtipTicketApp.Config.PrimaryDatabaseServer)); } } foreach (var concert in concertsList) { if (eventListView.VenuesList.All(a => a.VenueId != concert.VenueId)) { eventListView.VenuesList.Add(VenuesDbContext.GetVenueByVenueId(concert.VenueId)); } eventListView.ConcertsList.Add(concert); concert.Venue = eventListView.VenuesList.FirstOrDefault(a => a.VenueId == concert.VenueId); } return eventListView; }
public async Task<ActionResult> Index() { ActionResult result; var eventListView = new EventListView(); var search = Request["search"]; if (string.IsNullOrEmpty(search)) { result = View(_ticketsRepository.GenerateEventListView()); } else { var searchResult = await WingtipTicketApp.SearchIndexClient.Documents.SearchAsync<ConcertSearchHit>(search, new SearchParameters(), CancellationToken.None); if (searchResult.Results.Any(r => r.Document.FullTitle == search)) { // If search result matches a single event var intConcertId = Convert.ToInt32(searchResult.Results.First(r => r.Document.FullTitle == search).Document.ConcertId); var selectedConcert = _ticketsRepository.ConcertDbContext.GetConcertById(intConcertId); var venuesList = _ticketsRepository.VenuesDbContext.GetVenues(); var selectedConcertVenue = venuesList.Find(v => v.VenueId.Equals(selectedConcert.VenueId)); selectedConcert.Venue = selectedConcertVenue; eventListView.ConcertsList.Add(selectedConcert); eventListView.VenuesList = venuesList; result = View("ViewSearchResults", eventListView); } else { // If search results contains multiple events var suggestions = await WingtipTicketApp.SearchIndexClient.Documents.SuggestAsync(search, "sg", new SuggestParameters { UseFuzzyMatching = true }, CancellationToken.None); var concertsList = new List<Concert>(_ticketsRepository.ConcertDbContext.GetConcerts()); var venuesList = _ticketsRepository.VenuesDbContext.GetVenues(); foreach (var suggestion in suggestions) { var suggestedConcert = concertsList.Find(c => c.ConcertId.Equals(Convert.ToInt32(suggestion.Document["ConcertId"]))); var suggestedConcertVenue = venuesList.Find(v => v.VenueId.Equals(suggestedConcert.VenueId)); suggestedConcert.Venue = suggestedConcertVenue; eventListView.ConcertsList.Add(suggestedConcert); } result = View("ViewSearchResults", eventListView); } } return result; }
public static EventListView FromSearchHits(IEnumerable<ConcertSearchHit> hits) { var city = new City(); var view = new EventListView() { ConcertsList = hits.Select(h => new Concert { ConcertId = int.Parse(h.ConcertId), ConcertName = h.ConcertName, ConcertDate = h.ConcertDate.LocalDateTime, Performer = new Performer { PerformerId = h.PerformerId, ShortName = h.PerformerName }, PerformerId = h.PerformerId, Venue = new Venue { VenueId = h.VenueId, VenueName = h.VenueName, Description = h.PerformerName, VenueCity = new City { CityName = h.VenueCity } }, VenueId = h.VenueId }).ToList(), VenuesList = hits.Select(h => new { h.VenueId, h.VenueName, h.VenueCity, h.VenueState }) .Distinct() .Select(v => new Venue { VenueId = v.VenueId, VenueName = v.VenueName, VenueCity = new City { CityName = v.VenueCity, State = new State { StateName = v.VenueState } } }) .ToList() }; return view; }
public static EventListView FromSearchHits(IEnumerable <ConcertSearchHit> hits) { var city = new City(); var view = new EventListView() { ConcertsList = hits.Select(h => new Concert { ConcertId = int.Parse(h.ConcertId), ConcertName = h.ConcertName, ConcertDate = h.ConcertDate.LocalDateTime, Performer = new Performer { PerformerId = h.PerformerId, ShortName = h.PerformerName }, PerformerId = h.PerformerId, Venue = new Venue { VenueId = h.VenueId, VenueName = h.VenueName, Description = h.PerformerName, VenueCity = new City { CityName = h.VenueCity } }, VenueId = h.VenueId }).ToList(), VenuesList = hits.Select(h => new { h.VenueId, h.VenueName, h.VenueCity, h.VenueState }) .Distinct() .Select(v => new Venue { VenueId = v.VenueId, VenueName = v.VenueName, VenueCity = new City { CityName = v.VenueCity, State = new State { StateName = v.VenueState } } }) .ToList() }; return(view); }
public ActionResult ViewSearchResults(EventListView eventListView) { return View(eventListView); }