import 'package:dio/dio.dart'; import '../models/task.dart'; import 'api_client.dart'; class TasksApi { final Dio _dio; const TasksApi(this._dio); Future> getAll() async { try { final response = await _dio.get('/api/tasks'); final data = response.data as Map; final list = data['tasks'] as List; return list.map((e) => Task.fromJson(e as Map)).toList(); } on DioException catch (e) { throw dioToApp(e); } } Future getOne(int id) async { try { final response = await _dio.get('/api/tasks/$id'); return Task.fromJson(response.data as Map); } on DioException catch (e) { throw dioToApp(e); } } Future create({ required String title, String? description, required TaskStatus status, required TaskPriority priority, DateTime? dueDate, }) async { try { final response = await _dio.post('/api/tasks', data: { 'title': title, 'body': description, 'status': status.value, 'priority': priority.value, 'due_date': dueDate?.toIso8601String(), }); return Task.fromJson(response.data as Map); } on DioException catch (e) { throw dioToApp(e); } } Future update(int id, Map fields) async { try { final response = await _dio.put('/api/tasks/$id', data: fields); return Task.fromJson(response.data as Map); } on DioException catch (e) { throw dioToApp(e); } } Future delete(int id) async { try { await _dio.delete('/api/tasks/$id'); } on DioException catch (e) { throw dioToApp(e); } } }