parseRecentHistory static method

Map<String, dynamic> parseRecentHistory(
  1. List results
)

Implementation

static Map<String, dynamic> parseRecentHistory(List results) {
  List<String> monthNames = [
    '',
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December'
  ];
  DateTime now = DateTime.now();
  DateTime today = DateTime(now.year, now.month, now.day);
  DateTime yesterday = today.subtract(Duration(days: 1));
  DateTime previous7Days = today.subtract(Duration(days: 7));
  DateTime lastMonth = DateTime(now.year, now.month - 1, now.day);

  Map<String, List<Map<String, dynamic>>> groupedMessages = {};

  for (int i = 0; i < results.length; i++) {
    var message = results[i]['messages'];
    var messageDate = DateTime(now.year, now.month - 2, now.day);
    if (message.length > 0) {
      for (int j = message.length - 1; j >= 0; j--) {
        if (message[j].containsKey('inserted_at')) {
          messageDate = DateTime.parse(message[j]['inserted_at']).toLocal();
          break;
        }
      }
      if (messageDate.year == today.year &&
          messageDate.month == today.month &&
          messageDate.day == today.day) {
        if (groupedMessages.containsKey('Today')) {
          groupedMessages['Today']!.add(results[i]);
        } else {
          groupedMessages['Today'] = [results[i]];
        }
      } else if (messageDate.year == yesterday.year &&
          messageDate.month == yesterday.month &&
          messageDate.day == yesterday.day) {
        if (groupedMessages.containsKey('Yesterday')) {
          groupedMessages['Yesterday']!.add(results[i]);
        } else {
          groupedMessages['Yesterday'] = [results[i]];
        }
      } else if (messageDate.isAfter(previous7Days)) {
        if (groupedMessages.containsKey('Last Week')) {
          groupedMessages['Last Week']!.add(results[i]);
        } else {
          groupedMessages['Last Week'] = [results[i]];
        }
      } else if (messageDate.year == today.year) {
        if (messageDate.month == lastMonth.month) {
          if (groupedMessages.containsKey('LastMonth')) {
            groupedMessages['Last Month']!.add(results[i]);
          } else {
            groupedMessages['Last Month'] = [results[i]];
          }
        } else {
          var month_ = monthNames[messageDate.month];
          if (groupedMessages.containsKey(month_)) {
            groupedMessages[month_]!.add(results[i]);
          } else {
            groupedMessages[month_] = [results[i]];
          }
        }
      } else {
        if (groupedMessages.containsKey(messageDate.year.toString())) {
          groupedMessages[messageDate.year.toString()]!.add(results[i]);
        } else {
          groupedMessages[messageDate.year.toString()] = [results[i]];
        }
      }
    }
  }

  return groupedMessages;
}