From 333d1e3f50d8e3c4b397ff9a8cd9a8dd200005cf Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Thu, 6 May 2021 13:45:25 +0300 Subject: [PATCH] first step from models --- ios/Podfile.lock | 2 +- .../auth/activation_Code_req_model.dart | 0 ...on_code_for_verification_screen_model.dart | 0 .../check_activation_code_request_model.dart | 0 lib/core/model/{ => auth}/imei_details.dart | 0 .../model/{ => auth}/insert_imei_model.dart | 0 .../new_login_information_response_model.dart | 113 ++++++++++++++++++ ...on_code_for_doctor_app_response_model.dart | 29 +++++ lib/core/service/authentication_service.dart | 30 ++--- .../viewModel/authentication_view_model.dart | 34 +++--- lib/screens/auth/login_screen.dart | 25 ++-- .../auth/verification_methods_screen.dart | 18 ++- 12 files changed, 198 insertions(+), 53 deletions(-) rename lib/{models => core/model}/auth/activation_Code_req_model.dart (100%) rename lib/{models => core/model}/auth/activation_code_for_verification_screen_model.dart (100%) rename lib/{models => core/model}/auth/check_activation_code_request_model.dart (100%) rename lib/core/model/{ => auth}/imei_details.dart (100%) rename lib/core/model/{ => auth}/insert_imei_model.dart (100%) create mode 100644 lib/core/model/auth/new_login_information_response_model.dart create mode 100644 lib/core/model/auth/send_activation_code_for_doctor_app_response_model.dart diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 878a1850..2f4607e0 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -322,4 +322,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 -COCOAPODS: 1.10.1 +COCOAPODS: 1.10.0.rc.1 diff --git a/lib/models/auth/activation_Code_req_model.dart b/lib/core/model/auth/activation_Code_req_model.dart similarity index 100% rename from lib/models/auth/activation_Code_req_model.dart rename to lib/core/model/auth/activation_Code_req_model.dart diff --git a/lib/models/auth/activation_code_for_verification_screen_model.dart b/lib/core/model/auth/activation_code_for_verification_screen_model.dart similarity index 100% rename from lib/models/auth/activation_code_for_verification_screen_model.dart rename to lib/core/model/auth/activation_code_for_verification_screen_model.dart diff --git a/lib/models/auth/check_activation_code_request_model.dart b/lib/core/model/auth/check_activation_code_request_model.dart similarity index 100% rename from lib/models/auth/check_activation_code_request_model.dart rename to lib/core/model/auth/check_activation_code_request_model.dart diff --git a/lib/core/model/imei_details.dart b/lib/core/model/auth/imei_details.dart similarity index 100% rename from lib/core/model/imei_details.dart rename to lib/core/model/auth/imei_details.dart diff --git a/lib/core/model/insert_imei_model.dart b/lib/core/model/auth/insert_imei_model.dart similarity index 100% rename from lib/core/model/insert_imei_model.dart rename to lib/core/model/auth/insert_imei_model.dart diff --git a/lib/core/model/auth/new_login_information_response_model.dart b/lib/core/model/auth/new_login_information_response_model.dart new file mode 100644 index 00000000..117060e4 --- /dev/null +++ b/lib/core/model/auth/new_login_information_response_model.dart @@ -0,0 +1,113 @@ +class NewLoginInformationModel { + int doctorID; + List listMemberInformation; + String logInTokenID; + String mobileNumber; + Null sELECTDeviceIMEIbyIMEIList; + int userID; + String zipCode; + bool isActiveCode; + bool isSMSSent; + + NewLoginInformationModel( + {this.doctorID, + this.listMemberInformation, + this.logInTokenID, + this.mobileNumber, + this.sELECTDeviceIMEIbyIMEIList, + this.userID, + this.zipCode, + this.isActiveCode, + this.isSMSSent}); + + NewLoginInformationModel.fromJson(Map json) { + doctorID = json['DoctorID']; + if (json['List_MemberInformation'] != null) { + listMemberInformation = new List(); + json['List_MemberInformation'].forEach((v) { + listMemberInformation.add(new ListMemberInformation.fromJson(v)); + }); + } + logInTokenID = json['LogInTokenID']; + mobileNumber = json['MobileNumber']; + sELECTDeviceIMEIbyIMEIList = json['SELECTDeviceIMEIbyIMEI_List']; + userID = json['UserID']; + zipCode = json['ZipCode']; + isActiveCode = json['isActiveCode']; + isSMSSent = json['isSMSSent']; + } + + Map toJson() { + final Map data = new Map(); + data['DoctorID'] = this.doctorID; + if (this.listMemberInformation != null) { + data['List_MemberInformation'] = + this.listMemberInformation.map((v) => v.toJson()).toList(); + } + data['LogInTokenID'] = this.logInTokenID; + data['MobileNumber'] = this.mobileNumber; + data['SELECTDeviceIMEIbyIMEI_List'] = this.sELECTDeviceIMEIbyIMEIList; + data['UserID'] = this.userID; + data['ZipCode'] = this.zipCode; + data['isActiveCode'] = this.isActiveCode; + data['isSMSSent'] = this.isSMSSent; + return data; + } +} + +class ListMemberInformation { + Null setupID; + int memberID; + String memberName; + Null memberNameN; + String preferredLang; + String pIN; + String saltHash; + int referenceID; + int employeeID; + int roleID; + int projectid; + + ListMemberInformation( + {this.setupID, + this.memberID, + this.memberName, + this.memberNameN, + this.preferredLang, + this.pIN, + this.saltHash, + this.referenceID, + this.employeeID, + this.roleID, + this.projectid}); + + ListMemberInformation.fromJson(Map json) { + setupID = json['SetupID']; + memberID = json['MemberID']; + memberName = json['MemberName']; + memberNameN = json['MemberNameN']; + preferredLang = json['PreferredLang']; + pIN = json['PIN']; + saltHash = json['SaltHash']; + referenceID = json['ReferenceID']; + employeeID = json['EmployeeID']; + roleID = json['RoleID']; + projectid = json['projectid']; + } + + Map toJson() { + final Map data = new Map(); + data['SetupID'] = this.setupID; + data['MemberID'] = this.memberID; + data['MemberName'] = this.memberName; + data['MemberNameN'] = this.memberNameN; + data['PreferredLang'] = this.preferredLang; + data['PIN'] = this.pIN; + data['SaltHash'] = this.saltHash; + data['ReferenceID'] = this.referenceID; + data['EmployeeID'] = this.employeeID; + data['RoleID'] = this.roleID; + data['projectid'] = this.projectid; + return data; + } +} diff --git a/lib/core/model/auth/send_activation_code_for_doctor_app_response_model.dart b/lib/core/model/auth/send_activation_code_for_doctor_app_response_model.dart new file mode 100644 index 00000000..ceaf4c65 --- /dev/null +++ b/lib/core/model/auth/send_activation_code_for_doctor_app_response_model.dart @@ -0,0 +1,29 @@ +class SendActivationCodeForDoctorAppResponseModel { + String logInTokenID; + String verificationCode; + String vidaAuthTokenID; + String vidaRefreshTokenID; + + SendActivationCodeForDoctorAppResponseModel( + {this.logInTokenID, + this.verificationCode, + this.vidaAuthTokenID, + this.vidaRefreshTokenID}); + + SendActivationCodeForDoctorAppResponseModel.fromJson( + Map json) { + logInTokenID = json['LogInTokenID']; + verificationCode = json['VerificationCode']; + vidaAuthTokenID = json['VidaAuthTokenID']; + vidaRefreshTokenID = json['VidaRefreshTokenID']; + } + + Map toJson() { + final Map data = new Map(); + data['LogInTokenID'] = this.logInTokenID; + data['VerificationCode'] = this.verificationCode; + data['VidaAuthTokenID'] = this.vidaAuthTokenID; + data['VidaRefreshTokenID'] = this.vidaRefreshTokenID; + return data; + } +} diff --git a/lib/core/service/authentication_service.dart b/lib/core/service/authentication_service.dart index 59d8e34a..18624d58 100644 --- a/lib/core/service/authentication_service.dart +++ b/lib/core/service/authentication_service.dart @@ -1,11 +1,13 @@ import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/core/model/imei_details.dart'; -import 'package:doctor_app_flutter/core/model/insert_imei_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/activation_Code_req_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/imei_details.dart'; +import 'package:doctor_app_flutter/core/model/auth/insert_imei_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/new_login_information_response_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/send_activation_code_for_doctor_app_response_model.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/viewModel/doctor_profile_view_model.dart'; -import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart'; -import 'package:doctor_app_flutter/models/auth/activation_code_for_verification_screen_model.dart'; -import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/activation_code_for_verification_screen_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/check_activation_code_request_model.dart'; import 'package:doctor_app_flutter/models/doctor/clinic_model.dart'; import 'package:doctor_app_flutter/models/doctor/user_model.dart'; import 'package:provider/provider.dart'; @@ -14,15 +16,15 @@ class AuthenticationService extends BaseService { List _imeiDetails = []; List get dashboardItemsList => _imeiDetails; //TODO Change this to models - Map _loginInfo = {}; - Map get loginInfo => _loginInfo; + NewLoginInformationModel _loginInfo = NewLoginInformationModel(); + NewLoginInformationModel get loginInfo => _loginInfo; Map _activationCodeVerificationScreenRes = {}; Map get activationCodeVerificationScreenRes => _activationCodeVerificationScreenRes; - Map _activationCodeForDoctorAppRes = {}; + SendActivationCodeForDoctorAppResponseModel _activationCodeForDoctorAppRes = SendActivationCodeForDoctorAppResponseModel(); - Map get activationCodeForDoctorAppRes => _activationCodeForDoctorAppRes; + SendActivationCodeForDoctorAppResponseModel get activationCodeForDoctorAppRes => _activationCodeForDoctorAppRes; Map _checkActivationCodeForDoctorAppRes = {}; Map get checkActivationCodeForDoctorAppRes => _checkActivationCodeForDoctorAppRes; @@ -31,7 +33,6 @@ class AuthenticationService extends BaseService { Map get insertDeviceImeiRes => _insertDeviceImeiRes; Future selectDeviceImei(imei) async { try { - // dynamic localRes; await baseAppClient.post(SELECT_DEVICE_IMEI, onSuccess: (dynamic response, int statusCode) { _imeiDetails = []; @@ -42,7 +43,6 @@ class AuthenticationService extends BaseService { hasError = true; super.error = error; }, body: {"IMEI": imei, "TokenID": "@dm!n"}); - //return Future.value(localRes); } catch (error) { hasError = true; super.error = error; @@ -51,11 +51,11 @@ class AuthenticationService extends BaseService { Future login(UserModel userInfo) async { hasError = false; - _loginInfo = {}; + _loginInfo = NewLoginInformationModel(); try { await baseAppClient.post(LOGIN_URL, onSuccess: (dynamic response, int statusCode) { - _loginInfo = response; + _loginInfo = NewLoginInformationModel.fromJson(response); }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; @@ -87,11 +87,11 @@ class AuthenticationService extends BaseService { Future sendActivationCodeForDoctorApp(ActivationCodeModel activationCodeModel)async { hasError = false; - _activationCodeForDoctorAppRes = {}; + _activationCodeForDoctorAppRes = SendActivationCodeForDoctorAppResponseModel(); try { await baseAppClient.post(SEND_ACTIVATION_CODE_FOR_DOCTOR_APP, onSuccess: (dynamic response, int statusCode) { - _activationCodeForDoctorAppRes = response; + _activationCodeForDoctorAppRes = SendActivationCodeForDoctorAppResponseModel.fromJson(response); }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; diff --git a/lib/core/viewModel/authentication_view_model.dart b/lib/core/viewModel/authentication_view_model.dart index a8dda45f..a9986cec 100644 --- a/lib/core/viewModel/authentication_view_model.dart +++ b/lib/core/viewModel/authentication_view_model.dart @@ -2,17 +2,19 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/enum/auth_method_types.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/auth/activation_Code_req_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/insert_imei_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/new_login_information_response_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/send_activation_code_for_doctor_app_response_model.dart'; import 'package:doctor_app_flutter/core/model/hospitals/get_hospitals_request_model.dart'; import 'package:doctor_app_flutter/core/model/hospitals/get_hospitals_response_model.dart'; -import 'package:doctor_app_flutter/core/model/imei_details.dart'; -import 'package:doctor_app_flutter/core/model/insert_imei_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/imei_details.dart'; import 'package:doctor_app_flutter/core/service/authentication_service.dart'; import 'package:doctor_app_flutter/core/service/hospitals/hospitals_service.dart'; import 'package:doctor_app_flutter/core/viewModel/base_view_model.dart'; import 'package:doctor_app_flutter/locator.dart'; -import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart'; -import 'package:doctor_app_flutter/models/auth/activation_code_for_verification_screen_model.dart'; -import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/activation_code_for_verification_screen_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/check_activation_code_request_model.dart'; import 'package:doctor_app_flutter/models/doctor/user_model.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:intl/intl.dart'; @@ -23,12 +25,12 @@ class AuthenticationViewModel extends BaseViewModel { List get imeiDetails => _authService.dashboardItemsList; List get hospitals => _hospitalsService.hospitals; - get loginInfo => _authService.loginInfo; + NewLoginInformationModel get loginInfo => _authService.loginInfo; get activationCodeVerificationScreenRes => _authService.activationCodeVerificationScreenRes; - get activationCodeForDoctorAppRes => _authService.activationCodeForDoctorAppRes; + SendActivationCodeForDoctorAppResponseModel get activationCodeForDoctorAppRes => _authService.activationCodeForDoctorAppRes; get checkActivationCodeForDoctorAppRes => _authService.checkActivationCodeForDoctorAppRes; - var loggedUser; + NewLoginInformationModel loggedUser; GetIMEIDetailsModel user; Future selectDeviceImei(imei) async { setState(ViewState.Busy); @@ -115,9 +117,9 @@ class AuthenticationViewModel extends BaseViewModel { int projectID = await sharedPref.getInt(PROJECT_ID); ActivationCodeModel activationCodeModel = ActivationCodeModel( facilityId: projectID, - memberID: loggedUser['List_MemberInformation'][0]['MemberID'], - zipCode: loggedUser['ZipCode'], - mobileNumber: loggedUser['MobileNumber'], + memberID: loggedUser.listMemberInformation[0].memberID, + zipCode: loggedUser.zipCode, + mobileNumber: loggedUser.mobileNumber, otpSendType: authMethodType.getTypeIdService().toString(), password: password); await _authService.sendActivationCodeForDoctorApp(activationCodeModel); @@ -133,9 +135,9 @@ class AuthenticationViewModel extends BaseViewModel { CheckActivationCodeRequestModel checkActivationCodeForDoctorApp = new CheckActivationCodeRequestModel( zipCode: - loggedUser != null ? loggedUser['ZipCode'] :user.zipCode, + loggedUser != null ? loggedUser.zipCode :user.zipCode, mobileNumber: - loggedUser != null ? loggedUser['MobileNumber'] : user.mobile, + loggedUser != null ? loggedUser.mobileNumber : user.mobile, projectID: await sharedPref.getInt(PROJECT_ID) != null ? await sharedPref.getInt(PROJECT_ID) : user.projectID, @@ -208,7 +210,11 @@ class AuthenticationViewModel extends BaseViewModel { getInitUserInfo()async{ setState(ViewState.Busy); - loggedUser = await sharedPref.getObj(LOGGED_IN_USER); + var localLoggedUser = await sharedPref.getObj(LOGGED_IN_USER); + if(localLoggedUser!= null) { + loggedUser = NewLoginInformationModel.fromJson(localLoggedUser); + + } var lastLogin = await sharedPref.getObj(LAST_LOGIN_USER); if (lastLogin != null) { user = GetIMEIDetailsModel.fromJson(lastLogin); diff --git a/lib/screens/auth/login_screen.dart b/lib/screens/auth/login_screen.dart index 0048b10c..a6eab35b 100644 --- a/lib/screens/auth/login_screen.dart +++ b/lib/screens/auth/login_screen.dart @@ -10,10 +10,10 @@ import 'package:doctor_app_flutter/core/service/authentication_service.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/models/doctor/user_model.dart'; +import 'package:doctor_app_flutter/screens/auth/verification_methods_screen.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; -import 'package:doctor_app_flutter/screens/auth/verification_methods_screen.dart'; import 'package:doctor_app_flutter/widgets/shared/app_loader_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; @@ -463,25 +463,24 @@ class _LoginsreenState extends State { Helpers.showErrorToast(model.error); } else { - if (model.loginInfo['MessageStatus'] == 1) { - saveObjToString(LOGGED_IN_USER, model.loginInfo); - sharedPref.remove(LAST_LOGIN_USER); - sharedPref.setString(TOKEN, model.loginInfo['LogInTokenID']); - GifLoaderDialogUtils.hideDialog(context); + saveObjToString(LOGGED_IN_USER, model.loginInfo); + sharedPref.remove(LAST_LOGIN_USER); + sharedPref.setString(TOKEN, model.loginInfo.logInTokenID); + GifLoaderDialogUtils.hideDialog(context); - Navigator.of(context).pushReplacement(MaterialPageRoute( - builder: (BuildContext context) => - VerificationMethodsScreen( - password: userInfo.password, - ))); - } + Navigator.of(context).pushReplacement( + MaterialPageRoute( + builder: (BuildContext context) => VerificationMethodsScreen( + password: userInfo.password, + ), + ), + ); } } } Future setSharedPref(key, value) async { sharedPref.setString(key, value).then((success) { - print("sharedPref.setString" + success.toString()); }); } diff --git a/lib/screens/auth/verification_methods_screen.dart b/lib/screens/auth/verification_methods_screen.dart index 2b906588..ce783901 100644 --- a/lib/screens/auth/verification_methods_screen.dart +++ b/lib/screens/auth/verification_methods_screen.dart @@ -3,12 +3,11 @@ import 'dart:io' show Platform; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/core/enum/auth_method_types.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; -import 'package:doctor_app_flutter/core/model/imei_details.dart'; +import 'package:doctor_app_flutter/core/model/auth/imei_details.dart'; import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; -import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart'; -import 'package:doctor_app_flutter/models/auth/activation_code_for_verification_screen_model.dart'; -import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/activation_code_for_verification_screen_model.dart'; +import 'package:doctor_app_flutter/core/model/auth/check_activation_code_request_model.dart'; import 'package:doctor_app_flutter/models/doctor/clinic_model.dart'; import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart'; import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart'; @@ -384,13 +383,13 @@ class _VerificationMethodsScreenState extends State { } else { // TODO move it model print("VerificationCode : " + - model.activationCodeForDoctorAppRes["VerificationCode"]); + model.activationCodeForDoctorAppRes.verificationCode); sharedPref.setString(VIDA_AUTH_TOKEN_ID, - model.activationCodeForDoctorAppRes["VidaAuthTokenID"]); + model.activationCodeForDoctorAppRes.vidaAuthTokenID); sharedPref.setString(VIDA_REFRESH_TOKEN_ID, - model.activationCodeForDoctorAppRes["VidaRefreshTokenID"]); + model.activationCodeForDoctorAppRes.vidaRefreshTokenID); sharedPref.setString(LOGIN_TOKEN_ID, - model.activationCodeForDoctorAppRes["LogInTokenID"]); + model.activationCodeForDoctorAppRes.logInTokenID); sharedPref.setString(PASSWORD, widget.password); GifLoaderDialogUtils.hideDialog(context); this.startSMSService(authMethodType); @@ -475,7 +474,7 @@ class _VerificationMethodsScreenState extends State { new SMSOTP( context, type, - model.loggedUser != null ? model.loggedUser['MobileNumber'] : model.user.mobile, + model.loggedUser != null ? model.loggedUser.mobileNumber : model.user.mobile, (value) { showDialog( context: context, @@ -581,7 +580,6 @@ class _VerificationMethodsScreenState extends State { if (res['MessageStatus'] == 1) { loginProcessCompleted(res['DoctorProfileList'][0]); } else { - // changeLoadingState(false); Helpers.showErrorToast(res['ErrorEndUserMessage']); } }).catchError((err) {