87 lines
2.6 KiB
Dart
87 lines
2.6 KiB
Dart
// 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<List<Todo>> 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<Todo>(
|
|
tableName: "eip_todolist",
|
|
pk: "id",
|
|
queryFilter: queryFilter,
|
|
fromJson: (json) => Todo.fromJson(json),
|
|
);
|
|
}
|
|
|
|
// 新增:提交任務至資料庫
|
|
Future<bool> createTodo(Todo todo) async {
|
|
final Map<String, dynamic> 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<dynamic>(
|
|
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<bool> updateTodoStatus(int id, String status) async {
|
|
final Map<String, dynamic> 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<dynamic>(
|
|
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;
|
|
}
|
|
}
|
|
} |