import 'dart:convert'; import 'package:hmg_nurses/classes/utils.dart'; import 'package:hmg_nurses/exceptions/api_exception.dart'; import 'package:hmg_nurses/main.dart'; import 'package:hmg_nurses/model/base/generic_response_model2.dart'; import 'package:hmg_nurses/model/login/member_login_model.dart'; import 'package:hmg_nurses/model/login/project_info_model.dart'; import 'package:hmg_nurses/services/api_client.dart'; import 'package:hmg_nurses/classes/consts.dart'; import 'package:hmg_nurses/model/base/generic_response_model.dart'; import 'package:hmg_nurses/model/login/imei_details_model.dart'; import 'package:hmg_nurses/services/firebase_service.dart'; import 'package:injector/injector.dart'; abstract class ILoginApiRepo { Future> getDeviceInfoByIMEI(); Future> getProjectInfo(String userId); Future memberLogin(String userId, String password, int projectId); Future sendActivationCode(MemberLoginModel memberLoginModel, int facilityID, int sendOtpType); Future sendActivationCodeForSlientLogin(MemberLoginModel memberLoginModel, int facilityID, int sendOtpType); Future checkActivationCode(String activationCode, int sendOtpType, bool isFromSilentLogin); } class LoginApiRepo implements ILoginApiRepo { final IFirebaseService _firebaseService = Injector.appInstance.get(); @override Future> getDeviceInfoByIMEI() async { String url = "${ApiConsts.baseUrlServices}DoctorApplication.svc/REST/DoctorApp_GetDeviceDetailsByIMEI"; String token = await _firebaseService.getFirebaseToke(); logger.d("firebase_token: " + token); appState.imei = token; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["stamp"] = DateTime.now().toIso8601String(); postParams["IMEI"] = appState.imei; GenericResponseModel response; try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response.listDoctorDeviceDetails ?? []; } @override Future> getProjectInfo(String userId) async { String url = "${ApiConsts.baseUrlServices}DoctorApplication.svc/REST/GetProjectInfo"; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["MemberID"] = "13777"; GenericResponseModel response; try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response.projectInfo ?? []; } @override Future memberLogin(String userId, String password, int projectId) async { String url = "${ApiConsts.baseUrlServices}Sentry.svc/REST/MemberLogIN_New"; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["UserID"] = userId; postParams["Password"] = password; postParams["ProjectID"] = projectId; MemberLoginModel response; try { response = await Injector.appInstance.get().postJsonForObject((json) => MemberLoginModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response; } @override Future sendActivationCode(MemberLoginModel memberLoginModel, int facilityID, int sendOtpType) async { String url = "${ApiConsts.baseUrlServices}DoctorApplication.svc/REST/SendActivationCodeForDoctorApp"; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["MemberID"] = memberLoginModel.listMemberInformation!.first.memberId; postParams["facilityId"] = facilityID; postParams["OTP_SendType"] = sendOtpType.toString(); postParams["LoginDoctorID"] = memberLoginModel.doctorId; postParams["DoctorID"] = memberLoginModel.doctorId; postParams["TokenID"] = appState.logInTokenID; GenericResponseModel response; print(jsonEncode(postParams)); // return GenericResponseModel(); try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response; } @override Future sendActivationCodeForSlientLogin(MemberLoginModel memberLoginModel, int facilityID, int sendOtpType) async { String url = "${ApiConsts.baseUrlServices}DoctorApplication.svc/REST/SendVerificationCode"; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["MobileNumber"] = memberLoginModel.mobileNumber; postParams["ZipCode"] = memberLoginModel.zipCode; postParams["IsMobileFingerPrint"] = 1; postParams["IMEI"] = appState.imei; postParams["LoginDoctorID"] = memberLoginModel.doctorId; postParams["DoctorID"] = memberLoginModel.doctorId; postParams["MemberID"] = memberLoginModel.listMemberInformation!.first.memberId; postParams["facilityId"] = facilityID; postParams["OTP_SendType"] = sendOtpType; postParams["LoginDoctorID"] = memberLoginModel.doctorId; postParams["DoctorID"] = memberLoginModel.doctorId; postParams["TokenID"] = appState.logInTokenID; GenericResponseModel response; print(jsonEncode(postParams)); // return GenericResponseModel(); try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response; } @override Future checkActivationCode(String activationCode, int sendOtpType, bool isFromSilentLogin) async { String url = "${ApiConsts.baseUrlServices}DoctorApplication.svc/REST/CheckActivationCodeForDoctorApp"; Map postParams = {}; MemberLoginModel memberLoginModel = appState.memberBeforeLogin ?? MemberLoginModel(); postParams.addAll(appState.postParamsJson); postParams["MobileNumber"] = memberLoginModel.mobileNumber; postParams["ProjectID"] = appState.projectID; postParams["LogInTokenID"] = appState.logInTokenID; postParams["activationCode"] = activationCode; postParams["OTP_SendType"] = sendOtpType; postParams["facilityId"] = appState.projectID; postParams["MemberID"] = appState.memberBeforeLogin!.listMemberInformation!.first.memberId; postParams["Password"] = appState.password; postParams["IsForSilentLogin"] = isFromSilentLogin; postParams["LoginDoctorID"] = appState.memberBeforeLogin?.doctorId; postParams["DoctorID"] = appState.memberBeforeLogin?.doctorId; postParams["IMEI"] = appState.imei; postParams["ZipCode"] = appState.memberBeforeLogin?.zipCode; postParams["TokenID"] = appState.logInTokenID; GenericResponseModel response; try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel.fromJson(json), url, postParams); } catch (e) { rethrow; } return response; } }