// todo_api.dart (新增 Create 功能) import './todo_model.dart'; import '../services/generic_api_service.dart'; import 'package:intl/intl.dart'; class TodoApiService { final GenericApiService _apiService = GenericApiService(); final String currentUserId; TodoApiService({this.currentUserId = 'admin'}); // 原始的查詢功能... /// 獲取指定日期的任務清單 Future> fetchTodos({DateTime? selectedDate}) async { // 預設查詢今天的資料 DateTime dateToQuery = selectedDate ?? DateTime.now(); String formattedDate = DateFormat('yyyy-MM-dd').format(dateToQuery); // 構建 queryFilter:過濾特定的 end_date 並根據 id 排序 // 格式範例: 1^100^id^*^^end_date^2024-05-01 String queryFilter = "1^100^id^*^^end_date^$formattedDate"; return await _apiService.fetchList( tableName: "eip_todolist", pk: "id", queryFilter: queryFilter, fromJson: (json) => Todo.fromJson(json), ); } // 新增:提交任務至資料庫 Future createTodo(Todo todo) async { final Map data = { "todolist_class": todo.className, "task_name": todo.taskName, "task_desc": todo.description, "issue_priority": todo.priority, "pbi_status": todo.status ?? 'WIP', // 預設為進行中 "end_date": todo.endDate != null ? DateFormat('yyyy-MM-dd HH:mm:ss').format(todo.endDate!) : null, "create_user": currentUserId, "create_date": DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()), }; try { // 根據 Generic API 規範,使用 action: "C" 進行新增 await _apiService.fetchList( tableName: "eip_todolist", pk: "id", queryFilter: "", action: "C", data: data, fromJson: (json) => json, ); return true; } catch (e) { print("Create Todo Error: $e"); return false; } } /// 更新任務狀態為已完成 Future updateTodoStatus(int id, String status) async { final Map data = { "id": id, // 必填 PK "pbi_status": status, // 更新狀態為 'DONE' "modify_user": currentUserId, "modify_date": DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()), }; try { // 使用 Action "U" 代表 Update await _apiService.fetchList( tableName: "eip_todolist", pk: "id", queryFilter: "", action: "U", data: data, fromJson: (json) => json, ); return true; } catch (e) { print("Update Todo Status Error: $e"); return false; } } }