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

105 lines
2.9 KiB
Dart

// lib/controllers/member_controller.dart
import 'package:get/get.dart';
import 'package:rogapp/model/user.dart';
import 'package:rogapp/services/api_service.dart';
class MemberController extends GetxController {
late final ApiService _apiService;
final int teamId = 0;
final member = Rx<User?>(null);
final email = ''.obs;
final firstname = ''.obs;
final lastname = ''.obs;
final dateOfBirth = Rx<DateTime?>(null);
@override
void onInit() async{
super.onInit();
await Get.putAsync(() => ApiService().init());
_apiService = Get.find<ApiService>();
if (Get.arguments != null && Get.arguments['member'] != null) {
member.value = Get.arguments['member'];
_initializeMemberData();
}
}
void _initializeMemberData() {
if (member.value != null) {
email.value = member.value!.email ?? '';
firstname.value = member.value!.firstname ?? '';
lastname.value = member.value!.lastname ?? '';
dateOfBirth.value = member.value!.dateOfBirth;
}
}
Future<void> createMember(int teamId) async {
try {
final newMember = await _apiService.createTeamMember(
teamId,
email.value,
firstname.value,
lastname.value,
dateOfBirth.value,
);
member.value = newMember;
} catch (e) {
print('Error creating member: $e');
}
}
Future<void> updateMember() async {
if (member.value == null) return;
int? memberId = member.value?.id;
try {
final updatedMember = await _apiService.updateTeamMember(
teamId,
memberId!,
firstname.value,
lastname.value,
dateOfBirth.value,
);
member.value = updatedMember;
} catch (e) {
print('Error updating member: $e');
}
}
Future<void> deleteMember() async {
if (member.value == null) return;
int? memberId = member.value?.id;
try {
await _apiService.deleteTeamMember(teamId,memberId!);
member.value = null;
Get.back();
} catch (e) {
print('Error deleting member: $e');
}
}
Future<void> resendInvitation() async {
if (member.value == null || member.value!.email == null) return;
int? memberId = member.value?.id;
try {
await _apiService.resendMemberInvitation(memberId!);
Get.snackbar('Success', 'Invitation resent successfully');
} catch (e) {
print('Error resending invitation: $e');
Get.snackbar('Error', 'Failed to resend invitation');
}
}
void updateEmail(String value) => email.value = value;
void updateFirstname(String value) => firstname.value = value;
void updateLastname(String value) => lastname.value = value;
void updateDateOfBirth(DateTime value) => dateOfBirth.value = value;
String getMemberStatus() {
if (member.value == null) return '';
if (member.value!.email == null) return '未登録';
if (member.value!.isActive) return '承認済';
return '招待中';
}
}