import 'dart:convert'; 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 checkActivationCode(String activationCode, int sendOtpType, bool isFromSilentLogin); getDoctorProfile(); } 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"] = token; 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); appState.logInTokenID = response.logInTokenId.toString(); } 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); appState.vidaAuthTokenID = response.vidaAuthTokenId; appState.vidaRefreshTokenID = response.vidaRefreshTokenId; appState.authenticationTokenID = response.authenticationTokenId; appState.listDoctorsClinic = response.listDoctorsClinic; appState.projectID = response.listDoctorsClinic!.first.projectId!; appState.clinicId = response.listDoctorsClinic!.first.clinicId!; } catch (e) { rethrow; } return response; } @override getDoctorProfile() async { String url = "${ApiConsts.baseUrlServices}Doctors.svc/REST/GetDocProfiles"; Map postParams = {}; postParams.addAll(appState.postParamsJson); postParams["ProjectID"] = appState.projectID; postParams["ClinicID"] = appState.clinicId; postParams["doctorID"] = appState.memberBeforeLogin!.doctorId; postParams["IsRegistered"] = true; postParams["License"] = true; postParams["TokenID"] = appState.authenticationTokenID; postParams["DoctorID"] = appState.memberBeforeLogin!.doctorId; postParams["PatientOutSA"] = false; GenericResponseModel2 response; try { response = await Injector.appInstance.get().postJsonForObject((json) => GenericResponseModel2.fromJson(json), url, postParams); } catch (e) { rethrow; } } }