Files
rog_app/lib/pages/team/team_controller.dart

117 lines
2.8 KiB
Dart

// 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 = <Team>[].obs;
final categories = <NewCategory>[].obs;
final teamMembers = <User>[].obs;
final selectedCategory = Rx<NewCategory?>(null);
final currentUser = Rx<User?>(null);
final isLoading = true.obs;
final error = RxString('');
@override
void onInit() async{
super.onInit();
try {
//await Get.putAsync(() => ApiService().init());
_apiService = Get.find<ApiService>();
await Future.wait([
fetchTeams(),
fetchCategories(),
getCurrentUser(),
]);
}catch(e){
print("Team Controller error: $e");
}finally{
isLoading.value = false;
}
}
Future<void> fetchTeams() async {
try {
final fetchedTeams = await _apiService.getTeams();
teams.assignAll(fetchedTeams);
} catch (e) {
print('Error fetching teams: $e');
}
}
Future<void> fetchCategories() async {
try {
final fetchedCategories = await _apiService.getCategories();
categories.assignAll(fetchedCategories);
} catch (e) {
print('Error fetching categories: $e');
}
}
Future<void> getCurrentUser() async {
try {
final user = await _apiService.getCurrentUser();
currentUser.value = user;
} catch (e) {
print('Error getting current user: $e');
}
}
Future<void> 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<void> 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<void> deleteTeam(int teamId) async {
try {
await _apiService.deleteTeam(teamId);
teams.removeWhere((team) => team.id == teamId);
} catch (e) {
print('Error deleting team: $e');
}
}
Future<void> 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;
}
}