Files
CityCards_Customer_Flutter/lib/itinerary_creation/models/my_itinerary_model.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,
};
}
}