Team,Member, Entryの登録まで完了

This commit is contained in:
2024-07-29 08:41:28 +09:00
parent 7f8adeea01
commit 9c98d3ed53
10 changed files with 803 additions and 260 deletions

View File

@ -11,6 +11,8 @@ import 'package:rogapp/model/category.dart';
import 'package:rogapp/model/user.dart';
import 'package:rogapp/pages/index/index_controller.dart';
import '../utils/const.dart';
import 'package:intl/intl.dart';
class ApiService extends GetxService{
@ -19,16 +21,18 @@ class ApiService extends GetxService{
String baseUrl = '';
String token = 'your-auth-token';
Future<void> init() async {
Future<ApiService> init() async {
try {
// ここで必要な初期化処理を行う
serverUrl = ConstValues.currentServer();
baseUrl = '$serverUrl/api';
//await Future.delayed(Duration(seconds: 2)); // 仮の遅延(実際の初期化処理に置き換えてください)
print('ApiService initialized successfully');
return this;
} catch(e) {
print('Error in ApiService initialization: $e');
rethrow; // エラーを再スローして、呼び出し元で処理できるようにする
//return this;
}
}
@ -232,7 +236,8 @@ class ApiService extends GetxService{
);
if (response.statusCode == 201) {
return Team.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return Team.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to create team');
}
@ -255,7 +260,9 @@ class ApiService extends GetxService{
);
if (response.statusCode == 200) {
return Team.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return Team.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to update team');
}
@ -295,10 +302,15 @@ class ApiService extends GetxService{
}
}
Future<User> createTeamMember(int teamId, String email, String firstname, String lastname, DateTime? dateOfBirth) async {
Future<User> createTeamMember(int teamId, String? email, String firstname, String lastname, DateTime? dateOfBirth,bool? female) async {
init();
getToken();
String? formattedDateOfBirth;
if (dateOfBirth != null) {
formattedDateOfBirth = DateFormat('yyyy-MM-dd').format(dateOfBirth);
}
final response = await http.post(
Uri.parse('$baseUrl/teams/$teamId/members/'),
headers: {
@ -309,21 +321,28 @@ class ApiService extends GetxService{
'email': email,
'firstname': firstname,
'lastname': lastname,
'date_of_birth': dateOfBirth?.toIso8601String(),
'date_of_birth': formattedDateOfBirth,
'female': female,
}),
);
if (response.statusCode == 201) {
return User.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return User.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to create team member');
}
}
Future<User> updateTeamMember(int teamId,int memberId, String firstname, String lastname, DateTime? dateOfBirth) async {
Future<User> updateTeamMember(int teamId,int? memberId, String firstname, String lastname, DateTime? dateOfBirth,bool? female) async {
init();
getToken();
String? formattedDateOfBirth;
if (dateOfBirth != null) {
formattedDateOfBirth = DateFormat('yyyy-MM-dd').format(dateOfBirth);
}
final response = await http.put(
Uri.parse('$baseUrl/teams/$teamId/members/$memberId/'),
headers: {
@ -333,12 +352,14 @@ class ApiService extends GetxService{
body: json.encode({
'firstname': firstname,
'lastname': lastname,
'date_of_birth': dateOfBirth?.toIso8601String(),
'date_of_birth': formattedDateOfBirth,
'female': female,
}),
);
if (response.statusCode == 200) {
return User.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return User.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to update team member');
}
@ -378,13 +399,14 @@ class ApiService extends GetxService{
getToken();
final response = await http.get(
Uri.parse('$baseUrl/entries/'),
Uri.parse('$baseUrl/entry/'),
headers: {'Authorization': 'Token $token', 'Content-Type': 'application/json; charset=UTF-8',
},
);
if (response.statusCode == 200) {
List<dynamic> entriesJson = json.decode(response.body);
final decodedResponse = utf8.decode(response.bodyBytes);
List<dynamic> entriesJson = json.decode(decodedResponse);
return entriesJson.map((json) => Entry.fromJson(json)).toList();
} else {
throw Exception('Failed to load entries');
@ -416,6 +438,11 @@ class ApiService extends GetxService{
init();
getToken();
String? formattedDate;
if (date != null) {
formattedDate = DateFormat('yyyy-MM-dd').format(date);
}
final response = await http.post(
Uri.parse('$baseUrl/entry/'),
headers: {
@ -426,12 +453,14 @@ class ApiService extends GetxService{
'team': teamId,
'event': eventId,
'category': categoryId,
'date': date.toIso8601String(),
'date': formattedDate,
}),
);
if (response.statusCode == 201) {
return Entry.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return Entry.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to create entry');
}
@ -441,6 +470,11 @@ class ApiService extends GetxService{
init();
getToken();
String? formattedDate;
if (date != null) {
formattedDate = DateFormat('yyyy-MM-dd').format(date);
}
final response = await http.put(
Uri.parse('$baseUrl/entry/$entryId/'),
headers: {
@ -450,12 +484,14 @@ class ApiService extends GetxService{
body: json.encode({
'event': eventId,
'category': categoryId,
'date': date.toIso8601String(),
'date': formattedDate,
}),
);
if (response.statusCode == 200) {
return Entry.fromJson(json.decode(response.body));
final decodedResponse = utf8.decode(response.bodyBytes);
return Entry.fromJson(json.decode(decodedResponse));
} else {
throw Exception('Failed to update entry');
}