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> fetchAnnouncements({ bool activeOnly = false, }) async { if (ApiConfig.useMockData) { final items = List.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)) .toList(); } Future 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 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 deleteAnnouncement(String id) async { if (ApiConfig.useMockData) { MockDataStore.announcements.removeWhere((item) => item.id == id); return; } await _client.delete("${ApiConfig.announcements}/$id"); } }