// lib/controllers/team_controller.dart import 'package:get/get.dart'; import 'package:rogapp/model/team.dart'; import 'package:rogapp/model/category.dart'; import 'package:rogapp/model/user.dart'; import 'package:rogapp/services/api_service.dart'; class TeamController extends GetxController { late final ApiService _apiService; final teams = [].obs; final categories = [].obs; final teamMembers = [].obs; final selectedCategory = Rx(null); final currentUser = Rx(null); final isLoading = true.obs; final error = RxString(''); @override void onInit() async{ super.onInit(); try { //await Get.putAsync(() => ApiService().init()); _apiService = Get.find(); await Future.wait([ fetchTeams(), fetchCategories(), getCurrentUser(), ]); }catch(e){ print("Team Controller error: $e"); }finally{ isLoading.value = false; } } Future fetchTeams() async { try { final fetchedTeams = await _apiService.getTeams(); teams.assignAll(fetchedTeams); } catch (e) { print('Error fetching teams: $e'); } } Future fetchCategories() async { try { final fetchedCategories = await _apiService.getCategories(); categories.assignAll(fetchedCategories); } catch (e) { print('Error fetching categories: $e'); } } Future getCurrentUser() async { try { final user = await _apiService.getCurrentUser(); currentUser.value = user; } catch (e) { print('Error getting current user: $e'); } } Future createTeam(String teamName, int categoryId) async { try { final newTeam = await _apiService.createTeam(teamName, categoryId); teams.add(newTeam); } catch (e) { print('Error creating team: $e'); } } Future updateTeam(int teamId, String teamName, int categoryId) async { try { final updatedTeam = await _apiService.updateTeam(teamId, teamName, categoryId); final index = teams.indexWhere((team) => team.id == teamId); if (index != -1) { teams[index] = updatedTeam; } } catch (e) { print('Error updating team: $e'); } } Future deleteTeam(int teamId) async { try { await _apiService.deleteTeam(teamId); teams.removeWhere((team) => team.id == teamId); } catch (e) { print('Error deleting team: $e'); } } Future fetchTeamMembers(int teamId) async { try { final members = await _apiService.getTeamMembers(teamId); teamMembers.assignAll(members); } catch (e) { print('Error fetching team members: $e'); } } void updateTeamName(String value) { // Update local state } void updateCategory(NewCategory? value) { selectedCategory.value = value; } }