117 lines
2.8 KiB
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;
|
|
}
|
|
} |