diff --git a/lib/core/app_state.dart b/lib/core/app_state.dart index 8122bf4..4bed676 100644 --- a/lib/core/app_state.dart +++ b/lib/core/app_state.dart @@ -1,4 +1,5 @@ import 'package:easy_localization/easy_localization.dart'; +import 'package:hmg_patient_app_new/core/post_params_model.dart'; import 'package:hmg_patient_app_new/main.dart'; import 'consts.dart'; @@ -24,12 +25,26 @@ class AppState { set setUserLong(v) => userLong = v; + final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 3, versionID: ApiConsts.VERSION_ID); + + + void setPostParamsInitConfig() { + isAuthenticated = false; + _postParams = _postParamsInitConfig; + } + + PostParamsModel? _postParams; + PostParamsModel? get postParamsObject => _postParams; + Map get postParamsJson => isAuthenticated ? (_postParams?.toJsonAfterLogin() ?? {}) : (_postParams?.toJson() ?? {}); + + void setPostParamsModel(PostParamsModel _postParams) { + this._postParams = _postParams; + } + double userLat = 0.0; double userLong = 0.0; bool isArabic() => EasyLocalization.of(navigatorKey.currentContext!)?.locale.languageCode == "ar"; int getLanguageID(context) => EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2; - -// bool isUserLoggedIn() => } diff --git a/lib/core/consts.dart b/lib/core/consts.dart index 4f98f21..5818b1e 100644 --- a/lib/core/consts.dart +++ b/lib/core/consts.dart @@ -8,7 +8,7 @@ class ApiConsts { static String SELECT_DEVICE_IMEI = 'Services/Patients.svc/REST/Patient_SELECTDeviceIMEIbyIMEI'; - static String VERSION_ID = "1.6"; + static num VERSION_ID = 18.9; static setBackendURLs() { if (isDevelopment) { diff --git a/lib/core/post_params_model.dart b/lib/core/post_params_model.dart new file mode 100644 index 0000000..5eed9bb --- /dev/null +++ b/lib/core/post_params_model.dart @@ -0,0 +1,57 @@ +class PostParamsModel { + num? versionID; + int? channel; + int? languageID; + String? logInTokenID; + String? tokenID; + String? language; + String? ipAddress; + String? generalId; + String? latitude; + String? longitude; + String? deviceTypeID; + String? patientOutSA; + String? sessionID; + String? setupID; + + PostParamsModel({this.versionID, this.channel, this.languageID, this.logInTokenID, this.tokenID, this.language, this.ipAddress, this.generalId, this.latitude, this.longitude, this.deviceTypeID}); + + PostParamsModel.fromJson(Map json) { + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + logInTokenID = json['LogInTokenID']; + tokenID = json['TokenID']; + } + + Map toJson() { + Map data = new Map(); + data['versionID'] = this.versionID; + data['channel'] = this.channel; + data['languageID'] = this.languageID; + data['logInTokenID'] = this.logInTokenID ?? ""; + data['tokenID'] = this.tokenID ?? ""; + return data; + } + + Map toJsonAfterLogin() { + Map data = new Map(); + data['versionID'] = this.versionID; + data['channel'] = this.channel; + data['languageID'] = this.languageID; + data['logInTokenID'] = this.logInTokenID; + data['tokenID'] = this.tokenID; + return data; + } + + String? _LogInTokenID; + + String? get getLogInTokenID => _LogInTokenID ?? logInTokenID; + + set setLogInTokenID(String? value) { + logInTokenID = value; + _LogInTokenID = value; + } + + set setTokenID(String? token) => tokenID = token; +} diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index b3ddd19..a80c25f 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/providers/authentication_view_model.dart'; class LandingPage extends StatefulWidget { const LandingPage({super.key}); @@ -9,6 +10,8 @@ class LandingPage extends StatefulWidget { } class _LandingPageState extends State { + late AuthenticationViewModel authenticationViewModel; + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/services/api_client.dart b/lib/services/api_client.dart index 4cab84d..42ffc58 100644 --- a/lib/services/api_client.dart +++ b/lib/services/api_client.dart @@ -65,9 +65,9 @@ APIException _throwAPIException(Response response, Function retryCallBack) { abstract class IApiClient { Future postJsonForObject(FactoryConstructor factoryConstructor, String url, T jsonObject, - {String? token, Map? queryParameters, Map? headers, int retryTimes = 0, bool isFormData = false}); + {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}); - Future postJsonForResponse(String url, T jsonObject, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0, bool isFormData = false}); + Future postJsonForResponse(String url, T jsonObject, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}); Future getJsonForResponse(String url, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}); @@ -93,7 +93,7 @@ class ApiClient implements IApiClient { var bodyJson = json.encode(jsonObject); print("body:$bodyJson"); } - var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes, isFormData: isFormData); + var response = await postJsonForResponse(url, jsonObject, token: token, queryParameters: queryParameters, headers: _headers, retryTimes: retryTimes); // try { if (!kReleaseMode) { logger.i("res: " + response.body); @@ -119,16 +119,7 @@ class ApiClient implements IApiClient { } @override - Future postJsonForResponse(String url, T jsonObject, - {String? token, - Map? queryParameters, - Map? headers, - int retryTimes = 0, - bool isFormData = false, - bool isAuthAPI = false, - bool isHISAPI = false, - bool isSanedAPI = false, - bool isPutRequest = false}) async { + Future postJsonForResponse(String url, T jsonObject, {String? token, Map? queryParameters, Map? headers, int retryTimes = 0}) async { String? requestBody; late Map stringObj; if (jsonObject != null) { diff --git a/lib/services/authentication/authentication_repo.dart b/lib/services/authentication/authentication_repo.dart new file mode 100644 index 0000000..353ad59 --- /dev/null +++ b/lib/services/authentication/authentication_repo.dart @@ -0,0 +1,30 @@ +import 'dart:convert'; + +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:http/http.dart'; + +import '../../core/consts.dart'; +import '../api_client.dart'; +import 'models/response_models/get_patient_last_login_details_response_model.dart'; + +class AuthenticationApiClient { + static final AuthenticationApiClient _instance = AuthenticationApiClient._internal(); + + AuthenticationApiClient._internal(); + + factory AuthenticationApiClient() => _instance; + + Future getMultipleLoginUserData(String deviceIMEI) async { + GetPatientLastLoginDetailsResponseModel getPatientLastLoginDetailsResponseModel; + + Map request = {"IMEI": deviceIMEI}; + request.addAll(AppState().postParamsJson); + String url = ApiConsts.baseUrl + ApiConsts.SELECT_DEVICE_IMEI; + Response response = await ApiClient().postJsonForResponse(url, request); + + var json = jsonDecode(response.body); + getPatientLastLoginDetailsResponseModel = GetPatientLastLoginDetailsResponseModel.fromJson(json); + + return getPatientLastLoginDetailsResponseModel; + } +} diff --git a/lib/services/authentication/models/response_models/get_patient_last_login_details_response_model.dart b/lib/services/authentication/models/response_models/get_patient_last_login_details_response_model.dart new file mode 100644 index 0000000..a14da5e --- /dev/null +++ b/lib/services/authentication/models/response_models/get_patient_last_login_details_response_model.dart @@ -0,0 +1,68 @@ +class GetPatientLastLoginDetailsResponseModel { + int? iD; + String? iMEI; + int? logInType; + int? patientID; + bool? outSA; + String? mobile; + String? identificationNo; + String? name; + String? nameN; + String? createdOn; + String? editedOn; + bool? biometricEnabled; + int? patientType; + int? preferredLanguage; + + GetPatientLastLoginDetailsResponseModel( + {this.iD, + this.iMEI, + this.logInType, + this.patientID, + this.outSA, + this.mobile, + this.identificationNo, + this.name, + this.nameN, + this.createdOn, + this.editedOn, + this.biometricEnabled, + this.patientType, + this.preferredLanguage}); + + GetPatientLastLoginDetailsResponseModel.fromJson(Map json) { + iD = json['ID']; + iMEI = json['IMEI']; + logInType = json['LogInType']; + patientID = json['PatientID']; + outSA = json['OutSA']; + mobile = json['Mobile']; + identificationNo = json['IdentificationNo']; + name = json['Name']; + nameN = json['NameN']; + createdOn = json['CreatedOn']; + editedOn = json['EditedOn']; + biometricEnabled = json['BiometricEnabled']; + patientType = json['PatientType']; + preferredLanguage = json['PreferredLanguage']; + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['IMEI'] = this.iMEI; + data['LogInType'] = this.logInType; + data['PatientID'] = this.patientID; + data['OutSA'] = this.outSA; + data['Mobile'] = this.mobile; + data['IdentificationNo'] = this.identificationNo; + data['Name'] = this.name; + data['NameN'] = this.nameN; + data['CreatedOn'] = this.createdOn; + data['EditedOn'] = this.editedOn; + data['BiometricEnabled'] = this.biometricEnabled; + data['PatientType'] = this.patientType; + data['PreferredLanguage'] = this.preferredLanguage; + return data; + } +}