105 lines
2.9 KiB
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 '招待中';
|
|
}
|
|
} |