Initial commit

This commit is contained in:
kihong.kim
2026-01-24 19:41:19 +09:00
commit 807df3d678
90 changed files with 6411 additions and 0 deletions

View 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");
}
}