88 lines
2.2 KiB
Dart
88 lines
2.2 KiB
Dart
import '../core/utils/safe_convert.dart';
|
|
|
|
class AnnouncementItem {
|
|
final int id;
|
|
final String title;
|
|
final String name;
|
|
final String date;
|
|
final String datePublished;
|
|
final String? expiryDate;
|
|
final String summary;
|
|
final String content;
|
|
final String type;
|
|
final String priority;
|
|
final String? author;
|
|
final bool hasAttachment;
|
|
final String? circularFilename;
|
|
|
|
const AnnouncementItem({
|
|
required this.id,
|
|
required this.title,
|
|
required this.name,
|
|
required this.date,
|
|
required this.datePublished,
|
|
this.expiryDate,
|
|
required this.summary,
|
|
required this.content,
|
|
required this.type,
|
|
required this.priority,
|
|
this.author,
|
|
required this.hasAttachment,
|
|
this.circularFilename,
|
|
});
|
|
|
|
factory AnnouncementItem.fromJson(Map<String, dynamic> json) {
|
|
final title = SafeConvert.toSafeString(
|
|
json['title'],
|
|
SafeConvert.toSafeString(json['name'], 'Announcement'),
|
|
);
|
|
final datePublished = SafeConvert.toSafeString(
|
|
json['date_published'],
|
|
SafeConvert.toSafeString(json['date']),
|
|
);
|
|
|
|
return AnnouncementItem(
|
|
id: SafeConvert.toSafeInt(json['id']),
|
|
title: title,
|
|
name: title,
|
|
date: datePublished,
|
|
datePublished: datePublished,
|
|
expiryDate: SafeConvert.toNullableString(json['expiry_date']),
|
|
summary: SafeConvert.toSafeString(json['summary']),
|
|
content: SafeConvert.toSafeString(json['content']),
|
|
type: SafeConvert.toSafeString(json['type'], 'notice'),
|
|
priority: SafeConvert.toSafeString(json['priority'], '0'),
|
|
author: SafeConvert.toNullableString(json['author']),
|
|
hasAttachment: json['has_attachment'] == true,
|
|
circularFilename: SafeConvert.toNullableString(json['circular_filename']),
|
|
);
|
|
}
|
|
|
|
bool get isUrgent => priority == '2';
|
|
bool get isImportant => priority == '1';
|
|
|
|
String get priorityLabel {
|
|
switch (priority) {
|
|
case '2':
|
|
return 'Urgent';
|
|
case '1':
|
|
return 'Important';
|
|
case '0':
|
|
default:
|
|
return 'Normal';
|
|
}
|
|
}
|
|
|
|
String get typeLabel {
|
|
switch (type) {
|
|
case 'circular':
|
|
return 'Circular';
|
|
case 'event':
|
|
return 'Event';
|
|
case 'notice':
|
|
default:
|
|
return 'Notice';
|
|
}
|
|
}
|
|
}
|