toJson method

  1. @override
Map<String, dynamic> toJson()
override

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;
}