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';
}
}
}