diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index f2de4bca..f489b24a 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -137,6 +137,7 @@ const Map localizedValues = { "ar": "رقم الهوية" }, "fileNo": {"en": "File Number", "ar": "رقم الملف"}, + "fileno": {"en": "File No", "ar": "رقم الملف"}, "forgotFileNo": {"en": "Forgot file Number?", "ar": "نسيت رقم الملف الطبي؟"}, "forgotFileNoTitle": { "en": "Forgot medical file Number", diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 84c6a36e..ac611c71 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -17,4 +17,5 @@ const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING'; const IS_SEARCH_APPO = 'is-search-appo'; const IS_LIVECARE_APPOINTMENT = 'is_livecare_appointment'; const IS_VIBRATION = 'is_vibration'; -const THEME_VALUE = 'is_vibration'; \ No newline at end of file +const THEME_VALUE = 'is_vibration'; +const MAIN_USER = 'main-user'; \ No newline at end of file diff --git a/lib/models/Authentication/authenticated_user.dart b/lib/models/Authentication/authenticated_user.dart index efccc068..4c7974a3 100644 --- a/lib/models/Authentication/authenticated_user.dart +++ b/lib/models/Authentication/authenticated_user.dart @@ -60,6 +60,7 @@ class AuthenticatedUser { dynamic strDateofBirth; dynamic tempAddress; dynamic zipCode; + dynamic isFamily; // dynamic patientPayType; // dynamic patientType; // dynamic status; @@ -123,6 +124,7 @@ class AuthenticatedUser { this.strDateofBirth, this.tempAddress, this.zipCode, + this.isFamily }); AuthenticatedUser.fromJson(Map json) { @@ -190,6 +192,7 @@ class AuthenticatedUser { strDateofBirth = json['StrDateofBirth']; tempAddress = json['TempAddress']; zipCode = json['ZipCode']; + isFamily = json['IsFamily']; } Map toJson() { @@ -255,7 +258,7 @@ class AuthenticatedUser { data['StrDateofBirth'] = this.strDateofBirth; data['TempAddress'] = this.tempAddress; data['ZipCode'] = this.zipCode; - + data['IsFamily'] = this.isFamily; return data; } } diff --git a/lib/pages/DrawerPages/family/my-family.dart b/lib/pages/DrawerPages/family/my-family.dart index 535c09ce..d5fd81c1 100644 --- a/lib/pages/DrawerPages/family/my-family.dart +++ b/lib/pages/DrawerPages/family/my-family.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStat import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; @@ -512,17 +513,19 @@ class _MyFamily extends State with TickerProviderStateMixin { } switchUser(user, context) { - Utils.showProgressDialog(context); + GifLoaderDialogUtils.showMyDialog(context); this .familyFileProvider .silentLoggin(user) .then((value) => loginAfter(value, context)); } - loginAfter(result, context) { - Utils.hideProgressDialog(); + loginAfter(result, context) async{ + GifLoaderDialogUtils.hideDialog(context); + var familyFile = await sharedPref.getObject(FAMILY_FILE); result = CheckActivationCode.fromJson(result); this.sharedPref.clear(); + this.sharedPref.setObject(FAMILY_FILE, familyFile); this.sharedPref.setObject(USER_PROFILE, result.list); this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID); this.sharedPref.setString(TOKEN, result.authenticationTokenID); diff --git a/lib/pages/login/confirm-login.dart b/lib/pages/login/confirm-login.dart index 1357c74f..94778902 100644 --- a/lib/pages/login/confirm-login.dart +++ b/lib/pages/login/confirm-login.dart @@ -511,8 +511,9 @@ class _ConfirmLogin extends State { } else { + result.list.isFamily = false, userData = result.list, - //AuthenticatedUser.fromJson(result['List'][0]), + sharedPref.setObject(MAIN_USER, result.list), sharedPref.setObject(USER_PROFILE, result.list), loginTokenID = result.logInTokenID, sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index 0cd3ace4..700a0d0c 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -242,7 +242,9 @@ class _Login extends State { // request.isRegister = false; this.authService.checkActivationCode(request, code).then((result) => { result = CheckActivationCode.fromJson(result), - this.sharedPref.setObject(USER_PROFILE, result.list), + result.list.isFamily =false, + this.sharedPref.setObject(USER_PROFILE, result.list), + this.sharedPref.setObject(MAIN_USER, result.list), this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), this.sharedPref.setString(TOKEN, result.authenticationTokenID), authenticatedUserObject.getUser(), diff --git a/lib/pages/login/register-info.dart b/lib/pages/login/register-info.dart index e2a55663..467068cc 100644 --- a/lib/pages/login/register-info.dart +++ b/lib/pages/login/register-info.dart @@ -296,8 +296,9 @@ class _RegisterInfo extends State { }else { + result.list.isFamily = false, sharedPref.setObject(USER_PROFILE, result.list), - + this.sharedPref.setObject(MAIN_USER, result.list), sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), sharedPref.setString(TOKEN, result.authenticationTokenID), Navigator.of(context).pushNamed(HOME) diff --git a/lib/services/family_files/family_files_provider.dart b/lib/services/family_files/family_files_provider.dart index 491d3421..79ea67d0 100644 --- a/lib/services/family_files/family_files_provider.dart +++ b/lib/services/family_files/family_files_provider.dart @@ -55,6 +55,7 @@ class FamilyFilesProvider with ChangeNotifier { AppToast.showErrorToast(message: error); throw error; }, body: request.toJson()); + sharedPref.setObject(FAMILY_FILE, localRes); return Future.value( GetAllSharedRecordsByStatusResponse.fromJson(localRes)); @@ -246,29 +247,42 @@ class FamilyFilesProvider with ChangeNotifier { } Future silentLoggin(GetAllSharedRecordsByStatusList switchUser, - {onSuccess}) async { - //var currentUser = this.authService.getAuthenticatedUser(); - var currentUser = - AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); - //const request = new SwitchUserRequest(); + {onSuccess, mainUser}) async { Map request = {}; - request['LogInTokenID'] = ''; - request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; - request['PatientMobileNumber'] = - switchUser.mobileNumber; //['MobileNumber']; - request['SearchType'] = 2; - request['SuperUser'] = currentUser.patientID; //currentUser.PatientID; - request['PatientIdentificationID'] = ''; - request['IsSilentLogin'] = true; - if (switchUser.mobileNumber != null && - switchUser.patientID != currentUser.patientID) { - request['PatientID'] = switchUser.patientID; //['PatientID']; - } else { - request['PatientID'] = switchUser.responseID; //['ResponseID']; + if(mainUser ==true){ + var currentUser = + AuthenticatedUser.fromJson(await sharedPref.getObject(MAIN_USER)); + //const request = new SwitchUserRequest(); + request['LogInTokenID'] = ''; + request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; + request['PatientMobileNumber'] = + currentUser.mobileNumber; //['MobileNumber']; + request['SearchType'] = 2; + request['SuperUser'] = currentUser.patientID; //currentUser.PatientID; + request['PatientIdentificationID'] = ''; + request['IsSilentLogin'] = true; + request['PatientID'] = currentUser.patientID; //['PatientID']; + request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; + request['activationCode'] = '0000'; + request['isRegister'] = false; + }else { + var currentUser = + AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + //const request = new SwitchUserRequest(); + + request['LogInTokenID'] = ''; + request['PatientOutSA'] = currentUser.outSA; //? 1 : 0; + request['PatientMobileNumber'] = + switchUser.mobileNumber; //['MobileNumber']; + request['SearchType'] = 2; + request['SuperUser'] = switchUser.patientID; //currentUser.PatientID; + request['PatientIdentificationID'] = ''; + request['IsSilentLogin'] = true; + request['PatientID'] = switchUser.responseID; //['PatientID']; + request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; + request['activationCode'] = '0000'; + request['isRegister'] = false; } - request['ZipCode'] = currentUser.outSA == 1 ? "971" : "966"; - request['activationCode'] = '0000'; - request['isRegister'] = false; try { dynamic localRes; diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index cde20c4d..30135b32 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -148,7 +148,7 @@ class TranslationBase { String get idNo => localizedValues['national-id'][locale.languageCode]; String get fileNo => localizedValues['fileNo'][locale.languageCode]; - +String get fileno => localizedValues['fileno'][locale.languageCode]; String get forgotPassword => localizedValues['forgotFileNo'][locale.languageCode]; diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 66be3e48..da20f144 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -36,6 +36,7 @@ class _AppDrawerState extends State { var sharedPref = new AppSharedPreferences(); var familyFileProvider = FamilyFilesProvider(); AuthenticatedUser user; + AuthenticatedUser mainUser; AuthenticatedUserObject authenticatedUserObject = locator(); @@ -97,7 +98,7 @@ class _AppDrawerState extends State { child: Column( children: [ AppText( - 'File No:' + + TranslationBase.of(context).fileno +": " + user.patientID .toString(), color: @@ -188,49 +189,84 @@ class _AppDrawerState extends State { width: 1.0, ), )), - child: Column( + child: Column(children: [ + user.isFamily == true ? Container( + + padding: EdgeInsets + .only( + bottom: + 5), + child: InkWell( + onTap: () { + switchUser( + mainUser, + context); + }, + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: < + Widget>[ + Expanded( + child: Icon( + Icons.person), + ), + Expanded( + flex: + 7, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(mainUser.firstName +' '+mainUser.lastName), + AppText(TranslationBase.of(context).fileno +": " + mainUser.patientID.toString()), + ])), + ], + ))) : SizedBox(), + Column( mainAxisAlignment: - MainAxisAlignment.start, + MainAxisAlignment.start, mainAxisSize: - MainAxisSize.min, + MainAxisSize.min, children: snapshot.data .getAllSharedRecordsByStatusList .map((result) { return result.status == 3 - ? Padding( - padding: EdgeInsets - .only( - bottom: - 5), - child: InkWell( - onTap: () { - switchUser( - result, - context); - }, - child: Row( - crossAxisAlignment: - CrossAxisAlignment - .start, - children: < - Widget>[ - Expanded( - child: Icon( - Icons.person), - ), - Expanded( - flex: - 7, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(result.patientName), - Text('File No:' + result.iD.toString()), - ])), - ], - ))) + ? Container( + + padding: EdgeInsets + .only( + bottom: + 5), + child: InkWell( + onTap: () { + switchUser( + result, + context); + }, + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: < + Widget>[ + Expanded( + child: Icon( + Icons.person, color:result.responseID ==user.patientID ? Color(0xFF40ACC9): Colors.black), + ), + Expanded( + flex: + 7, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText(result.patientName, color:result.responseID ==user.patientID ? Color(0xFF40ACC9): Colors.black), + AppText(TranslationBase.of(context).fileno +": " + result.iD.toString(), color:result.responseID ==user.patientID ? Color(0xFF40ACC9): Colors.black), + ])), + ], + ))) : SizedBox(); - }).toList())); + }).toList())],)); } }, ), @@ -343,8 +379,13 @@ class _AppDrawerState extends State { if (await this.sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson( await this.sharedPref.getObject(USER_PROFILE)); + + var data2 = AuthenticatedUser.fromJson( + await this.sharedPref.getObject(MAIN_USER)); + print(data2); setState(() { this.user = data; + this.mainUser = data2; }); } } @@ -371,6 +412,7 @@ class _AppDrawerState extends State { } Future getFamilyFiles() async { + if(user !=null){ if (await sharedPref.getObject(FAMILY_FILE) != null) { // print(await sharedPref.getObject(FAMILY_FILE)); return Future.value(GetAllSharedRecordsByStatusResponse.fromJson( @@ -378,13 +420,14 @@ class _AppDrawerState extends State { } else { return familyFileProvider.getSharedRecordByStatus(); } + } } switchUser(user, context) { Utils.showProgressDialog(context); this .familyFileProvider - .silentLoggin(user) + .silentLoggin(user is AuthenticatedUser ? null : user, mainUser: user is AuthenticatedUser) .then((value) => loginAfter(value, context)) .catchError((err) { print(err); @@ -392,14 +435,20 @@ class _AppDrawerState extends State { Navigator.of(context).pop(); }).showProgressBar( text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); - ; } - loginAfter(result, context) { + loginAfter(result, context) async { Utils.hideProgressDialog(); result = CheckActivationCode.fromJson(result); + var familyFile = await sharedPref.getObject(FAMILY_FILE); + var mainUser = await sharedPref.getObject(MAIN_USER); this.sharedPref.clear(); + if(mainUser["PatientID"] != result.list.patientID) { + result.list.isFamily = true; + } + this.sharedPref.setObject(MAIN_USER,mainUser); this.sharedPref.setObject(USER_PROFILE, result.list); + this.sharedPref.setObject(FAMILY_FILE, familyFile); this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID); this.sharedPref.setString(TOKEN, result.authenticationTokenID); //this.checkIfUserAgreedBefore(result),