Initial commit
This commit is contained in:
71
flutter_app/lib/services/announcement_service.dart
Normal file
71
flutter_app/lib/services/announcement_service.dart
Normal file
@@ -0,0 +1,71 @@
|
||||
import "../config/api_config.dart";
|
||||
import "../models/announcement.dart";
|
||||
import "api_client.dart";
|
||||
import "mock_data.dart";
|
||||
|
||||
class AnnouncementService {
|
||||
final ApiClient _client;
|
||||
|
||||
AnnouncementService(this._client);
|
||||
|
||||
Future<List<Announcement>> fetchAnnouncements({
|
||||
bool activeOnly = false,
|
||||
}) async {
|
||||
if (ApiConfig.useMockData) {
|
||||
final items = List<Announcement>.from(MockDataStore.announcements);
|
||||
if (activeOnly) {
|
||||
return items.where((item) => item.active).toList();
|
||||
}
|
||||
return items;
|
||||
}
|
||||
final query = activeOnly ? {"active": "true"} : null;
|
||||
final data = await _client.getList(ApiConfig.announcements, query: query);
|
||||
return data
|
||||
.map((item) => Announcement.fromJson(item as Map<String, dynamic>))
|
||||
.toList();
|
||||
}
|
||||
|
||||
Future<Announcement> createAnnouncement(Announcement announcement) async {
|
||||
if (ApiConfig.useMockData) {
|
||||
final created = Announcement(
|
||||
id: "announcement-${DateTime.now().millisecondsSinceEpoch}",
|
||||
title: announcement.title,
|
||||
content: announcement.content,
|
||||
priority: announcement.priority,
|
||||
active: announcement.active,
|
||||
);
|
||||
MockDataStore.announcements.add(created);
|
||||
return created;
|
||||
}
|
||||
final data = await _client.post(
|
||||
ApiConfig.announcements,
|
||||
announcement.toJson(),
|
||||
);
|
||||
return Announcement.fromJson(data);
|
||||
}
|
||||
|
||||
Future<Announcement> updateAnnouncement(Announcement announcement) async {
|
||||
if (ApiConfig.useMockData) {
|
||||
final index = MockDataStore.announcements.indexWhere(
|
||||
(item) => item.id == announcement.id,
|
||||
);
|
||||
if (index != -1) {
|
||||
MockDataStore.announcements[index] = announcement;
|
||||
}
|
||||
return announcement;
|
||||
}
|
||||
final data = await _client.put(
|
||||
"${ApiConfig.announcements}/${announcement.id}",
|
||||
announcement.toJson(),
|
||||
);
|
||||
return Announcement.fromJson(data);
|
||||
}
|
||||
|
||||
Future<void> deleteAnnouncement(String id) async {
|
||||
if (ApiConfig.useMockData) {
|
||||
MockDataStore.announcements.removeWhere((item) => item.id == id);
|
||||
return;
|
||||
}
|
||||
await _client.delete("${ApiConfig.announcements}/$id");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user