getUpcomingEventsWithDetails static method

List<Map<String, dynamic>> getUpcomingEventsWithDetails({
  1. int monthsAhead = 6,
})

Gets upcoming events with accurate calculations and details

Implementation

static List<Map<String, dynamic>> getUpcomingEventsWithDetails(
    {int monthsAhead = 6}) {
  final currentDate = HijriDate.now();
  final allEvents = IslamicEventsManager.allEvents;
  final upcomingEvents = <Map<String, dynamic>>[];

  for (final event in allEvents) {
    final daysUntil = calculateDaysUntilEvent(currentDate, event);
    // Only include events that are actually upcoming (positive days)
    if (daysUntil > 0 && daysUntil <= monthsAhead * 30) {
      upcomingEvents.add({
        'event': event,
        'daysUntil': daysUntil,
        'arabicTitle': event.titleArabic,
        'englishTitle': event.titleEnglish,
      });
    }
  }

  // Sort by days until event
  upcomingEvents.sort((a, b) => a['daysUntil'].compareTo(b['daysUntil']));

  return upcomingEvents;
}