PMU/main.dart
2024-12-17 17:10:35 +04:00

87 lines
2.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<Deadline> 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<Deadline> deadlines = [opp, mdp, macd, sistAn];
var scheduler = new Scheduler(deadlines);
scheduler.printSchedule(today);
}