From bd3d7dea2ade693ecf753a93ff038c038adb0084 Mon Sep 17 00:00:00 2001 From: elena Date: Wed, 18 Dec 2024 15:51:14 +0400 Subject: [PATCH] lab 2 done --- main.dart | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 main.dart diff --git a/main.dart b/main.dart new file mode 100644 index 0000000..4c7d003 --- /dev/null +++ b/main.dart @@ -0,0 +1,84 @@ +enum BirthdayStatus { + THISYEAR, + NEAR, + NOWADAY, + NEXTYEAR; + + String get translate { + switch (this) { + case BirthdayStatus.THISYEAR: + return 'Будет в этом году'; + case BirthdayStatus.NEAR: + return 'Скоро день рождение '; + case BirthdayStatus.NOWADAY: + return 'Сегодня день рождение!'; + case BirthdayStatus.NEXTYEAR: + return 'Будет в следующем году'; + } + } +} + +extension DateTimeX on DateTime { + String getDate() { + return '${this.day}-${this.month}-${this.year}'; + } +} + +class Birthday { + final DateTime time; + final String message; + BirthdayStatus status = BirthdayStatus.NOWADAY; + + Birthday(this.time, this.message); + + @override + String toString() { + return 'статус: ${status.translate}\t\tдата: ${time.getDate()}\t\tсообщение: $message '; + } +} + +class Scheduler { + List birthdays; + + Scheduler(this.birthdays); + + void sort() { + birthdays.sort((a, b) => (-1) * (a.time.compareTo(b.time))); + } + + void printSchedule(DateTime today) { + sort(); + print('Дедлайны:'); + Future.delayed(new Duration(milliseconds: 1), () { + print('Сегодня ${today.getDate()}'); + }); + for (Birthday deadline in birthdays) { + Duration diff = deadline.time.difference(today); + int days = diff.inDays; + if (days <= 0) { + deadline.status = BirthdayStatus.NOWADAY; + print('Сегодня день рождение \t\t$deadline'); + } else if (days <= 31) { + deadline.status = BirthdayStatus.NEAR; + print('Осталось $days суток \t\t$deadline'); + } else if (days <= 365) { + deadline.status = BirthdayStatus.THISYEAR; + print('Будет в этом году! \t\t$deadline'); + } else { + deadline.status = BirthdayStatus.NEXTYEAR; + print('До следующего года! \t\t$deadline'); + } + } + } +} + +void main() { + DateTime today = DateTime(2024, 9, 23); + var father = new Birthday(new DateTime(2025, 9, 24), "Иванов И.И."); + var brother = new Birthday(new DateTime(2024, 9, 26), "Васечкин В.В."); + var cousin = new Birthday(new DateTime(2024, 9, 23), "Тарасов Т.Т."); + var friend = new Birthday(new DateTime(2025, 10, 3), "Игнатова И.И."); + List birthdays = [father, brother, cousin, friend]; + var scheduler = new Scheduler(birthdays); + scheduler.printSchedule(today); +}