// 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 selectedMember = Rx(null); final int teamId = 0; final member = Rx(null); final email = ''.obs; final firstname = ''.obs; final lastname = ''.obs; final dateOfBirth = Rx(null); final isLoading = true.obs; // isLoadingプロパティを追加 @override void onInit() async{ super.onInit(); await Get.putAsync(() => ApiService().init()); _apiService = Get.find(); await loadInitialData(); 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 loadInitialData() async { try { isLoading.value = true; // 必要な初期データの取得をここで行う // 例: await fetchTeamMembers(); } catch (e) { print('Error loading initial data: $e'); } finally { isLoading.value = false; } } void setSelectedMember(User member) { selectedMember.value = member; firstname.value = member.firstname; lastname.value = member.lastname; } void updateFirstName(String value) { firstname.value = value; } void updateLastName(String value) { lastname.value = value; } Future saveMember() async { try { isLoading.value = true; // メンバー保存のロジックをここに実装 // 例: await _apiService.updateMember(selectedMember.value!.id, firstName.value, lastName.value); } catch (e) { print('Error saving member: $e'); // エラーハンドリング(例:ユーザーへの通知) } finally { isLoading.value = false; } } 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 '招待中'; } }