From 1cce1aba2c3a6e07b4f50b02ca8bb7cfd943712f Mon Sep 17 00:00:00 2001 From: akhdanre Date: Sat, 17 May 2025 14:54:03 +0700 Subject: [PATCH] feat: quiz listings on the room maker --- lib/data/services/auth_service.dart | 2 + .../binding/room_maker_binding.dart | 3 ++ .../controller/room_maker_controller.dart | 53 +++++++++++-------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/lib/data/services/auth_service.dart b/lib/data/services/auth_service.dart index 260c8f0..c2bfad6 100644 --- a/lib/data/services/auth_service.dart +++ b/lib/data/services/auth_service.dart @@ -1,3 +1,4 @@ + import 'package:dio/dio.dart'; import 'package:get/get.dart'; import 'package:quiz_app/core/endpoint/api_endpoint.dart'; @@ -33,6 +34,7 @@ class AuthService extends GetxService { final response = await _dio.post(APIEndpoint.login, data: data); if (response.statusCode == 200) { + print(response.data); final baseResponse = BaseResponseModel.fromJson( response.data, (json) => LoginResponseModel.fromJson(json), diff --git a/lib/feature/room_maker/binding/room_maker_binding.dart b/lib/feature/room_maker/binding/room_maker_binding.dart index 65463ed..24d6211 100644 --- a/lib/feature/room_maker/binding/room_maker_binding.dart +++ b/lib/feature/room_maker/binding/room_maker_binding.dart @@ -1,5 +1,6 @@ import 'package:get/get.dart'; import 'package:quiz_app/data/controllers/user_controller.dart'; +import 'package:quiz_app/data/services/quiz_service.dart'; import 'package:quiz_app/data/services/session_service.dart'; import 'package:quiz_app/data/services/socket_service.dart'; import 'package:quiz_app/feature/room_maker/controller/room_maker_controller.dart'; @@ -8,11 +9,13 @@ class RoomMakerBinding extends Bindings { @override void dependencies() { Get.lazyPut(() => SessionService()); + Get.lazyPut(() => QuizService()); Get.put(SocketService()); Get.lazyPut(() => RoomMakerController( Get.find(), Get.find(), Get.find(), + Get.find(), )); } } diff --git a/lib/feature/room_maker/controller/room_maker_controller.dart b/lib/feature/room_maker/controller/room_maker_controller.dart index f301fb3..4e0e0cf 100644 --- a/lib/feature/room_maker/controller/room_maker_controller.dart +++ b/lib/feature/room_maker/controller/room_maker_controller.dart @@ -3,8 +3,10 @@ import 'package:get/get.dart'; import 'package:quiz_app/app/routes/app_pages.dart'; import 'package:quiz_app/data/controllers/user_controller.dart'; import 'package:quiz_app/data/dto/waiting_room_dto.dart'; +import 'package:quiz_app/data/models/base/base_model.dart'; import 'package:quiz_app/data/models/quiz/quiz_listing_model.dart'; import 'package:quiz_app/data/models/session/session_request_model.dart'; +import 'package:quiz_app/data/services/quiz_service.dart'; import 'package:quiz_app/data/services/session_service.dart'; import 'package:quiz_app/data/services/socket_service.dart'; @@ -12,11 +14,13 @@ class RoomMakerController extends GetxController { final SessionService _sessionService; final UserController _userController; final SocketService _socketService; + final QuizService _quizService; RoomMakerController( this._sessionService, this._userController, this._socketService, + this._quizService, ); // final roomName = ''.obs; @@ -27,28 +31,20 @@ class RoomMakerController extends GetxController { final TextEditingController nameTC = TextEditingController(); final TextEditingController maxPlayerTC = TextEditingController(); - final availableQuizzes = [ - QuizListingModel( - quizId: '1', - authorId: 'u1', - authorName: 'Admin', - title: 'Sejarah Indonesia', - description: 'Kuis tentang kerajaan dan sejarah nusantara.', - date: '2025-05-01', - totalQuiz: 10, - duration: 600, - ), - QuizListingModel( - quizId: '2', - authorId: 'u2', - authorName: 'Guru IPA', - title: 'Ilmu Pengetahuan Alam', - description: 'Kuis IPA untuk kelas 8.', - date: '2025-04-28', - totalQuiz: 15, - duration: 900, - ), - ].obs; + final availableQuizzes = [].obs; + + @override + void onInit() { + loadQuiz(); + super.onInit(); + } + + loadQuiz() async { + BaseResponseModel>? response = await _quizService.userQuiz(_userController.userData!.id, 1); + if (response != null) { + availableQuizzes.assignAll(response.data!); + } + } void onCreateRoom() async { if (nameTC.text.trim().isEmpty || selectedQuiz.value == null) { @@ -74,8 +70,19 @@ class RoomMakerController extends GetxController { } } - void onQuizSourceChange(bool base) { + void onQuizSourceChange(bool base) async { isOnwQuiz.value = base; + if (base) { + BaseResponseModel>? response = await _quizService.userQuiz(_userController.userData!.id, 1); + if (response != null) { + availableQuizzes.assignAll(response.data!); + } + return; + } + BaseResponseModel>? response = await _quizService.recomendationQuiz(page: 1, amount: 4); + if (response != null) { + availableQuizzes.assignAll(response.data!); + } } void onQuizChoosen(String quizId) {