Insparkspokalen-ui/lib/services/teamUserSyncService.dart
2025-05-29 15:13:23 +02:00

48 lines
1.5 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'backend/teamService.dart';
import 'backend/userService.dart';
class TeamUserSyncService with ChangeNotifier {
static final TeamUserSyncService _instance = TeamUserSyncService._internal();
factory TeamUserSyncService() => _instance;
TeamUserSyncService._internal();
final UserService _userService = UserService();
final TeamService _teamService = TeamService();
Future<bool> handleUserKicked(String email) async {
final teamId = await _userService.getUserTeamByEmail(email);
if (teamId == null) return false;
final userTeamReset = await _userService.userResetTeamByEmail(email);
final teamUpdated = await _teamService.removeUserFromTeam(email, teamId);
notifyListeners();
return userTeamReset && teamUpdated;
}
Future<bool> handleTeamRemoved(int teamId) async {
final team = await _teamService.getTeamById(teamId);
if (team == null || team.userEmails.isEmpty) return false;
for (String email in team.userEmails) {
final userTeamReset = await _userService.userResetTeamByEmail(email);
if (!userTeamReset) return false;
}
final teamRemoved = await _teamService.removeTeam(teamId);
notifyListeners();
return teamRemoved;
}
Future<bool> handleUserJoined(int teamId) async {
final userUpdated = await _userService.addTeamToUser(teamId);
final teamUpdated = await _teamService.addUserToTeam(teamId);
notifyListeners();
return userUpdated && teamUpdated;
}
}