import "../config/api_config.dart"; import "../models/schedule_item.dart"; import "api_client.dart"; import "mock_data.dart"; class ScheduleService { final ApiClient _client; ScheduleService(this._client); Future> fetchSchedules() async { if (ApiConfig.useMockData) { return List.from(MockDataStore.schedules); } final data = await _client.getList(ApiConfig.schedules); return data .map((item) => ScheduleItem.fromJson(item as Map)) .toList(); } Future> fetchWeeklySchedules() async { if (ApiConfig.useMockData) { return List.from(MockDataStore.schedules); } final data = await _client.getList("${ApiConfig.schedules}/week"); return data .map((item) => ScheduleItem.fromJson(item as Map)) .toList(); } Future> fetchMonthlySchedules() async { if (ApiConfig.useMockData) { return List.from(MockDataStore.schedules); } final data = await _client.getList("${ApiConfig.schedules}/month"); return data .map((item) => ScheduleItem.fromJson(item as Map)) .toList(); } Future createSchedule(ScheduleItem schedule) async { if (ApiConfig.useMockData) { final created = ScheduleItem( id: "schedule-${DateTime.now().millisecondsSinceEpoch}", title: schedule.title, description: schedule.description, startDate: schedule.startDate, endDate: schedule.endDate, familyMemberId: schedule.familyMemberId, isAllDay: schedule.isAllDay, ); MockDataStore.schedules.add(created); return created; } final data = await _client.post(ApiConfig.schedules, schedule.toJson()); return ScheduleItem.fromJson(data); } Future updateSchedule(ScheduleItem schedule) async { if (ApiConfig.useMockData) { final index = MockDataStore.schedules.indexWhere( (item) => item.id == schedule.id, ); if (index != -1) { MockDataStore.schedules[index] = schedule; } return schedule; } final data = await _client.put( "${ApiConfig.schedules}/${schedule.id}", schedule.toJson(), ); return ScheduleItem.fromJson(data); } Future deleteSchedule(String id) async { if (ApiConfig.useMockData) { MockDataStore.schedules.removeWhere((item) => item.id == id); return; } await _client.delete("${ApiConfig.schedules}/$id"); } }