Initial commit: Penyerahan final Source code Tugas Akhir

This commit is contained in:
ferdiakhh
2025-07-10 19:15:14 +07:00
commit e1f2206b8a
687 changed files with 80132 additions and 0 deletions

View File

@ -0,0 +1,229 @@
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<QnaModel> 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<bool> 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<bool> 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<bool> 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<bool> 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<bool> 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<bool> 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<CounterCommentModel> 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<bool> 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<CounterLikeModel> 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');
}
}
}