Initial commit
This commit is contained in:
83
flutter_app/lib/services/schedule_service.dart
Normal file
83
flutter_app/lib/services/schedule_service.dart
Normal file
@@ -0,0 +1,83 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user