parseRecentHistory static method
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;
}