From 11f634451958cf8c366d80ded5a6f22604797514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=B0?= <Вера@DESKTOP-7L4BKCB> Date: Tue, 17 Dec 2024 17:10:35 +0400 Subject: [PATCH] lab 2 --- main.dart | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 main.dart diff --git a/main.dart b/main.dart new file mode 100644 index 0000000..18f713d --- /dev/null +++ b/main.dart @@ -0,0 +1,86 @@ +enum DeadlineStatus { + HOT, + WARM, + COLD, + FROZEN; + + String get translate { + switch (this) { + case DeadlineStatus.HOT: + return 'КАК ТАК ЗАВТРА!?'; + case DeadlineStatus.WARM: + return 'К чему торопиться?'; + case DeadlineStatus.COLD: + return 'Дожить ещё надо '; + case DeadlineStatus.FROZEN: + return 'До сессии сдадим'; + } + } +} + +extension DateTimeX on DateTime { + String getDate() { + return '${this.day}-${this.month}-${this.year}'; + } +} + +class Deadline { + final DateTime time; + final String message; + DeadlineStatus status = DeadlineStatus.COLD; + + Deadline(this.time, this.message); + + @override + String toString() { + return 'статус: ${status.translate}\t\tдата: ${time.getDate()}\t\tсообщение: $message '; + } +} + +class Scheduler { + List deadlines; + + Scheduler(this.deadlines); + + void sort() { + deadlines.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 (Deadline deadline in deadlines) { + Duration diff = deadline.time.difference(today); + int days = diff.inDays; + if (days <= 0) { + deadline.status = DeadlineStatus.FROZEN; + print('Всё, не успели \t\t$deadline'); + } else if (days == 1) { + deadline.status = DeadlineStatus.HOT; + print('Остались $days сутки\t\t$deadline'); + } else if (days <= 7) { + deadline.status = DeadlineStatus.WARM; + print('Осталось $days суток\t\t$deadline'); + } else { + deadline.status = DeadlineStatus.COLD; + print('Осталось $days суток\t\t$deadline'); + } + } + } +} + +void main() { + DateTime today = DateTime(2024, 9, 23); + var opp = + new Deadline(new DateTime(2024, 9, 24), "право: конспект по лекции 1"); + var mdp = new Deadline(new DateTime(2024, 9, 26), "мобилки: лаб 1-2"); + var macd = new Deadline(new DateTime(2024, 9, 20), "миакд: лаб 4-6"); + var sistAn = + new Deadline(new DateTime(2024, 10, 3), "системный анализ: лаб 1-2"); + List deadlines = [opp, mdp, macd, sistAn]; + var scheduler = new Scheduler(deadlines); + scheduler.printSchedule(today); +}