getUpcomingEvents static method

List<IslamicEvent> getUpcomingEvents({
  1. int monthsAhead = 3,
})

الحصول على المناسبات المقبلة في الأشهر القادمة

Implementation

static List<IslamicEvent> getUpcomingEvents({int monthsAhead = 3}) {
  final now = DateTime.now();
  final currentHijri = HijriDate.fromDate(now);
  final List<IslamicEvent> upcomingEvents = [];

  for (int i = 0; i <= monthsAhead; i++) {
    int targetMonth = ((currentHijri.hMonth - 1 + i) % 12) + 1;

    final monthEvents = getEventsInMonth(targetMonth);
    for (var event in monthEvents) {
      if (event.daysUntilEvent() > 0) {
        upcomingEvents.add(event);
      }
    }
  }

  // ترتيب حسب الأيام المتبقية
  upcomingEvents
      .sort((a, b) => a.daysUntilEvent().compareTo(b.daysUntilEvent()));
  return upcomingEvents;
}