Files
bini-google-tv/flutter_app/lib/services/schedule_service.dart
2026-01-24 19:41:19 +09:00

84 lines
2.5 KiB
Dart

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<List<ScheduleItem>> fetchSchedules() async {
if (ApiConfig.useMockData) {
return List<ScheduleItem>.from(MockDataStore.schedules);
}
final data = await _client.getList(ApiConfig.schedules);
return data
.map((item) => ScheduleItem.fromJson(item as Map<String, dynamic>))
.toList();
}
Future<List<ScheduleItem>> fetchWeeklySchedules() async {
if (ApiConfig.useMockData) {
return List<ScheduleItem>.from(MockDataStore.schedules);
}
final data = await _client.getList("${ApiConfig.schedules}/week");
return data
.map((item) => ScheduleItem.fromJson(item as Map<String, dynamic>))
.toList();
}
Future<List<ScheduleItem>> fetchMonthlySchedules() async {
if (ApiConfig.useMockData) {
return List<ScheduleItem>.from(MockDataStore.schedules);
}
final data = await _client.getList("${ApiConfig.schedules}/month");
return data
.map((item) => ScheduleItem.fromJson(item as Map<String, dynamic>))
.toList();
}
Future<ScheduleItem> 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<ScheduleItem> 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<void> deleteSchedule(String id) async {
if (ApiConfig.useMockData) {
MockDataStore.schedules.removeWhere((item) => item.id == id);
return;
}
await _client.delete("${ApiConfig.schedules}/$id");
}
}