2024-12-18 15:51:14 +04:00

85 lines
2.5 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 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<Birthday> 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<Birthday> birthdays = [father, brother, cousin, friend];
var scheduler = new Scheduler(birthdays);
scheduler.printSchedule(today);
}