Ejemplo n.º 1
0
 private string GetPhotoUrl(EventbriteEvent @event, IReadOnlyDictionary <string, string> lookup)
 {
     return(lookup.TryGetValue(@event.Id, out string photoUrl) ? photoUrl : @event.Logo?.Original?.Url);
 }
Ejemplo n.º 2
0
        private Event CreateEvent(
            EventbriteEvent @event,
            IReadOnlyDictionary <string, EventbriteVenue> venueLookup,
            IReadOnlyDictionary <string, List <EventbriteTicketClass> > ticketClassLookup,
            IReadOnlyDictionary <string, EventbriteCountry> countriesLookup,
            PhotoLookup photos)
        {
            EventbriteVenue venue;

            if (!venueLookup.TryGetValue(@event.VenueId, out venue))
            {
                throw new InvalidOperationException(
                          $"Couldn't find Venue {@event.VenueId} for Event {@event.Id}");
            }

            EventbriteCountry country;

            if (!countriesLookup.TryGetValue(venue.Address.CountryCode, out country))
            {
                throw new InvalidOperationException(
                          $"Couldn't find Country {venue.Address.CountryCode} for Venue {venue.Name}");
            }

            List <EventbriteTicketClass> ticketClasses;

            if (!ticketClassLookup.TryGetValue(@event.Id, out ticketClasses))
            {
                ticketClasses = new List <EventbriteTicketClass>();
            }

            var minTicketPrice = ticketClasses.Where(tc => tc.IsFree != true)
                                 .OrderBy(tc => tc.ActualCost?.Value ?? int.MaxValue)
                                 .Select(tc => tc.ActualCost?.Display)
                                 .FirstOrDefault();
            var imageUrl       = GetPhotoUrl(@event, photos.Large);
            var squareImageUrl = GetPhotoUrl(@event, photos.Small);

            return(new Event
            {
                Id = @event.Id,
                Name = @event.Name.Text,
                Status = @event.Status,
                DescriptionText = @event.Description.Text,
                DescriptionHtml = @event.Description.Html,
                CreatedDate = @event.Created,
                StartDate = ConvertDate(@event.Start),
                EndDate = ConvertDate(@event.End),
                VanityUrl = @event.VanityUrl,
                ImageUrl = imageUrl,
                SquareImageUrl = squareImageUrl,
                MinTicketPrice = minTicketPrice,
                Venue = new Venue
                {
                    Name = venue.Name,
                    AddressLine1 = venue.Address.Address1,
                    AddressLine2 = venue.Address.Address2,
                    City = venue.Address.City,
                    PostalCode = venue.Address.PostalCode,
                    Country = country.Label,
                    Latitude = venue.Address.Latitude,
                    Longitude = venue.Address.Longitude
                }
            });
        }