From 753d3de3c2045e4807a75c238b97d9244217c20c Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 24 Dec 2023 11:44:23 +0300 Subject: [PATCH 1/2] Join MarathonProviderFix --- lib/classes/consts.dart | 12 ++++++++---- lib/ui/marathon/marathon_provider.dart | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 6ce549f..654ee42 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart'; class ApiConsts { //static String baseUrl = "http://10.200.204.20:2801/"; // Local server // static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server - // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT ser343622ver - static String baseUrl = "https://hmgwebservices.com"; // Live server + static String baseUrl = "https://uat.hmgwebservices.com"; // UAT ser343622ver + // static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrlServices = baseUrl + "/Services/"; // server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; @@ -36,7 +36,10 @@ class ApiConsts { static String chatUserImages = chatServerBaseUrl + "empservice/api/employee/"; //Brain Marathon Constants - static String marathonBaseUrl = "https://marathoon.com/service/api/"; + static String marathonBaseUrlLive = "https://marathoon.com/service/api/"; + static String marathonBaseUrlUAT = "https://marathoon.com/uatservice/api/"; + // static String marathonBaseUrl = marathonBaseUrlLive; + static String marathonBaseUrl = marathonBaseUrlUAT; static String marathonBaseUrlServices = "https://marathoon.com/service/"; static String marathonParticipantLoginUrl = marathonBaseUrl + "auth/participantlogin"; static String marathonProjectGetUrl = marathonBaseUrl + "Project/Project_Get"; @@ -49,7 +52,6 @@ class ApiConsts { static String marathonGetMarathonersCount = marathonBaseUrl + "Participant/GetRemainingParticipants"; //DummyCards for the UI - static CardContent dummyQuestion = const CardContent(); static int tabletMinLength = 500; } @@ -67,3 +69,5 @@ class SharedPrefsConsts { static String mohemmWifiPassword = "mohemmWifiPassword"; static String editItemForSale = "editItemForSale"; } + + diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 0b1a783..544aad3 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -373,7 +373,7 @@ class MarathonProvider extends ChangeNotifier { void updateCardData() { if (currentQuestionNumber > 0) { - swiperController.swipeLeft(); + // swiperController.swipeLeft(); } selectedOptionIndex = null; currentQuestionNumber++; From 5723b64234717c11a33581245b216a94b82faa88 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 26 Dec 2023 10:52:26 +0300 Subject: [PATCH 2/2] Join MarathonProviderFix --- assets/json/demo_upcoming_marathon | 5 ++-- lib/app_state/app_state.dart | 2 +- lib/classes/decorations_helper.dart | 1 - lib/models/marathon/marathon_model.dart | 5 ++++ lib/ui/marathon/marathon_provider.dart | 29 +++++++++++++++------- lib/ui/marathon/widgets/question_card.dart | 2 +- 6 files changed, 30 insertions(+), 14 deletions(-) diff --git a/assets/json/demo_upcoming_marathon b/assets/json/demo_upcoming_marathon index 2fdabf0..f08cb22 100644 --- a/assets/json/demo_upcoming_marathon +++ b/assets/json/demo_upcoming_marathon @@ -16,7 +16,7 @@ "projects": { "id": "b1cd3fa3-bb27-422e-a4c1-08dac09254df", "nameEn": "Cloud Solutions", - "nameAr": "333شركة حلول السحابة للاتصالات وتقنية المعلومات", + "nameAr": "شركة حلول السحابة للاتصالات وتقنية المعلومات", "projectCode": "CS" }, "sponsors": [ @@ -42,5 +42,6 @@ "totalQuestions": 10, "cancelReason": null, "marathonBufferTime": 30, - "currentTime": "2022-12-28T08:03:24.3671803Z" + "currentTime": "2022-12-28T08:03:24.3671803Z", + "displayCorrectAnswer": true } diff --git a/lib/app_state/app_state.dart b/lib/app_state/app_state.dart index 2cfc751..1039b20 100644 --- a/lib/app_state/app_state.dart +++ b/lib/app_state/app_state.dart @@ -90,7 +90,7 @@ class AppState { String get getHuaweiPushToken => _huaweiPushToken; - final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.3, mobileType: Platform.isAndroid ? "android" : "ios"); + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.4, mobileType: Platform.isAndroid ? "android" : "ios"); void setPostParamsInitConfig() { isAuthenticated = false; diff --git a/lib/classes/decorations_helper.dart b/lib/classes/decorations_helper.dart index b313673..fd6d4f7 100644 --- a/lib/classes/decorations_helper.dart +++ b/lib/classes/decorations_helper.dart @@ -30,7 +30,6 @@ class MyDecorations { return getContainersDecoration(MyColors.greenColor); case QuestionsOptionStatus.wrong: return getContainersDecoration(MyColors.redColor); - case QuestionsOptionStatus.selected: return getContainersDecoration(MyColors.yellowColorII); case QuestionsOptionStatus.unSelected: diff --git a/lib/models/marathon/marathon_model.dart b/lib/models/marathon/marathon_model.dart index d86ffc7..934b73b 100644 --- a/lib/models/marathon/marathon_model.dart +++ b/lib/models/marathon/marathon_model.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + class MarathonDetailModel { String? id; String? titleEn; @@ -17,6 +19,7 @@ class MarathonDetailModel { List? questions; int? totalQuestions; int? marathonBufferTime; + bool? displayCorrectAnswer; MarathonDetailModel({ id, @@ -37,6 +40,7 @@ class MarathonDetailModel { questions, totalQuestions, marathonBufferTime, + displayCorrectAnswer, }); MarathonDetailModel.fromJson(Map json) { @@ -68,6 +72,7 @@ class MarathonDetailModel { } totalQuestions = json["totalQuestions"]; marathonBufferTime = json["marathonBufferTime"]; + displayCorrectAnswer = json["displayCorrectAnswer"]; } Map toJson() { diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index 544aad3..ed241af 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:developer'; import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -414,13 +415,16 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); } - void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) { + void updateCurrentQuestionOptionStatus({required QuestionsOptionStatus status, required int selectedOptIndex, required int correctOptionIndex}) { for (int i = 0; i < currentQuestion.questionOptions!.length; i++) { currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; } - currentQuestion.questionOptions![index].optionStatus = status; - selectedOptionId = currentQuestion.questionOptions![index].id; - selectedOptionIndex = index; + if (status == QuestionsOptionStatus.wrong) { + currentQuestion.questionOptions![correctOptionIndex].optionStatus = QuestionsOptionStatus.correct; // if person's answer is wrong we have to show him the actual right answer + } + currentQuestion.questionOptions![selectedOptIndex].optionStatus = status; + selectedOptionId = currentQuestion.questionOptions![selectedOptIndex].id; + selectedOptionIndex = selectedOptIndex; notifyListeners(); } @@ -435,22 +439,30 @@ class MarathonProvider extends ChangeNotifier { } void getCorrectAnswerAndUpdateAnswerColor() { + log("correctOptionIndex"); + callCountThreshold = 1; + int correctOptionIndex = -1; + if (demoMarathonDetailModel.displayCorrectAnswer ?? false) { + correctOptionIndex = currentQuestion.questionOptions!.indexWhere((QuestionOptions element) => element.isCorrectOption ?? false); + log("correctOptionIndex: $correctOptionIndex"); + } + if (selectedOptionIndex != null) { scheduleMicrotask(() async { if (AppState().getIsDemoMarathon) { if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); + updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.correct, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex); } else { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.wrong, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex); } } else { await callSubmitOptionApi().then((bool value) async { updateIsUserOutOfGame = !value; if (value) { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); + updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.correct, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex); } else { - updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); + updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.wrong, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex); } }); } @@ -551,7 +563,6 @@ class MarathonProvider extends ChangeNotifier { notifyListeners(); isPrivilegedWithMarathon = checkIfPrivilegedForMarathon(); demoMarathonDetailModel = await DemoMarathonRepo().getDemoMarathonDetails(); - if (isPrivilegedWithMarathon) { marathonDetailModel = await MarathonApiClient().getMarathonDetails(); updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; diff --git a/lib/ui/marathon/widgets/question_card.dart b/lib/ui/marathon/widgets/question_card.dart index 8aa76bd..0965c9d 100644 --- a/lib/ui/marathon/widgets/question_card.dart +++ b/lib/ui/marathon/widgets/question_card.dart @@ -133,7 +133,7 @@ class AnswerContent extends StatelessWidget { if (provider.totalCurrentQuestionTime - provider.currentGapTime <= 0) { null; } else { - provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index); + provider.updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.selected, selectedOptIndex: index, correctOptionIndex: -1); // } }, );