コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public ActionResult ViewSearchResults(EventListView eventListView)
 {
     return View(eventListView);
 }