import 'package:get/get.dart'; import 'package:marco/helpers/services/app_logger.dart'; import 'package:marco/helpers/services/api_service.dart'; import 'package:marco/model/attendance/organization_per_project_list_model.dart'; class OrganizationController extends GetxController { /// List of organizations assigned to the selected project List organizations = []; /// Currently selected organization (reactive) Rxn selectedOrganization = Rxn(); /// Loading state for fetching organizations final isLoadingOrganizations = false.obs; /// Fetch organizations assigned to a given project Future fetchOrganizations(String projectId) async { try { isLoadingOrganizations.value = true; final response = await ApiService.getAssignedOrganizations(projectId); if (response != null && response.data.isNotEmpty) { organizations = response.data; logSafe("Organizations fetched: ${organizations.length}"); } else { organizations = []; logSafe("No organizations found for project $projectId", level: LogLevel.warning); } } catch (e, stackTrace) { logSafe("Failed to fetch organizations: $e", level: LogLevel.error, error: e, stackTrace: stackTrace); organizations = []; } finally { isLoadingOrganizations.value = false; } } /// Select an organization void selectOrganization(Organization? org) { selectedOrganization.value = org; } /// Clear the selection (set to "All Organizations") void clearSelection() { selectedOrganization.value = null; } /// Current selection name for UI String get currentSelection => selectedOrganization.value?.name ?? "All Organizations"; }