283 lines
7.1 KiB
Dart
283 lines
7.1 KiB
Dart
class MyItineraryResponse {
|
|
bool isUnlimitedPass;
|
|
List<MyItinerary> itineraries;
|
|
|
|
MyItineraryResponse({
|
|
required this.isUnlimitedPass,
|
|
required this.itineraries,
|
|
});
|
|
|
|
factory MyItineraryResponse.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return MyItineraryResponse(
|
|
isUnlimitedPass: json['isUnlimitedPass'] ?? false,
|
|
itineraries: (json['itineraries'] as List? ?? [])
|
|
.map((e) => MyItinerary.fromJson(e))
|
|
.toList(),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"isUnlimitedPass": isUnlimitedPass,
|
|
"itineraries": itineraries.map((e) => e.toJson()).toList(),
|
|
};
|
|
}
|
|
}
|
|
|
|
class MyItinerary {
|
|
int id;
|
|
int userXid;
|
|
int cityXid;
|
|
String address;
|
|
double latitude;
|
|
double longitude;
|
|
String tripEnergy;
|
|
bool travelingWithKids;
|
|
List<String> dietaryPreferences;
|
|
Preferences preferences;
|
|
int totalDays;
|
|
String aiModel;
|
|
String promptVersion;
|
|
bool isActive;
|
|
String createdAt;
|
|
String updatedAt;
|
|
City city;
|
|
List<ItineraryDay> days;
|
|
|
|
MyItinerary({
|
|
required this.id,
|
|
required this.userXid,
|
|
required this.cityXid,
|
|
required this.address,
|
|
required this.latitude,
|
|
required this.longitude,
|
|
required this.tripEnergy,
|
|
required this.travelingWithKids,
|
|
required this.dietaryPreferences,
|
|
required this.preferences,
|
|
required this.totalDays,
|
|
required this.aiModel,
|
|
required this.promptVersion,
|
|
required this.isActive,
|
|
required this.createdAt,
|
|
required this.updatedAt,
|
|
required this.city,
|
|
required this.days,
|
|
});
|
|
|
|
factory MyItinerary.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return MyItinerary(
|
|
id: (json['id'] as num?)?.toInt() ?? 0,
|
|
userXid: (json['userXid'] as num?)?.toInt() ?? 0,
|
|
cityXid: (json['cityXid'] as num?)?.toInt() ?? 0,
|
|
address: json['address']?.toString() ?? "",
|
|
latitude: (json['latitude'] as num?)?.toDouble() ?? 0.0,
|
|
longitude: (json['longitude'] as num?)?.toDouble() ?? 0.0,
|
|
tripEnergy: json['tripEnergy']?.toString() ?? "",
|
|
travelingWithKids: json['travelingWithKids'] ?? false,
|
|
dietaryPreferences: (json['dietaryPreferences'] as List? ?? [])
|
|
.map((e) => e.toString())
|
|
.toList(),
|
|
preferences: Preferences.fromJson(json['preferences']),
|
|
totalDays: (json['totalDays'] as num?)?.toInt() ?? 0,
|
|
aiModel: json['aiModel']?.toString() ?? "",
|
|
promptVersion: json['promptVersion']?.toString() ?? "",
|
|
isActive: json['isActive'] ?? false,
|
|
createdAt: json['createdAt']?.toString() ?? "",
|
|
updatedAt: json['updatedAt']?.toString() ?? "",
|
|
city: City.fromJson(json['city']),
|
|
days: (json['days'] as List? ?? [])
|
|
.map((e) => ItineraryDay.fromJson(e))
|
|
.toList(),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"id": id,
|
|
"userXid": userXid,
|
|
"cityXid": cityXid,
|
|
"address": address,
|
|
"latitude": latitude,
|
|
"longitude": longitude,
|
|
"tripEnergy": tripEnergy,
|
|
"travelingWithKids": travelingWithKids,
|
|
"dietaryPreferences": dietaryPreferences,
|
|
"preferences": preferences.toJson(),
|
|
"totalDays": totalDays,
|
|
"aiModel": aiModel,
|
|
"promptVersion": promptVersion,
|
|
"isActive": isActive,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
"city": city.toJson(),
|
|
"days": days.map((e) => e.toJson()).toList(),
|
|
};
|
|
}
|
|
}
|
|
|
|
class City {
|
|
String cityName;
|
|
|
|
City({
|
|
required this.cityName,
|
|
});
|
|
|
|
factory City.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return City(
|
|
cityName: json['cityName']?.toString() ?? "",
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"cityName": cityName,
|
|
};
|
|
}
|
|
}
|
|
|
|
class Preferences {
|
|
int shopping;
|
|
int wildlife;
|
|
int landmarks;
|
|
int scenicViews;
|
|
int artAndMuseums;
|
|
|
|
Preferences({
|
|
required this.shopping,
|
|
required this.wildlife,
|
|
required this.landmarks,
|
|
required this.scenicViews,
|
|
required this.artAndMuseums,
|
|
});
|
|
|
|
factory Preferences.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return Preferences(
|
|
shopping: (json['shopping'] as num?)?.toInt() ?? 0,
|
|
wildlife: (json['wildlife'] as num?)?.toInt() ?? 0,
|
|
landmarks: (json['landmarks'] as num?)?.toInt() ?? 0,
|
|
scenicViews: (json['scenicViews'] as num?)?.toInt() ?? 0,
|
|
artAndMuseums: (json['artAndMuseums'] as num?)?.toInt() ?? 0,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"shopping": shopping,
|
|
"wildlife": wildlife,
|
|
"landmarks": landmarks,
|
|
"scenicViews": scenicViews,
|
|
"artAndMuseums": artAndMuseums,
|
|
};
|
|
}
|
|
}
|
|
|
|
class ItineraryDay {
|
|
int id;
|
|
int itineraryXid;
|
|
String date;
|
|
int dayNumber;
|
|
String title;
|
|
String summary;
|
|
List<DayItem> items;
|
|
|
|
ItineraryDay({
|
|
required this.id,
|
|
required this.itineraryXid,
|
|
required this.date,
|
|
required this.dayNumber,
|
|
required this.title,
|
|
required this.summary,
|
|
required this.items,
|
|
});
|
|
|
|
factory ItineraryDay.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return ItineraryDay(
|
|
id: (json['id'] as num?)?.toInt() ?? 0,
|
|
itineraryXid: (json['itineraryXid'] as num?)?.toInt() ?? 0,
|
|
date: json['date']?.toString() ?? "",
|
|
dayNumber: (json['dayNumber'] as num?)?.toInt() ?? 0,
|
|
title: json['title']?.toString() ?? "",
|
|
summary: json['summary']?.toString() ?? "",
|
|
items: (json['items'] as List? ?? [])
|
|
.map((e) => DayItem.fromJson(e))
|
|
.toList(),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"id": id,
|
|
"itineraryXid": itineraryXid,
|
|
"date": date,
|
|
"dayNumber": dayNumber,
|
|
"title": title,
|
|
"summary": summary,
|
|
"items": items.map((e) => e.toJson()).toList(),
|
|
};
|
|
}
|
|
}
|
|
|
|
class DayItem {
|
|
int id;
|
|
int itineraryDayXid;
|
|
String timeSlot;
|
|
String title;
|
|
String description;
|
|
String locationName;
|
|
String imageUrl;
|
|
double latitude;
|
|
double longitude;
|
|
|
|
DayItem({
|
|
required this.id,
|
|
required this.itineraryDayXid,
|
|
required this.timeSlot,
|
|
required this.title,
|
|
required this.description,
|
|
required this.locationName,
|
|
required this.imageUrl,
|
|
required this.latitude,
|
|
required this.longitude,
|
|
});
|
|
|
|
factory DayItem.fromJson(Map<String, dynamic>? json) {
|
|
json ??= {};
|
|
|
|
return DayItem(
|
|
id: (json['id'] as num?)?.toInt() ?? 0,
|
|
itineraryDayXid: (json['itineraryDayXid'] as num?)?.toInt() ?? 0,
|
|
timeSlot: json['timeSlot']?.toString() ?? "",
|
|
title: json['title']?.toString() ?? "",
|
|
description: json['description']?.toString() ?? "",
|
|
locationName: json['locationName']?.toString() ?? "",
|
|
imageUrl: json['imageUrl']?.toString() ?? "",
|
|
latitude: (json['latitude'] as num?)?.toDouble() ?? 0.0,
|
|
longitude: (json['longitude'] as num?)?.toDouble() ?? 0.0,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
"id": id,
|
|
"itineraryDayXid": itineraryDayXid,
|
|
"timeSlot": timeSlot,
|
|
"title": title,
|
|
"description": description,
|
|
"locationName": locationName,
|
|
"imageUrl": imageUrl,
|
|
"latitude": latitude,
|
|
"longitude": longitude,
|
|
};
|
|
}
|
|
} |