toJson method
Generates a map representing the InteractiveMessage
.
Implementation
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> map = super.toJson();
map[ModelFieldConstants.title] = title;
map[ModelFieldConstants.scheduleElement] = scheduleElement?.toMap();
if (goalCompletionText != null) {
map[ModelFieldConstants.goalCompletionText] = goalCompletionText;
}
if (Utils.isValidString(avatarUrl)) {
map[ModelFieldConstants.avatarUrl] = avatarUrl;
}
if (Utils.isValidString(icsFileUrl)) {
map[ModelFieldConstants.icsFileUrl] = icsFileUrl;
}
if (Utils.isValidString(timezoneCode)) {
map[ModelFieldConstants.timezoneCode] = timezoneCode;
}
if (Utils.isValidInteger(bufferTime)) {
map[ModelFieldConstants.bufferTime] = bufferTime;
}
if (Utils.isValidInteger(duration)) {
map[ModelFieldConstants.duration] = duration;
}
if (Utils.isValidString(dateRangeStart)) {
map[ModelFieldConstants.dateRangeStart] = dateRangeStart;
}
if (Utils.isValidString(dateRangeEnd)) {
map[ModelFieldConstants.dateRangeEnd] = dateRangeEnd;
}
Map<String, List<dynamic>> jsonifiedAvailability = {};
availability?.forEach((key, value) {
List<Map<String, String>> timeRanges = [];
for (var timeRange in value) {
timeRanges.add({
SchedulerConstants.from: timeRange.from,
SchedulerConstants.to: timeRange.to
});
}
jsonifiedAvailability[key] = timeRanges;
});
map[ModelFieldConstants.availability] = jsonifiedAvailability;
return map;
}