diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 69356729..41b3b7d6 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -160,5 +160,11 @@ const Map> localizedValues = { "sent-requests": {"en": "Sent Requests", "ar": "الطلبات المرسلة"}, "recieved-requests": {"en": "Recieved Requests", "ar": "الطلبات المستلمة"}, "manage-files": {"en": "Manage Family Files", "ar": "إدارة ملفات العائلة"}, - // "my-family": {"en": "MY FAMILY", "ar": "عائلتي"}, + "request": {"en": "Request", "ar": "طلبات الاضافة"}, + "member-name": {"en": "Member Name", "ar": "اسم العضو"}, + "switch-login": {"en": "Switch User", "ar": "تغير المستخدم"}, + "remove-member": {"en": "Remove", "ar": "حذف"}, + "allow-view": {"en": "Allow", "ar": "قبول"}, + "reject-view": {"en": "Reject", "ar": "رفض"}, + "delete-view": {"en": "Delete", "ar": "حذف"}, }; diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index 456cb02b..6a6fb0ce 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -23,22 +23,25 @@ class BaseAppClient { String url = BASE_URL + endPoint; try { //Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - // String token = await sharedPref.getString(TOKEN); - + String token = await sharedPref.getString(TOKEN); + var user = await sharedPref.getObject(USER_PROFILE); body['SetupID'] = SETUP_ID; body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; body['LanguageID'] = LANGUAGE; body['IPAdress'] = IP_ADDRESS; body['generalid'] = GENERAL_ID; - body['PatientOutSA'] = PATIENT_OUT_SA; + // body['PatientOutSA'] = PATIENT_OUT_SA; body['SessionID'] = SESSION_ID; body['isDentalAllowedBackend'] = IS_DENTAL_ALLOWED_BACKEND; body['DeviceTypeID'] = DeviceTypeID; body['PatientType'] = PATIENT_TYPE; body['PatientTypeID'] = PATIENT_TYPE_ID; - body['TokenID'] = '@dm!n'; - body['PatientID'] = 1231755; + if (user != null) { + body['TokenID'] = token; //user['TokenID']; + body['PatientID'] = user['PatientID']; + body['PatientOutSA'] = user['OutSA']; + } print("URL : $url"); print("Body : ${json.encode(body)}"); @@ -67,7 +70,6 @@ class BaseAppClient { statusCode); logout(); } - } else if (parsed['MessageStatus'] == 1 || parsed['SMSLoginRequired'] == true) { onSuccess(parsed, statusCode); diff --git a/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart b/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart new file mode 100644 index 00000000..da848b65 --- /dev/null +++ b/lib/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart @@ -0,0 +1,347 @@ +class GetAllSharedRecordsByStatusResponse { + Null date; + int languageID; + int serviceName; + Null time; + Null androidLink; + Null authenticationTokenID; + Null data; + bool dataw; + int dietType; + Null errorCode; + Null errorEndUserMessage; + Null errorEndUserMessageN; + Null errorMessage; + int errorType; + int foodCategory; + Null iOSLink; + bool isAuthenticated; + int mealOrderStatus; + int mealType; + int messageStatus; + int numberOfResultRecords; + Null patientBlodType; + Null successMsg; + Null successMsgN; + Null doctorInformationList; + Null getAllPendingRecordsList; + List getAllSharedRecordsByStatusList; + Null getResponseFileList; + bool isHMGPatient; + bool isLoginSuccessfully; + bool isNeedUpdateIdintificationNo; + bool kioskSendSMS; + Null list; + Null listAskHabibMobileLoginInfo; + Null listAskHabibPatientFile; + Null listMergeFiles; + Null listMobileLoginInfo; + Null listPatientCount; + Null logInTokenID; + Null mohemmPrivilegeList; + int pateintID; + Null patientBloodType; + Null patientERDriverFile; + Null patientERDriverFileList; + bool patientHasFile; + Null patientMergedIDs; + bool patientOutSA; + int patientShareRequestID; + int patientType; + int projectIDOut; + Null returnMessage; + bool sMSLoginRequired; + Null servicePrivilegeList; + Null sharePatientName; + Null verificationCode; + Null email; + Null errorList; + bool hasFile; + bool isActiveCode; + bool isMerged; + bool isNeedUserAgreement; + bool isSMSSent; + Null memberList; + Null message; + int statusCode; + + GetAllSharedRecordsByStatusResponse( + {this.date, + this.languageID, + this.serviceName, + this.time, + this.androidLink, + this.authenticationTokenID, + this.data, + this.dataw, + this.dietType, + this.errorCode, + this.errorEndUserMessage, + this.errorEndUserMessageN, + this.errorMessage, + this.errorType, + this.foodCategory, + this.iOSLink, + this.isAuthenticated, + this.mealOrderStatus, + this.mealType, + this.messageStatus, + this.numberOfResultRecords, + this.patientBlodType, + this.successMsg, + this.successMsgN, + this.doctorInformationList, + this.getAllPendingRecordsList, + this.getAllSharedRecordsByStatusList, + this.getResponseFileList, + this.isHMGPatient, + this.isLoginSuccessfully, + this.isNeedUpdateIdintificationNo, + this.kioskSendSMS, + this.list, + this.listAskHabibMobileLoginInfo, + this.listAskHabibPatientFile, + this.listMergeFiles, + this.listMobileLoginInfo, + this.listPatientCount, + this.logInTokenID, + this.mohemmPrivilegeList, + this.pateintID, + this.patientBloodType, + this.patientERDriverFile, + this.patientERDriverFileList, + this.patientHasFile, + this.patientMergedIDs, + this.patientOutSA, + this.patientShareRequestID, + this.patientType, + this.projectIDOut, + this.returnMessage, + this.sMSLoginRequired, + this.servicePrivilegeList, + this.sharePatientName, + this.verificationCode, + this.email, + this.errorList, + this.hasFile, + this.isActiveCode, + this.isMerged, + this.isNeedUserAgreement, + this.isSMSSent, + this.memberList, + this.message, + this.statusCode}); + + GetAllSharedRecordsByStatusResponse.fromJson(Map json) { + date = json['Date']; + languageID = json['LanguageID']; + serviceName = json['ServiceName']; + time = json['Time']; + androidLink = json['AndroidLink']; + authenticationTokenID = json['AuthenticationTokenID']; + data = json['Data']; + dataw = json['Dataw']; + dietType = json['DietType']; + errorCode = json['ErrorCode']; + errorEndUserMessage = json['ErrorEndUserMessage']; + errorEndUserMessageN = json['ErrorEndUserMessageN']; + errorMessage = json['ErrorMessage']; + errorType = json['ErrorType']; + foodCategory = json['FoodCategory']; + iOSLink = json['IOSLink']; + isAuthenticated = json['IsAuthenticated']; + mealOrderStatus = json['MealOrderStatus']; + mealType = json['MealType']; + messageStatus = json['MessageStatus']; + numberOfResultRecords = json['NumberOfResultRecords']; + patientBlodType = json['PatientBlodType']; + successMsg = json['SuccessMsg']; + successMsgN = json['SuccessMsgN']; + doctorInformationList = json['DoctorInformation_List']; + getAllPendingRecordsList = json['GetAllPendingRecordsList']; + if (json['GetAllSharedRecordsByStatusList'] != null) { + getAllSharedRecordsByStatusList = + new List(); + json['GetAllSharedRecordsByStatusList'].forEach((v) { + getAllSharedRecordsByStatusList + .add(new GetAllSharedRecordsByStatusList.fromJson(v)); + }); + } + getResponseFileList = json['GetResponseFileList']; + isHMGPatient = json['IsHMGPatient']; + isLoginSuccessfully = json['IsLoginSuccessfully']; + isNeedUpdateIdintificationNo = json['IsNeedUpdateIdintificationNo']; + kioskSendSMS = json['KioskSendSMS']; + list = json['List']; + listAskHabibMobileLoginInfo = json['List_AskHabibMobileLoginInfo']; + listAskHabibPatientFile = json['List_AskHabibPatientFile']; + listMergeFiles = json['List_MergeFiles']; + listMobileLoginInfo = json['List_MobileLoginInfo']; + listPatientCount = json['List_PatientCount']; + logInTokenID = json['LogInTokenID']; + mohemmPrivilegeList = json['MohemmPrivilege_List']; + pateintID = json['PateintID']; + patientBloodType = json['PatientBloodType']; + patientERDriverFile = json['PatientER_DriverFile']; + patientERDriverFileList = json['PatientER_DriverFileList']; + patientHasFile = json['PatientHasFile']; + patientMergedIDs = json['PatientMergedIDs']; + patientOutSA = json['PatientOutSA']; + patientShareRequestID = json['PatientShareRequestID']; + patientType = json['PatientType']; + projectIDOut = json['ProjectIDOut']; + returnMessage = json['ReturnMessage']; + sMSLoginRequired = json['SMSLoginRequired']; + servicePrivilegeList = json['ServicePrivilege_List']; + sharePatientName = json['SharePatientName']; + verificationCode = json['VerificationCode']; + email = json['email']; + errorList = json['errorList']; + hasFile = json['hasFile']; + isActiveCode = json['isActiveCode']; + isMerged = json['isMerged']; + isNeedUserAgreement = json['isNeedUserAgreement']; + isSMSSent = json['isSMSSent']; + memberList = json['memberList']; + message = json['message']; + statusCode = json['statusCode']; + } + + Map toJson() { + final Map data = new Map(); + data['Date'] = this.date; + data['LanguageID'] = this.languageID; + data['ServiceName'] = this.serviceName; + data['Time'] = this.time; + data['AndroidLink'] = this.androidLink; + data['AuthenticationTokenID'] = this.authenticationTokenID; + data['Data'] = this.data; + data['Dataw'] = this.dataw; + data['DietType'] = this.dietType; + data['ErrorCode'] = this.errorCode; + data['ErrorEndUserMessage'] = this.errorEndUserMessage; + data['ErrorEndUserMessageN'] = this.errorEndUserMessageN; + data['ErrorMessage'] = this.errorMessage; + data['ErrorType'] = this.errorType; + data['FoodCategory'] = this.foodCategory; + data['IOSLink'] = this.iOSLink; + data['IsAuthenticated'] = this.isAuthenticated; + data['MealOrderStatus'] = this.mealOrderStatus; + data['MealType'] = this.mealType; + data['MessageStatus'] = this.messageStatus; + data['NumberOfResultRecords'] = this.numberOfResultRecords; + data['PatientBlodType'] = this.patientBlodType; + data['SuccessMsg'] = this.successMsg; + data['SuccessMsgN'] = this.successMsgN; + data['DoctorInformation_List'] = this.doctorInformationList; + data['GetAllPendingRecordsList'] = this.getAllPendingRecordsList; + if (this.getAllSharedRecordsByStatusList != null) { + data['GetAllSharedRecordsByStatusList'] = + this.getAllSharedRecordsByStatusList.map((v) => v.toJson()).toList(); + } + data['GetResponseFileList'] = this.getResponseFileList; + data['IsHMGPatient'] = this.isHMGPatient; + data['IsLoginSuccessfully'] = this.isLoginSuccessfully; + data['IsNeedUpdateIdintificationNo'] = this.isNeedUpdateIdintificationNo; + data['KioskSendSMS'] = this.kioskSendSMS; + data['List'] = this.list; + data['List_AskHabibMobileLoginInfo'] = this.listAskHabibMobileLoginInfo; + data['List_AskHabibPatientFile'] = this.listAskHabibPatientFile; + data['List_MergeFiles'] = this.listMergeFiles; + data['List_MobileLoginInfo'] = this.listMobileLoginInfo; + data['List_PatientCount'] = this.listPatientCount; + data['LogInTokenID'] = this.logInTokenID; + data['MohemmPrivilege_List'] = this.mohemmPrivilegeList; + data['PateintID'] = this.pateintID; + data['PatientBloodType'] = this.patientBloodType; + data['PatientER_DriverFile'] = this.patientERDriverFile; + data['PatientER_DriverFileList'] = this.patientERDriverFileList; + data['PatientHasFile'] = this.patientHasFile; + data['PatientMergedIDs'] = this.patientMergedIDs; + data['PatientOutSA'] = this.patientOutSA; + data['PatientShareRequestID'] = this.patientShareRequestID; + data['PatientType'] = this.patientType; + data['ProjectIDOut'] = this.projectIDOut; + data['ReturnMessage'] = this.returnMessage; + data['SMSLoginRequired'] = this.sMSLoginRequired; + data['ServicePrivilege_List'] = this.servicePrivilegeList; + data['SharePatientName'] = this.sharePatientName; + data['VerificationCode'] = this.verificationCode; + data['email'] = this.email; + data['errorList'] = this.errorList; + data['hasFile'] = this.hasFile; + data['isActiveCode'] = this.isActiveCode; + data['isMerged'] = this.isMerged; + data['isNeedUserAgreement'] = this.isNeedUserAgreement; + data['isSMSSent'] = this.isSMSSent; + data['memberList'] = this.memberList; + data['message'] = this.message; + data['statusCode'] = this.statusCode; + return data; + } +} + +class GetAllSharedRecordsByStatusList { + int iD; + int patientID; + int responseID; + int regionID; + int status; + Null isActive; + String editedOn; + String createdOn; + String emaiLAddress; + String mobileNumber; + String patientIdenficationNumber; + String patientName; + String statusDescription; + + GetAllSharedRecordsByStatusList( + {this.iD, + this.patientID, + this.responseID, + this.regionID, + this.status, + this.isActive, + this.editedOn, + this.createdOn, + this.emaiLAddress, + this.mobileNumber, + this.patientIdenficationNumber, + this.patientName, + this.statusDescription}); + + GetAllSharedRecordsByStatusList.fromJson(Map json) { + iD = json['ID']; + patientID = json['PatientID']; + responseID = json['ResponseID']; + regionID = json['RegionID']; + status = json['Status']; + isActive = json['IsActive']; + editedOn = json['EditedOn']; + createdOn = json['CreatedOn']; + emaiLAddress = json['EmaiLAddress']; + mobileNumber = json['MobileNumber']; + patientIdenficationNumber = json['PatientIdenficationNumber']; + patientName = json['PatientName']; + statusDescription = json['StatusDescription']; + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['PatientID'] = this.patientID; + data['ResponseID'] = this.responseID; + data['RegionID'] = this.regionID; + data['Status'] = this.status; + data['IsActive'] = this.isActive; + data['EditedOn'] = this.editedOn; + data['CreatedOn'] = this.createdOn; + data['EmaiLAddress'] = this.emaiLAddress; + data['MobileNumber'] = this.mobileNumber; + data['PatientIdenficationNumber'] = this.patientIdenficationNumber; + data['PatientName'] = this.patientName; + data['StatusDescription'] = this.statusDescription; + return data; + } +} diff --git a/lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart b/lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart new file mode 100644 index 00000000..ac0adc34 --- /dev/null +++ b/lib/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart @@ -0,0 +1,68 @@ +class GetAllSharedRecordsByStatusReq { + double versionID; + int channel; + int languageID; + String iPAdress; + String generalid; + int patientOutSA; + String sessionID; + bool isDentalAllowedBackend; + int deviceTypeID; + int patientID; + String tokenID; + int patientTypeID; + int patientType; + int status; + + GetAllSharedRecordsByStatusReq( + {this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.patientOutSA, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID, + this.patientID, + this.tokenID, + this.patientTypeID, + this.patientType, + this.status}); + + GetAllSharedRecordsByStatusReq.fromJson(Map json) { + versionID = json['VersionID']; + channel = json['Channel']; + languageID = json['LanguageID']; + iPAdress = json['IPAdress']; + generalid = json['generalid']; + patientOutSA = json['PatientOutSA']; + sessionID = json['SessionID']; + isDentalAllowedBackend = json['isDentalAllowedBackend']; + deviceTypeID = json['DeviceTypeID']; + patientID = json['PatientID']; + tokenID = json['TokenID']; + patientTypeID = json['PatientTypeID']; + patientType = json['PatientType']; + status = json['Status']; + } + + Map toJson() { + final Map data = new Map(); + data['VersionID'] = this.versionID; + data['Channel'] = this.channel; + data['LanguageID'] = this.languageID; + data['IPAdress'] = this.iPAdress; + data['generalid'] = this.generalid; + data['PatientOutSA'] = this.patientOutSA; + data['SessionID'] = this.sessionID; + data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; + data['DeviceTypeID'] = this.deviceTypeID; + data['PatientID'] = this.patientID; + data['TokenID'] = this.tokenID; + data['PatientTypeID'] = this.patientTypeID; + data['PatientType'] = this.patientType; + data['Status'] = this.status; + return data; + } +} diff --git a/lib/pages/family/my-family.dart b/lib/pages/family/my-family.dart index 9d1a39e9..93638e52 100644 --- a/lib/pages/family/my-family.dart +++ b/lib/pages/family/my-family.dart @@ -1,15 +1,10 @@ -import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/size_config.dart'; -import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; -import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; -import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/routes.dart'; class MyFamily extends StatefulWidget { @override @@ -18,6 +13,7 @@ class MyFamily extends StatefulWidget { class _MyFamily extends State { bool isLoading = true; + var familyFileProvider = FamilyFilesProvider(); @override void initState() { isLoading = true; @@ -29,23 +25,101 @@ class _MyFamily extends State { return AppScaffold( appBarTitle: TranslationBase.of(context).myFamilyFiles, isShowAppBar: true, - body: SingleChildScrollView( - padding: EdgeInsets.all(20), - child: Stack( + body: DefaultTabController( + length: 2, + child: SingleChildScrollView( + padding: EdgeInsets.all(20), + child: Container( + height: SizeConfig.realScreenHeight * .9, + width: SizeConfig.realScreenWidth, + child: Stack( + children: [ + TabBar( + indicatorColor: Colors.red, + tabs: [ + Padding( + padding: EdgeInsets.all(6), + child: + Text(TranslationBase.of(context).family)), + Padding( + padding: EdgeInsets.all(6), + child: + Text(TranslationBase.of(context).request)), + ], + ), + TabBarView( + children: [myFamilyDetails(), myFamilyRequest()], + ) + ], + ))))); + } + + Widget myFamilyDetails() { + return Padding( + padding: EdgeInsets.only(top: 40), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - TabBar( - tabs: [ - Tab(icon: Icon(Icons.directions_car)), - Tab(icon: Icon(Icons.directions_transit)), - ], - ), - TabBarView( - children: [ - Icon(Icons.directions_car), - Icon(Icons.directions_transit), - ], - ) + Expanded( + flex: 3, child: Text(TranslationBase.of(context).request)), + Expanded( + flex: 2, + child: Text( + TranslationBase.of(context).switchUser, + )), + Expanded( + flex: 1, + child: Text( + TranslationBase.of(context).deleteView, + )), ], - ))); + ), + FutureBuilder( + future: getFamilyFiles(), // async work + builder: (BuildContext context, + AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding( + padding: EdgeInsets.all(10), + child: Text('Loading....')); + default: + if (snapshot.hasError) + return Padding( + padding: EdgeInsets.all(10), + child: Text(snapshot.error)); + else + return Column( + children: snapshot + .data.getAllSharedRecordsByStatusList + .map((result) { + return Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + flex: 3, child: Text(result.patientName)), + Expanded(flex: 2, child: Icon(Icons.group)), + Expanded(flex: 1, child: Icon(Icons.delete)), + ], + )); + }).toList()); + } + }, + ) + ], + )); + } + + Widget myFamilyRequest() { + return Column( + children: [], + ); + } + + Future getFamilyFiles() { + return familyFileProvider.getSharedRecordByStatus(); } } diff --git a/lib/services/family_files/family_files_provider.dart b/lib/services/family_files/family_files_provider.dart new file mode 100644 index 00000000..25539040 --- /dev/null +++ b/lib/services/family_files/family_files_provider.dart @@ -0,0 +1,39 @@ +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordsByStatusReq.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:flutter/cupertino.dart'; + +// SharedPreferences sharedPref = new SharedPreferences(); +enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } +AppSharedPreferences sharedPref = new AppSharedPreferences(); + +const String GET_SHARED_RECORD_BY_STATUS = + '/Authentication.svc/REST/GetAllSharedRecordsByStatus'; + +class FamilyFilesProvider with ChangeNotifier { + bool isLogin = false; + bool isLoading = true; + dynamic authenticatedUser; + + Future getSharedRecordByStatus() async { + try { + dynamic localRes; + var request = GetAllSharedRecordsByStatusReq(); + request.status = 0; + await new BaseAppClient().post(GET_SHARED_RECORD_BY_STATUS, + onSuccess: (dynamic response, int statusCode) { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request.toJson()); + return Future.value( + GetAllSharedRecordsByStatusResponse.fromJson(localRes)); + } catch (error) { + print(error); + throw error; + } + } +} diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 71d1699f..3d37e371 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -194,6 +194,14 @@ class TranslationBase { String get family => localizedValues['family'][locale.languageCode]; String get myFamilyFiles => localizedValues['family-title'][locale.languageCode]; + String get request => localizedValues['request'][locale.languageCode]; + String get memberName => localizedValues['member-name'][locale.languageCode]; + String get switchUser => localizedValues['switch-login'][locale.languageCode]; + String get removeMember => + localizedValues['remove-membe'][locale.languageCode]; + String get allowView => localizedValues['allow-view'][locale.languageCode]; + String get rejectView => localizedValues['reject-view'][locale.languageCode]; + String get deleteView => localizedValues['delete-view'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index c9d281ce..b112af23 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -1,7 +1,9 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/service/client/base_app_client.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; import 'package:diplomaticquarterapp/routes.dart'; +import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/list/flexible_container.dart'; @@ -25,6 +27,7 @@ class _AppDrawerState extends State { } var sharedPref = new AppSharedPreferences(); + var familyFileProvider = FamilyFilesProvider(); AuthenticatedUser user; @override Widget build(BuildContext context) { @@ -54,52 +57,55 @@ class _AppDrawerState extends State { user != null ? Padding( padding: EdgeInsets.all(15), - child: Column(children: [ - Row( + child: Column( + mainAxisAlignment: + MainAxisAlignment.start, children: [ - Padding( - padding: - EdgeInsets.only(right: 5), - child: Icon( - Icons.account_circle, + Row( + children: [ + Padding( + padding: EdgeInsets.only( + right: 5), + child: Icon( + Icons.account_circle, + color: Colors.red, + )), + AppText( + user.firstName + + ' ' + + user.lastName, color: Colors.red, - )), - AppText( - user.firstName + - ' ' + - user.lastName, - color: Colors.red, - ) - ], - ), - Row(children: [ - Padding( - padding: EdgeInsets.only( - left: 30, top: 5), - child: Column( - children: [ - AppText( - 'File No:' + - user.patientID - .toString(), - color: Colors.red, - fontSize: SizeConfig - .textMultiplier * - 1.5, - ), - AppText( - user.bloodGroup != null - ? 'Blood Group: ' + - user.bloodGroup - : '', - fontSize: SizeConfig - .textMultiplier * - 1.5, - ), - ], - )) - ]) - ])) + ) + ], + ), + Row(children: [ + Padding( + padding: EdgeInsets.only( + left: 30, top: 5), + child: Column( + children: [ + AppText( + 'File No:' + + user.patientID + .toString(), + color: Colors.red, + fontSize: SizeConfig + .textMultiplier * + 1.5, + ), + AppText( + user.bloodGroup != null + ? 'Blood Group: ' + + user.bloodGroup + : '', + fontSize: SizeConfig + .textMultiplier * + 1.5, + ), + ], + )) + ]) + ])) : SizedBox(), ], ), @@ -107,7 +113,7 @@ class _AppDrawerState extends State { ), ), Column( - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.start, children: [ InkWell( child: DrawerItem( @@ -121,26 +127,15 @@ class _AppDrawerState extends State { ), user != null ? Column( + mainAxisAlignment: MainAxisAlignment.start, children: [ InkWell( - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - DrawerItem( - TranslationBase.of(context).family, - Icons.group, - textColor: Colors.red, - iconColor: Colors.red, - ), - Padding( - padding: EdgeInsets.only( - bottom: 10, right: 30), - child: Icon( - Icons.chevron_right, - color: Colors.red, - )) - ], + child: DrawerItem( + TranslationBase.of(context).family, + Icons.group, + textColor: Colors.red, + iconColor: Colors.red, + bottomLine: false, ), onTap: () { Navigator.of(context).pushNamed( @@ -148,6 +143,72 @@ class _AppDrawerState extends State { ); }, ), + FutureBuilder( + future: getFamilyFiles(), // async work + builder: (BuildContext context, + AsyncSnapshot< + GetAllSharedRecordsByStatusResponse> + snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding( + padding: EdgeInsets.all(10), + child: Text('Loading....')); + default: + if (snapshot.hasError) + return Padding( + padding: EdgeInsets.all(10), + child: Text(snapshot.error)); + else + return Container( + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + // <--- left side + color: Colors.grey[200], + width: 1.0, + ), + )), + child: Column( + mainAxisAlignment: + MainAxisAlignment.start, + mainAxisSize: + MainAxisSize.min, + children: snapshot.data + .getAllSharedRecordsByStatusList + .map((result) { + return Padding( + padding: + EdgeInsets.only( + bottom: 5), + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + Expanded( + child: Icon(Icons + .person), + ), + Expanded( + flex: 7, + child: Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + children: < + Widget>[ + Text(result + .patientName), + Text('File No:' + + result.iD.toString()), + ])), + ], + )); + }).toList())); + } + }, + ), InkWell( child: DrawerItem( TranslationBase.of(context) @@ -270,4 +331,8 @@ class _AppDrawerState extends State { ); } } + + Future getFamilyFiles() { + return familyFileProvider.getSharedRecordByStatus(); + } } diff --git a/lib/widgets/drawer/drawer_item_widget.dart b/lib/widgets/drawer/drawer_item_widget.dart index 0c913724..6fb245b7 100644 --- a/lib/widgets/drawer/drawer_item_widget.dart +++ b/lib/widgets/drawer/drawer_item_widget.dart @@ -11,11 +11,12 @@ class DrawerItem extends StatefulWidget { final IconData icon; final Color textColor; final Color iconColor; - + final bool bottomLine; DrawerItem(this.title, this.icon, {this.textColor = Colors.black, this.iconColor = Colors.black87, - this.subTitle = ''}); + this.subTitle = '', + this.bottomLine = true}); @override _DrawerItemState createState() => _DrawerItemState(); @@ -25,45 +26,48 @@ class _DrawerItemState extends State { @override Widget build(BuildContext context) { return Container( - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - // <--- left side - color: Colors.grey[200], - width: 1.0, - ), - )), - margin: EdgeInsets.only(left: 10, right: 10, top: 5), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(bottom: 30), - child: Icon( - widget.icon, - color: widget.iconColor, - size: SizeConfig.imageSizeMultiplier * 5, - )), - Padding( - padding: EdgeInsets.only(left: 5, right: 5), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Texts( - widget.title, - color: widget.textColor, - fontSize: SizeConfig.textMultiplier * 2.3, - ), - Texts( - widget.subTitle, - color: widget.textColor, - fontSize: SizeConfig.textMultiplier * 2.5, + decoration: widget.bottomLine == true + ? BoxDecoration( + border: Border( + bottom: BorderSide( + // <--- left side + color: Colors.grey[200], + width: 1.0, ), - ], - ), - ) - ], - ), - ); + )) + : BoxDecoration(), + child: Padding( + padding: EdgeInsets.all(10), + child: Row( + children: [ + Expanded( + flex: 1, + child: Icon( + widget.icon, + color: widget.iconColor, + size: SizeConfig.imageSizeMultiplier * 5, + )), + Expanded( + flex: 7, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Texts( + widget.title, + color: widget.textColor, + fontSize: SizeConfig.textMultiplier * 2.3, + ), + widget.subTitle != '' + ? Texts( + widget.subTitle, + color: widget.textColor, + fontSize: SizeConfig.textMultiplier * 2.5, + ) + : SizedBox(), + ])), + ], + ), + )); } }