import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:initial_folder/base_service.dart'; import 'package:initial_folder/helper/user_info.dart'; import 'package:initial_folder/models/counter_qna_comment_model.dart'; import 'package:initial_folder/models/counter_qna_like_model.dart'; import 'package:initial_folder/models/qna_model.dart'; class QnaService { //get QNA user Future getMyQna(String idCourse) async { String? token = await UsersInfo().getToken(); var headers = { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }; Uri url = Uri.parse('$baseUrl/users/qna/$idCourse'); http.Response response = await http.get(url, headers: headerWithToken(token!)); // print(response.body); if (response.statusCode == 200) { return QnaModel.fromJson(jsonDecode(response.body)); } else if (response.statusCode == 404) { return QnaModel(status: 404, error: true, data: [[]]); } else { throw Exception('Data QNA, Gagal Diambil'); } } // Post QNA User Future postingQna( String title, String quest, String idCourse, String idLesson, ) async { int? idUser = await UsersInfo().getIdUser(); String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna'); var body = jsonEncode({ "sender": idUser.toString(), "title": title, "quest": quest, "id_lesson": idLesson, "id_course": idCourse, }); print(body); http.Response response = await http.post(url, headers: headerWithToken(token!), body: body); print(response.body); if (response.statusCode == 201) { return true; } else { return false; } } // Update QNA User Future updateQna(String idCourse, String quest, int id_qna, String title, String idLesson) async { int? idUser = await UsersInfo().getIdUser(); String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/$id_qna'); var body = jsonEncode({ // "sender": idUser.toString(), "sender": idUser, "quest": quest, "title": title, "id_lesson": idLesson, "id_course": idCourse, }); print("ini Request Body update qna: $body"); http.Response response = await http.put(url, headers: headerWithToken(token!), body: body); print(response.body); if (response.statusCode == 200) { print(response.body); print('berhasil update'); return true; } else { return false; } } //Post Reply QNA User Future postQnaReply(String text_rep, String id_qna) async { int? idUser = await UsersInfo().getIdUser(); String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/reply'); var body = jsonEncode({ // "sender": idUser.toString(), "text_rep": text_rep, "id_qna": id_qna, }); http.Response response = await http.post(url, headers: headerWithToken(token!), body: body); print(response.statusCode); if (response.statusCode == 201) { return true; } else { return false; } } //Edit Reply QNA User Future editQnaReply(int id_rep, String text_rep, String id_qna) async { int? idUser = await UsersInfo().getIdUser(); String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/reply/$id_rep'); var body = jsonEncode({ // "sender": idUser.toString(), "text_rep": text_rep, "id_qna": id_qna, }); http.Response response = await http.put(url, headers: headerWithToken(token!), body: body); print(response.body); if (response.statusCode == 200) { return true; } else { return false; } } // Delete Qna (Pertanyaan User) Future deleteQna( int id_qna, ) async { Uri url = Uri.parse('$baseUrl/users/qna/$id_qna'); String? token = await UsersInfo().getToken(); print(token); http.Response response = await http.delete( url, headers: headerWithToken(token!), ); print(response.body); if (response.statusCode == 200) { return true; } else { return false; } } // Delete Reply Qna User Future deleteReplyQna( int id_rep, ) async { Uri url = Uri.parse('$baseUrl/users/qna/reply/$id_rep'); String? token = await UsersInfo().getToken(); print(token); http.Response response = await http.delete( url, headers: headerWithToken(token!), ); print(response.body); if (response.statusCode == 200) { return true; } else { return false; } } //get counter comment qna Future getCounterComment(String idQna) async { String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/count/$idQna'); http.Response response = await http.get(url, headers: headerWithToken(token!)); print(response.body); if (response.statusCode == 200) { return CounterCommentModel.fromJson(jsonDecode(response.body)); } else { throw Exception('Data Counter Comment QNA, Gagal Diambil'); } } // Like or Unlike Future likeOrLike(int idQna) async { int? idUser = await UsersInfo().getIdUser(); String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/up/$idQna'); // var body = jsonEncode({"user_id": idUser.toString()}); // http.Response response = // await http.post(url, headers: headerWithToken(token!), body: body); http.Response response = await http.post(url, headers: headerWithToken(token!)); print(response.body); if (response.statusCode == 200) { return true; } else if (response.statusCode == 400) { Uri url = Uri.parse('$baseUrl/users/qna/unup/$idQna'); http.Response response = await http.post(url, headers: headerWithToken(token!)); if (response.statusCode == 200) { return true; } else { return false; } } else { return false; } } //get counter comment qna Future getCounterLike(String idQna) async { String? token = await UsersInfo().getToken(); Uri url = Uri.parse('$baseUrl/users/qna/like/$idQna'); http.Response response = await http.get(url, headers: headerWithToken(token!)); print(response.body); if (response.statusCode == 200) { return CounterLikeModel.fromJson(jsonDecode(response.body)); } else { throw Exception('Data Counter Like QNA, Gagal Diambil'); } } }