private string GetPhotoUrl(EventbriteEvent @event, IReadOnlyDictionary <string, string> lookup) { return(lookup.TryGetValue(@event.Id, out string photoUrl) ? photoUrl : @event.Logo?.Original?.Url); }
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 } }); }