// 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(null); final email = ''.obs; final firstname = ''.obs; final lastname = ''.obs; final dateOfBirth = Rx(null); @override void onInit() async{ super.onInit(); await Get.putAsync(() => ApiService().init()); _apiService = Get.find(); 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 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 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 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 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 '招待中'; } }