|
|
|
@ -23,57 +23,28 @@ class MarathonApiClient {
|
|
|
|
|
Future<String> getMarathonToken() async {
|
|
|
|
|
String employeeUserName = AppState().getUserName ?? "";
|
|
|
|
|
String employeeSession = AppState().postParamsObject?.pSessionId.toString() ?? "";
|
|
|
|
|
|
|
|
|
|
Map<String, String> jsonObject = <String, String>{"userName": employeeUserName, "password": employeeSession};
|
|
|
|
|
|
|
|
|
|
Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonParticipantLoginUrl, jsonObject);
|
|
|
|
|
|
|
|
|
|
var json = jsonDecode(response.body);
|
|
|
|
|
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 200) {
|
|
|
|
|
if (marathonModel.data != null && marathonModel.isSuccessful == true) {
|
|
|
|
|
AppState().setMarathonToken = marathonModel.data["token"] ?? "";
|
|
|
|
|
return await ApiClient().postJsonForObject(
|
|
|
|
|
(json) {
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
return marathonModel.data["token"] ?? "";
|
|
|
|
|
} else {
|
|
|
|
|
//TODO : DO ERROR HANDLING HERE
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//TODO : DO ERROR HANDLING HERE
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ApiConsts.marathonParticipantLoginUrl,
|
|
|
|
|
jsonObject,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Future<GenericResponseModel?> getGetMenuEntries() async {
|
|
|
|
|
// String url = "${ApiConsts.erpRest}GET_MENU_ENTRIES";
|
|
|
|
|
// Map<String, dynamic> postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E"};
|
|
|
|
|
// postParams.addAll(AppState().postParamsJson);
|
|
|
|
|
// return await ApiClient().postJsonForObject((json) {
|
|
|
|
|
// GenericResponseModel responseData = GenericResponseModel.fromJson(json);
|
|
|
|
|
// return responseData;
|
|
|
|
|
// }, url, postParams);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Future<String> getProjectId() async {
|
|
|
|
|
Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonProjectGetUrl, <String, dynamic>{}, token: AppState().getMarathonToken ?? await getMarathonToken());
|
|
|
|
|
|
|
|
|
|
var json = jsonDecode(response.body);
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 200) {
|
|
|
|
|
if (marathonModel.data != null && marathonModel.isSuccessful == true) {
|
|
|
|
|
logger.i("message: ${marathonModel.data[0]["id"]}");
|
|
|
|
|
AppState().setMarathonProjectId = marathonModel.data[0]["id"] ?? "";
|
|
|
|
|
return marathonModel.data[0]["id"] ?? "";
|
|
|
|
|
} else {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
return await ApiClient().postJsonForObject(
|
|
|
|
|
(json) {
|
|
|
|
|
MarathonGenericModel responseData = MarathonGenericModel.fromJson(json);
|
|
|
|
|
return responseData.data[0]["id"] ?? "";
|
|
|
|
|
},
|
|
|
|
|
ApiConsts.marathonProjectGetUrl,
|
|
|
|
|
<String, dynamic>{},
|
|
|
|
|
token: AppState().getMarathonToken ?? await getMarathonToken(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<MarathonDetailModel> getMarathonDetails() async {
|
|
|
|
@ -105,108 +76,60 @@ class MarathonApiClient {
|
|
|
|
|
"marathonId": AppState().getMarathonProjectId!,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonJoinParticipantUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken());
|
|
|
|
|
|
|
|
|
|
var json = jsonDecode(response.body);
|
|
|
|
|
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 208) {
|
|
|
|
|
// means participant is already in the marathon i.e already joined
|
|
|
|
|
//TODO: NEED TO LOOK UPON THIS
|
|
|
|
|
return marathonModel.data["remainingTime"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 200) {
|
|
|
|
|
if (marathonModel.data != null && marathonModel.isSuccessful == true) {
|
|
|
|
|
logger.i("joinMarathonAsParticipant: ${marathonModel.data}");
|
|
|
|
|
return await ApiClient().postJsonForObject(
|
|
|
|
|
(json) {
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
return marathonModel.data["remainingTime"];
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ApiConsts.marathonJoinParticipantUrl,
|
|
|
|
|
jsonObject,
|
|
|
|
|
token: AppState().getMarathonToken ?? await getMarathonToken(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<QuestionModel?> getNextQuestion({required String? questionId, required String marathonId}) async {
|
|
|
|
|
Future<QuestionModel> getNextQuestion({required String? questionId, required String marathonId}) async {
|
|
|
|
|
Map<String, String?> jsonObject = <String, String?>{
|
|
|
|
|
"previousQuestionId": questionId,
|
|
|
|
|
"marathonId": marathonId,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonNextQuestionUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken());
|
|
|
|
|
|
|
|
|
|
var json = jsonDecode(response.body);
|
|
|
|
|
|
|
|
|
|
logger.i("json in NextQuestion: $json");
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 404) {
|
|
|
|
|
Utils.confirmDialog(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext,
|
|
|
|
|
marathonModel.message!,
|
|
|
|
|
onTap: () {
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!.read<MarathonProvider>().resetValues();
|
|
|
|
|
Navigator.of(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!,
|
|
|
|
|
).popUntil(ModalRoute.withName(AppRoutes.dashboard));
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 208) {
|
|
|
|
|
Utils.confirmDialog(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext,
|
|
|
|
|
marathonModel.message!,
|
|
|
|
|
onTap: () {
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!.read<MarathonProvider>().resetValues();
|
|
|
|
|
Navigator.of(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!,
|
|
|
|
|
).popUntil(ModalRoute.withName(AppRoutes.dashboard));
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 204) {
|
|
|
|
|
Utils.confirmDialog(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext,
|
|
|
|
|
marathonModel.message!,
|
|
|
|
|
onTap: () {
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!.read<MarathonProvider>().resetValues();
|
|
|
|
|
Navigator.of(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!,
|
|
|
|
|
).popUntil(ModalRoute.withName(AppRoutes.dashboard));
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (marathonModel.data != null && marathonModel.isSuccessful == true) {
|
|
|
|
|
QuestionModel newQuestion = QuestionModel.fromJson(marathonModel.data);
|
|
|
|
|
return newQuestion;
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return await ApiClient().postJsonForObject(
|
|
|
|
|
(json) {
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.statusCode == 404 || marathonModel.statusCode == 208 || marathonModel.statusCode == 204 || marathonModel.statusCode == 500) {
|
|
|
|
|
Utils.confirmDialog(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext,
|
|
|
|
|
marathonModel.message!,
|
|
|
|
|
onTap: () {
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!.read<MarathonProvider>().resetValues();
|
|
|
|
|
Navigator.of(
|
|
|
|
|
AppRoutes.navigatorKey.currentContext!,
|
|
|
|
|
).popUntil(ModalRoute.withName(AppRoutes.dashboard));
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
QuestionModel newQuestion = QuestionModel.fromJson(marathonModel.data);
|
|
|
|
|
return newQuestion;
|
|
|
|
|
},
|
|
|
|
|
ApiConsts.marathonNextQuestionUrl,
|
|
|
|
|
jsonObject,
|
|
|
|
|
token: AppState().getMarathonToken ?? await getMarathonToken(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<bool> submitSelectedOption({required String marathonId, required String? questionId, required String? selectedAnswerId}) async {
|
|
|
|
|
Map<String, String?> jsonObject = <String, String?>{"marathonId": marathonId, "questionId": questionId, "selectedOptionId": selectedAnswerId};
|
|
|
|
|
|
|
|
|
|
Response response = await ApiClient().postJsonForResponse(ApiConsts.marathonSubmitAnswerUrl, jsonObject, token: AppState().getMarathonToken ?? await getMarathonToken());
|
|
|
|
|
|
|
|
|
|
var json = jsonDecode(response.body);
|
|
|
|
|
logger.i("json in submitSelectedOption : $json");
|
|
|
|
|
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
|
|
|
|
|
if (marathonModel.isSuccessful == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return marathonModel.isSuccessful!;
|
|
|
|
|
return await ApiClient().postJsonForObject(
|
|
|
|
|
(json) {
|
|
|
|
|
MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json);
|
|
|
|
|
return marathonModel.isSuccessful ?? false;
|
|
|
|
|
},
|
|
|
|
|
ApiConsts.marathonSubmitAnswerUrl,
|
|
|
|
|
jsonObject,
|
|
|
|
|
token: AppState().getMarathonToken ?? await getMarathonToken(),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<int?> getQualifiers({required String marathonId}) async {
|
|
|
|
|