marco.pms.mobileapp/lib/controller/service_project/service_project_details_screen_controller.dart

54 lines
1.3 KiB
Dart

import 'package:get/get.dart';
import 'package:marco/helpers/services/api_service.dart';
import 'package:marco/model/service_project/service_projects_details_model.dart';
class ServiceProjectDetailsController extends GetxController {
// Selected project id
var projectId = ''.obs;
// Project details
var projectDetail = Rxn<ProjectDetail>();
// Loading state
var isLoading = false.obs;
// Error message
var errorMessage = ''.obs;
/// Set project id and fetch its details
void setProjectId(String id) {
projectId.value = id;
fetchProjectDetail();
}
/// Fetch project detail from API
Future<void> fetchProjectDetail() async {
if (projectId.value.isEmpty) {
errorMessage.value = "Invalid project ID";
return;
}
isLoading.value = true;
errorMessage.value = '';
try {
final result = await ApiService.getServiceProjectDetailApi(projectId.value);
if (result != null && result.data != null) {
projectDetail.value = result.data!;
} else {
errorMessage.value = result?.message ?? "Failed to fetch project details";
}
} catch (e) {
errorMessage.value = "Error: $e";
} finally {
isLoading.value = false;
}
}
/// Refresh project details manually
Future<void> refresh() async {
await fetchProjectDetail();
}
}