import "../config/api_config.dart"; import "../models/todo_item.dart"; import "api_client.dart"; import "mock_data.dart"; class TodoService { final ApiClient _client; TodoService(this._client); Future> fetchTodos() async { if (ApiConfig.useMockData) { return List.from(MockDataStore.todos); } final data = await _client.getList(ApiConfig.todos); return data .map((item) => TodoItem.fromJson(item as Map)) .toList(); } Future> fetchTodayTodos() async { if (ApiConfig.useMockData) { final today = DateTime.now(); return MockDataStore.todos.where((todo) => todo.dueDate != null).where(( todo, ) { final date = todo.dueDate!; return date.year == today.year && date.month == today.month && date.day == today.day; }).toList(); } final data = await _client.getList("${ApiConfig.todos}/today"); return data .map((item) => TodoItem.fromJson(item as Map)) .toList(); } Future createTodo(TodoItem todo) async { if (ApiConfig.useMockData) { final created = TodoItem( id: "todo-${DateTime.now().millisecondsSinceEpoch}", familyMemberId: todo.familyMemberId, title: todo.title, completed: todo.completed, dueDate: todo.dueDate, ); MockDataStore.todos.add(created); return created; } final data = await _client.post(ApiConfig.todos, todo.toJson()); return TodoItem.fromJson(data); } Future updateTodo(TodoItem todo) async { if (ApiConfig.useMockData) { final index = MockDataStore.todos.indexWhere( (item) => item.id == todo.id, ); if (index != -1) { MockDataStore.todos[index] = todo; } return todo; } final data = await _client.put( "${ApiConfig.todos}/${todo.id}", todo.toJson(), ); return TodoItem.fromJson(data); } Future deleteTodo(String id) async { if (ApiConfig.useMockData) { MockDataStore.todos.removeWhere((item) => item.id == id); return; } await _client.delete("${ApiConfig.todos}/$id"); } }