import 'localized_content.dart';
class Poi {
const Poi({
required this.id,
required this.title,
required this.shortDescription,
required this.guideText,
required this.latitude,
required this.longitude,
required this.category,
this.address,
this.imageUrl,
this.imageCaption,
this.galleryUrls = const [],
this.audioUrls = const {},
this.affiliateTicketUrl,
this.affiliateProvider,
this.ticketButtonLabel,
this.openingHours,
this.websiteUrl,
this.highlight = false,
this.familyFriendly = false,
this.wheelchairAccessible = false,
this.freeAccess = false,
this.topicSlugs = const [],
this.topicNames = const [],
this.eraSlugs = const [],
this.eraNames = const [],
});
final String id;
final LocalizedContent title;
final LocalizedContent shortDescription;
final LocalizedContent guideText;
final double latitude;
final double longitude;
final String category;
final String? address;
/// Featured Image from WordPress.
final String? imageUrl;
/// Caption of the WordPress Featured Image. Shown only on full POI views.
final String? imageCaption;
/// Additional ACF gallery images. The Featured Image is intentionally not
/// duplicated here.
final List<String> galleryUrls;
final Map<String, String> audioUrls;
final String? affiliateTicketUrl;
final String? affiliateProvider;
final String? ticketButtonLabel;
final String? openingHours;
final String? websiteUrl;
final bool highlight;
final bool familyFriendly;
final bool wheelchairAccessible;
final bool freeAccess;
final List<String> topicSlugs;
final List<String> topicNames;
final List<String> eraSlugs;
final List<String> eraNames;
bool get hasAffiliateTicket => affiliateTicketUrl?.trim().isNotEmpty == true;
bool get hasGallery => galleryUrls.isNotEmpty;
}

