feat(lab2): do lab2
This commit is contained in:
parent
522af4f865
commit
426b2788e1
92
dart/main.dart
Normal file
92
dart/main.dart
Normal file
@ -0,0 +1,92 @@
|
||||
enum DeadlineStatus {
|
||||
HOT,
|
||||
WARM,
|
||||
COLD,
|
||||
FROZEN
|
||||
}
|
||||
|
||||
extension DateTimeX on DateTime {
|
||||
String getDate(){
|
||||
return '${this.day}-${this.month}-${this.year}';
|
||||
}
|
||||
}
|
||||
|
||||
extension DeadlineStatusX on DeadlineStatus {
|
||||
String get translate{
|
||||
switch(this){
|
||||
case DeadlineStatus.HOT:
|
||||
return 'КАК ТАК ЗАВТРА!?';
|
||||
case DeadlineStatus.WARM:
|
||||
return 'К чему торопиться?';
|
||||
case DeadlineStatus.COLD:
|
||||
return 'Дожить ещё надо ';
|
||||
case DeadlineStatus.FROZEN:
|
||||
return 'До сессии сдадим';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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) async {
|
||||
sort();
|
||||
print('Дедлайны:');
|
||||
await 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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user