From 82e23efd327e6e4f3082e6933cbe4e7424d36af6 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Wed, 2 Dec 2020 18:06:37 +0300 Subject: [PATCH 1/3] working on ereferral --- .../e_referral_service.dart | 104 +++++++++--------- lib/core/service/client/base_app_client.dart | 1 + .../E-Referral/search_for_referrals_page.dart | 62 ++++++++++- lib/pages/base/base_view.dart | 2 +- lib/pages/login/login.dart | 16 ++- pubspec.yaml | 3 + 6 files changed, 120 insertions(+), 68 deletions(-) diff --git a/lib/core/service/AlHabibMedicalService/e_referral_service.dart b/lib/core/service/AlHabibMedicalService/e_referral_service.dart index 6e8da51b..c951a968 100644 --- a/lib/core/service/AlHabibMedicalService/e_referral_service.dart +++ b/lib/core/service/AlHabibMedicalService/e_referral_service.dart @@ -11,14 +11,18 @@ import 'package:diplomaticquarterapp/core/service/base_service.dart'; class EReferralService extends BaseService { List _relationTypes = List(); + List get relationTypes => _relationTypes; List _allCities = List(); + List get allCities => _allCities; List _allProjects = List(); + List get allProjects => _allProjects; List _allReferral = List(); + List get allReferral => _allReferral; String _activationCode; String _logInTokenID; @@ -46,33 +50,30 @@ class EReferralService extends BaseService { Future getAllCities() async { await baseAppClient.post(GET_ALL_CITIES, onSuccess: (dynamic response, int statusCode) { - _allCities.clear(); - response['ListCities'].forEach((city) { - _allCities - .add(GetAllCitiesResponseModel.fromJson(city)); - }); - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: {}); + _allCities.clear(); + response['ListCities'].forEach((city) { + _allCities.add(GetAllCitiesResponseModel.fromJson(city)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: {}); } Future getAllProjects() async { await baseAppClient.post(GET_PROJECT, onSuccess: (dynamic response, int statusCode) { - _allProjects.clear(); - response['ListProject'].forEach((city) { - _allProjects - .add(GetAllProjectsResponseModel.fromJson(city)); - }); - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: {}); + _allProjects.clear(); + response['ListProject'].forEach((city) { + _allProjects.add(GetAllProjectsResponseModel.fromJson(city)); + }); + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: {}); } Future sendActivationCodeForEReferral( - SendActivationCodeForEReferralRequestModel sendActivationCodeForEReferralRequestModel) async { hasError = false; @@ -81,24 +82,21 @@ class EReferralService extends BaseService { print(response["VerificationCode"]); _activationCode = response["VerificationCode"]; _logInTokenID = response["LogInTokenID"]; - }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; }, body: sendActivationCodeForEReferralRequestModel.toJson()); } - - Future checkActivationCodeForEReferral( CheckActivationCodeForEReferralResponseModel checkActivationCodeForEReferralRequestModel) async { checkActivationCodeForEReferralRequestModel.isDentalAllowedBackend = false; - checkActivationCodeForEReferralRequestModel.logInTokenID= _logInTokenID; - hasError =false; + checkActivationCodeForEReferralRequestModel.logInTokenID = _logInTokenID; + hasError = false; await baseAppClient.post(CHECK_ACTIVATION_CODE_FOR_E_REFERRAL, onSuccess: (dynamic response, int statusCode) { - _isActivationCodeValid = true; + _isActivationCodeValid = true; }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; @@ -106,40 +104,36 @@ class EReferralService extends BaseService { } Future createEReferral( - CreateEReferralRequestModel createEReferralRequestModel - ) async { - hasError = false; - dynamic localRes; - await baseAppClient.post(CREATE_E_REFERRAL/*'Services/Patients.svc/REST/CreateEReferral'*/, + CreateEReferralRequestModel createEReferralRequestModel) async { + hasError = false; + dynamic localRes; + await baseAppClient.post( + CREATE_E_REFERRAL /*'Services/Patients.svc/REST/CreateEReferral'*/, onSuccess: (dynamic response, int statusCode) { - // TODO Waiting for fix service - localRes = response; - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: createEReferralRequestModel.toJson()); - return Future.value(localRes); + // TODO Waiting for fix service + localRes = response; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: createEReferralRequestModel.toJson()); + return Future.value(localRes); } Future getEReferrals( - SearchEReferralRequestModel searchEReferralRequestModel - ) async { + SearchEReferralRequestModel searchEReferralRequestModel) async { hasError = false; - // TODO return this code when the fix the server - // await baseAppClient.post(GET_E_REFERRALS, - // onSuccess: (dynamic response, int statusCode) { - // print("EEEEEE"); - // // TODO Waiting for fix service - // // ToDo change this one when you have data - // _allReferral.clear(); - // // response['ListCities'].forEach((city) { - // // _allReferral - // // .add(SearchEReferralResponseModel.fromJson(city)); - // // }); - // - // }, onFailure: (String error, int statusCode) { - // hasError = true; - // super.error = error; - // }, body: searchEReferralRequestModel.toJson()); + + dynamic localRes; + + await baseAppClient.post(GET_E_REFERRALS, + onSuccess: (dynamic response, int statusCode) { + print("EEEEEE"); + _allReferral.clear(); + localRes = response; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: searchEReferralRequestModel.toJson()); + return Future.value(localRes); } } diff --git a/lib/core/service/client/base_app_client.dart b/lib/core/service/client/base_app_client.dart index c96d6ec7..afa3bd05 100644 --- a/lib/core/service/client/base_app_client.dart +++ b/lib/core/service/client/base_app_client.dart @@ -54,6 +54,7 @@ class BaseAppClient { : SETUP_ID : SETUP_ID; } + body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; body['LanguageID'] = body.containsKey('LanguageID') diff --git a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart index 0b75705d..e74b6acf 100644 --- a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart +++ b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart @@ -1,9 +1,13 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_criteria_model.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_e_referral_request_model.dart'; +import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/e_referral_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart'; +import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart'; @@ -12,6 +16,7 @@ import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import '../../../locator.dart'; import 'New_E_Referral/new_e_referral_step_one_page.dart'; import 'dialogs/select_country_ingo_Dialog.dart'; import 'dialogs/select_search_criteria_dialog.dart'; @@ -28,6 +33,7 @@ class _SearchForReferralsPageState extends State { TextEditingController _mobileTextController = TextEditingController(); bool _isSubmitted = false; + AuthenticatedUser authUser; dynamic _selectedCountry = { "name": "Saudi Arabia", @@ -41,6 +47,13 @@ class _SearchForReferralsPageState extends State { SearchCriteriaModel selectedCriteria = SearchCriteriaModel( name: "Identification Number", nameAr: "رقم المحول", value: 1); + @override + void initState() { + authUser = new AuthenticatedUser(); + WidgetsBinding.instance.addPostFrameCallback((_) => getPatientData()); + super.initState(); + } + @override Widget build(BuildContext context) { return BaseView( @@ -123,9 +136,8 @@ class _SearchForReferralsPageState extends State { if ((model.state == ViewState.Idle && model.allReferral.length == 0)) Text("There's No Referral To deliver"), - if (( - model.state == ViewState.ErrorLocal)) - AppEmbeddedError( error:model.error), + if ((model.state == ViewState.ErrorLocal)) + AppEmbeddedError(error: model.error), NetworkBaseView( baseViewModel: model, child: ListView.builder( @@ -186,6 +198,50 @@ class _SearchForReferralsPageState extends State { ))); } + void getEreferrals() { + EReferralService _eReferralService = locator(); + + String mobileNumber; + String zipCode; + + if (authUser.mobileNumber.length > 9) { + mobileNumber = + authUser.mobileNumber.substring(1, authUser.mobileNumber.length); + } else { + mobileNumber = authUser.mobileNumber; + } + + if (authUser.outSA == 0) { + zipCode = "966"; + } else { + zipCode = "971"; + } + + SearchEReferralRequestModel searchEReferralRequestModel = + new SearchEReferralRequestModel( + patientMobileNumber: zipCode + mobileNumber, + identificationNo: authUser.patientIdentificationNo, + referralNumber: 0); + + _eReferralService + .getEReferrals(searchEReferralRequestModel) + .then((response) { + print(response['List_EReferrals']); + }).catchError(() {}); + } + + getPatientData() async { + AppSharedPreferences sharedPref = AppSharedPreferences(); + if (await sharedPref.getObject(USER_PROFILE) != null) { + var data = + AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); + setState(() { + authUser = data; + getEreferrals(); + }); + } + } + void confirmSelectCountryTypeDialog() { showDialog( context: context, diff --git a/lib/pages/base/base_view.dart b/lib/pages/base/base_view.dart index 5977e97e..38b70e23 100644 --- a/lib/pages/base/base_view.dart +++ b/lib/pages/base/base_view.dart @@ -63,4 +63,4 @@ class _BaseViewState extends State> { super.dispose(); } -} +} \ No newline at end of file diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index 25ad13bb..5a5a8b19 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -20,13 +20,11 @@ import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:smart_progress_bar/smart_progress_bar.dart'; class Login extends StatefulWidget { @override @@ -121,7 +119,9 @@ class _Login extends State { color: Colors.grey, height: 2, ), - SizedBox(height: 10,), + SizedBox( + height: 10, + ), Row( children: [ Expanded( @@ -208,15 +208,13 @@ class _Login extends State { okText: TranslationBase.of(context).confirm, cancelText: TranslationBase.of(context).cancel_nocaps, okFunction: () => { - ConfirmDialog.closeAlertDialog(context), + ConfirmDialog.closeAlertDialog(context), Navigator.of(context).pushNamed( REGISTER, ), - }, cancelFunction: () => {ConfirmDialog.closeAlertDialog(context)}); dialog.showAlertDialog(context); - }); // SMSOTP.showLoadingDialog(context, false), } @@ -243,9 +241,9 @@ class _Login extends State { this.authService.checkActivationCode(request, code).then((result) => { sharedPref.remove(FAMILY_FILE), result = CheckActivationCode.fromJson(result), - result.list.isFamily =false, - this.sharedPref.setObject(USER_PROFILE, result.list), - this.sharedPref.setObject(MAIN_USER, 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/pubspec.yaml b/pubspec.yaml index 66e08f5c..ce00b9fb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -158,6 +158,9 @@ dependencies: badges: ^1.1.4 + #Smartwatch Health Data Integration + fit_kit: ^1.1.2 + dev_dependencies: flutter_test: sdk: flutter From 65fbd7af8e03ce1286092451eccb803fc27427bc Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 3 Dec 2020 11:45:52 +0300 Subject: [PATCH 2/3] referral finalised --- lib/config/localized_values.dart | 17 +- .../get_ereferral_response_model.dart | 128 +++++++++++++ .../e_referral_service.dart | 20 ++- .../e_referral_view_model.dart | 10 +- .../E-Referral/referral_details.dart | 100 +++++++++++ .../E-Referral/search_for_referrals_page.dart | 168 +++++++++++++----- lib/uitl/date_uitl.dart | 15 ++ lib/uitl/translations_delegate_base.dart | 5 + 8 files changed, 414 insertions(+), 49 deletions(-) create mode 100644 lib/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart create mode 100644 lib/pages/AlHabibMedicalService/E-Referral/referral_details.dart diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index a5b22d8c..d51376c3 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -1163,5 +1163,20 @@ const Map localizedValues = { "en": "The referral request has been submitted successfully, you will be contacted ASAP to complete the process. Referral request no is ", "ar": " تم إرسال طلب الإحالة بنجاح ، وسيتم الاتصال بك في أسرع وقت ممكن لإكمال العملية. رقم طلب الإحالة" }, - + "referralStatus": { + "en": "Referral Status", + "ar": "حالة الإحالة" + }, + "referralDate": { + "en": "Referral Date", + "ar": "تاريخ الإحالة" + }, + "patientName": { + "en": "Patient Name", + "ar": "اسم المريض" + }, + "referralNumber": { + "en": "Referral Number", + "ar": "رقم الإحالة" + } }; diff --git a/lib/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart b/lib/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart new file mode 100644 index 00000000..e873261d --- /dev/null +++ b/lib/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart @@ -0,0 +1,128 @@ +class GetEReferralResponseModel { + dynamic acceptedBrachCode; + dynamic acceptedBranchName; + dynamic acceptedBranchNameAr; + Channel channel; + dynamic identityCardAttachment; + String identityNumber; + dynamic insuranceCardAttachment; + bool isInsuredPatient; + String otherRelationship; + String patientContactNo; + int patientId; + String patientName; + int preferredBranchCode; + String preferredBranchName; + String referralDate; + int referralNumber; + Channel relationshipType; + String requesterContactNo; + String requesterName; + String status; + String statusAr; + + GetEReferralResponseModel( + {this.acceptedBrachCode, + this.acceptedBranchName, + this.acceptedBranchNameAr, + this.channel, + this.identityCardAttachment, + this.identityNumber, + this.insuranceCardAttachment, + this.isInsuredPatient, + this.otherRelationship, + this.patientContactNo, + this.patientId, + this.patientName, + this.preferredBranchCode, + this.preferredBranchName, + this.referralDate, + this.referralNumber, + this.relationshipType, + this.requesterContactNo, + this.requesterName, + this.status, + this.statusAr}); + + GetEReferralResponseModel.fromJson(Map json) { + acceptedBrachCode = json['AcceptedBrachCode']; + acceptedBranchName = json['AcceptedBranchName']; + acceptedBranchNameAr = json['AcceptedBranchNameAr']; + channel = + json['Channel'] != null ? new Channel.fromJson(json['Channel']) : null; + identityCardAttachment = json['IdentityCardAttachment']; + identityNumber = json['IdentityNumber']; + insuranceCardAttachment = json['InsuranceCardAttachment']; + isInsuredPatient = json['IsInsuredPatient']; + otherRelationship = json['OtherRelationship']; + patientContactNo = json['PatientContactNo']; + patientId = json['PatientId']; + patientName = json['PatientName']; + preferredBranchCode = json['PreferredBranchCode']; + preferredBranchName = json['PreferredBranchName']; + referralDate = json['ReferralDate']; + referralNumber = json['ReferralNumber']; + relationshipType = json['RelationshipType'] != null + ? new Channel.fromJson(json['RelationshipType']) + : null; + requesterContactNo = json['RequesterContactNo']; + requesterName = json['RequesterName']; + status = json['Status']; + statusAr = json['StatusAr']; + } + + Map toJson() { + final Map data = new Map(); + data['AcceptedBrachCode'] = this.acceptedBrachCode; + data['AcceptedBranchName'] = this.acceptedBranchName; + data['AcceptedBranchNameAr'] = this.acceptedBranchNameAr; + if (this.channel != null) { + data['Channel'] = this.channel.toJson(); + } + data['IdentityCardAttachment'] = this.identityCardAttachment; + data['IdentityNumber'] = this.identityNumber; + data['InsuranceCardAttachment'] = this.insuranceCardAttachment; + data['IsInsuredPatient'] = this.isInsuredPatient; + data['OtherRelationship'] = this.otherRelationship; + data['PatientContactNo'] = this.patientContactNo; + data['PatientId'] = this.patientId; + data['PatientName'] = this.patientName; + data['PreferredBranchCode'] = this.preferredBranchCode; + data['PreferredBranchName'] = this.preferredBranchName; + data['ReferralDate'] = this.referralDate; + data['ReferralNumber'] = this.referralNumber; + if (this.relationshipType != null) { + data['RelationshipType'] = this.relationshipType.toJson(); + } + data['RequesterContactNo'] = this.requesterContactNo; + data['RequesterName'] = this.requesterName; + data['Status'] = this.status; + data['StatusAr'] = this.statusAr; + return data; + } +} + +class Channel { + int iD; + String text; + String textAr; + String textEn; + + Channel({this.iD, this.text, this.textAr, this.textEn}); + + Channel.fromJson(Map json) { + iD = json['ID']; + text = json['Text']; + textAr = json['Text_Ar']; + textEn = json['Text_En']; + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['Text'] = this.text; + data['Text_Ar'] = this.textAr; + data['Text_En'] = this.textEn; + return data; + } +} diff --git a/lib/core/service/AlHabibMedicalService/e_referral_service.dart b/lib/core/service/AlHabibMedicalService/e_referral_service.dart index c951a968..3670e965 100644 --- a/lib/core/service/AlHabibMedicalService/e_referral_service.dart +++ b/lib/core/service/AlHabibMedicalService/e_referral_service.dart @@ -122,9 +122,7 @@ class EReferralService extends BaseService { Future getEReferrals( SearchEReferralRequestModel searchEReferralRequestModel) async { hasError = false; - dynamic localRes; - await baseAppClient.post(GET_E_REFERRALS, onSuccess: (dynamic response, int statusCode) { print("EEEEEE"); @@ -136,4 +134,22 @@ class EReferralService extends BaseService { }, body: searchEReferralRequestModel.toJson()); return Future.value(localRes); } + + Future getEReferralsIfLogin(String mobileNo) async { + hasError = false; + dynamic localRes; + Map request = {}; + request['PatientMobileNumber'] = mobileNo; + await baseAppClient.post(GET_E_REFERRALS, + onSuccess: (dynamic response, int statusCode) { + print("EEEEEE"); + _allReferral.clear(); + localRes = response; + }, onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: request); + return Future.value(localRes); + } + } diff --git a/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart b/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart index 45adb6d3..047e06f2 100644 --- a/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart +++ b/lib/core/viewModels/all_habib_medical_services/e_referral_view_model.dart @@ -107,14 +107,20 @@ class EReferralViewModel extends BaseViewModel { return Future.value(localRes); } - getEReferrals(SearchEReferralRequestModel searchEReferralRequestModel) async { + Future getEReferrals(SearchEReferralRequestModel searchEReferralRequestModel) async { setState(ViewState.BusyLocal); - await _eReferralService.getEReferrals(searchEReferralRequestModel); + dynamic localRes; + await _eReferralService.getEReferrals(searchEReferralRequestModel).then((response) { + localRes = response; + }); if (_eReferralService.hasError) { error = _eReferralService.error; setState(ViewState.ErrorLocal); } else { setState(ViewState.Idle); } + + return Future.value(localRes); + } } diff --git a/lib/pages/AlHabibMedicalService/E-Referral/referral_details.dart b/lib/pages/AlHabibMedicalService/E-Referral/referral_details.dart new file mode 100644 index 00000000..925d20cd --- /dev/null +++ b/lib/pages/AlHabibMedicalService/E-Referral/referral_details.dart @@ -0,0 +1,100 @@ +import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; + +class ReferralDetails extends StatefulWidget { + GetEReferralResponseModel getEReferralResponseModel; + + ReferralDetails({@required this.getEReferralResponseModel}); + + @override + _ReferralDetailsState createState() => _ReferralDetailsState(); +} + +class _ReferralDetailsState extends State { + @override + Widget build(BuildContext context) { + return AppScaffold( + isShowDecPage: false, + isShowAppBar: true, + appBarTitle: "Referral Details", + body: Container( + margin: EdgeInsets.only(top: 20.0, left: 20.0, right: 20.0), + child: Table( + border: TableBorder.all(color: Colors.grey[600]), + children: [ + TableRow(children: [ + TableCell( + child: _getNormalText( + TranslationBase.of(context).referralStatus)), + TableCell( + child: + _getNormalText(widget.getEReferralResponseModel.status)), + ]), + TableRow(children: [ + TableCell( + child: + _getNormalText(TranslationBase.of(context).patientName)), + TableCell( + child: _getNormalText( + widget.getEReferralResponseModel.patientName)), + ]), + TableRow(children: [ + TableCell( + child: _getNormalText( + TranslationBase.of(context).referralNumber)), + TableCell( + child: _getNormalText(widget + .getEReferralResponseModel.referralNumber + .toString())), + ]), + TableRow(children: [ + TableCell( + child: _getNormalText( + TranslationBase.of(context).referralDate)), + TableCell( + child: _getNormalText(DateUtil.getMonthDayYearDateFormatted( + DateUtil.convertStringToDateNoTimeZone( + widget.getEReferralResponseModel.referralDate)))), + ]), + TableRow(children: [ + TableCell( + child: _getNormalText(TranslationBase.of(context).hospital)), + TableCell( + child: _getNormalText( + widget.getEReferralResponseModel.preferredBranchName)), + ]), + ], + ), + ), + ); + } + + _getNormalText(text) { + return Container( + color: Colors.white, + padding: EdgeInsets.only(top: 12.0, bottom: 12.0), + child: Text(text, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 14, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.grey[800])), + ); + } + + _getHeadingText(text) { + return Container( + padding: EdgeInsets.only(bottom: 10.0), + child: Text(text, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 26.0, + fontFamily: 'Open-Sans', + letterSpacing: 0.5, + color: Colors.white))); + } +} diff --git a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart index e74b6acf..e6aecf2c 100644 --- a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart +++ b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart @@ -1,18 +1,19 @@ import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; +import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/get_ereferral_response_model.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_criteria_model.dart'; import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/EReferral/search_e_referral_request_model.dart'; import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/e_referral_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/all_habib_medical_services/e_referral_view_model.dart'; import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/E-Referral/referral_details.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; -import 'package:diplomaticquarterapp/widgets/errors/app_embedded_error.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -35,6 +36,8 @@ class _SearchForReferralsPageState extends State { bool _isSubmitted = false; AuthenticatedUser authUser; + List allReferrals = List(); + dynamic _selectedCountry = { "name": "Saudi Arabia", "name_ar": "المملكة العربية السعودية", @@ -130,34 +133,93 @@ class _SearchForReferralsPageState extends State { ? "11" : _selectedCountry["code"], ), - SizedBox( - height: 12, - ), - if ((model.state == ViewState.Idle && - model.allReferral.length == 0)) - Text("There's No Referral To deliver"), - if ((model.state == ViewState.ErrorLocal)) - AppEmbeddedError(error: model.error), - NetworkBaseView( - baseViewModel: model, - child: ListView.builder( - shrinkWrap: true, - scrollDirection: Axis.vertical, - itemCount: model.allReferral == null - ? 0 - : model.allReferral.length < 3 - ? model.allReferral.length - : 3, - itemBuilder: (BuildContext context, int index) { - return Padding( - padding: EdgeInsets.symmetric(horizontal: 0.2), - child: Container( - child: Texts("TODO add referral info"), + allReferrals.length != 0 + ? Container( + child: ListView.builder( + shrinkWrap: true, + scrollDirection: Axis.vertical, + physics: ScrollPhysics(), + itemCount: allReferrals.length, + itemBuilder: + (BuildContext context, int index) { + return Container( + child: InkWell( + onTap: () { + navigateToReferralDetails( + allReferrals[index]); + }, + child: Card( + margin: EdgeInsets.only(bottom: 10.0), + color: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(10), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .status, + style: TextStyle( + fontSize: 16.0))), + Container( + margin: EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .patientName, + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + Container( + margin: EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .preferredBranchName, + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + Container( + margin: EdgeInsets.all(5.0), + child: Text( + DateUtil.getMonthDayYearDateFormatted( + DateUtil.convertStringToDateNoTimeZone( + allReferrals[ + index] + .referralDate)), + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + ], + ), + Container( + margin: EdgeInsets.only( + right: 20.0, left: 20.0), + child: Icon(Icons.arrow_forward, + size: 20.0, + color: Colors.grey[700]), + ), + ], + ), + ), + )); + }, ), - ); - }, - ), - ), + ) + : Container(), + SizedBox( + height: 70.0, + ) ], ), ), @@ -174,8 +236,10 @@ class _SearchForReferralsPageState extends State { onTap: () async { SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel( - patientMobileNumber: - _selectedCountry['code'] + _mobileTextController.text, + patientMobileNumber: _selectedCountry['code'] + .toString() + .replaceFirst("+", "") + + _mobileTextController.text, ); if (selectedCriteria.value == 1) { searchEReferralRequestModel.identificationNo = @@ -186,9 +250,17 @@ class _SearchForReferralsPageState extends State { int.parse(_searchTextController.text); searchEReferralRequestModel.identificationNo = ''; } - await model.getEReferrals(searchEReferralRequestModel); - setState(() { - _isSubmitted = true; + await model + .getEReferrals(searchEReferralRequestModel) + .then((response) { + print(response['List_EReferrals']); + allReferrals.clear(); + setState(() { + response['List_EReferrals'].forEach((data) { + allReferrals.add(GetEReferralResponseModel.fromJson(data)); + _isSubmitted = true; + }); + }); }); }, loading: model.state == ViewState.BusyLocal, @@ -198,7 +270,7 @@ class _SearchForReferralsPageState extends State { ))); } - void getEreferrals() { + void getEreferralsIsLogin() { EReferralService _eReferralService = locator(); String mobileNumber; @@ -217,16 +289,15 @@ class _SearchForReferralsPageState extends State { zipCode = "971"; } - SearchEReferralRequestModel searchEReferralRequestModel = - new SearchEReferralRequestModel( - patientMobileNumber: zipCode + mobileNumber, - identificationNo: authUser.patientIdentificationNo, - referralNumber: 0); - _eReferralService - .getEReferrals(searchEReferralRequestModel) + .getEReferralsIfLogin(zipCode + mobileNumber) .then((response) { - print(response['List_EReferrals']); + allReferrals.clear(); + setState(() { + response['List_EReferrals'].forEach((data) { + allReferrals.add(GetEReferralResponseModel.fromJson(data)); + }); + }); }).catchError(() {}); } @@ -237,7 +308,7 @@ class _SearchForReferralsPageState extends State { AuthenticatedUser.fromJson(await sharedPref.getObject(USER_PROFILE)); setState(() { authUser = data; - getEreferrals(); + getEreferralsIsLogin(); }); } } @@ -256,6 +327,15 @@ class _SearchForReferralsPageState extends State { ); } + navigateToReferralDetails( + GetEReferralResponseModel getEReferralResponseModel) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ReferralDetails( + getEReferralResponseModel: getEReferralResponseModel))); + } + String getCountryName() { if (_selectedCountry != null) return _selectedCountry["name"]; diff --git a/lib/uitl/date_uitl.dart b/lib/uitl/date_uitl.dart index 34c7bf87..0b2b45d9 100644 --- a/lib/uitl/date_uitl.dart +++ b/lib/uitl/date_uitl.dart @@ -19,6 +19,21 @@ class DateUtil { return DateTime.now(); } + static DateTime convertStringToDateNoTimeZone(String date) { + if (date != null) { + const start = "/Date("; + const end = ")/"; + final startIndex = date.indexOf(start); + final endIndex = date.indexOf(end, startIndex + start.length); + return DateTime.fromMillisecondsSinceEpoch( + int.parse( + date.substring(startIndex + start.length, endIndex), + ), + ); + } else + return DateTime.now(); + } + static String convertDateToString(DateTime date) { const start = "/Date("; const end = "+0300)/"; diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 48743fcd..aa05456c 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -899,6 +899,11 @@ String get fileno => localizedValues['fileno'][locale.languageCode]; String get appUpdate => localizedValues['appUpdate'][locale.languageCode]; String get ereferralSaveSuccess => localizedValues['ereferralSaveSuccess'][locale.languageCode]; + String get referralStatus => localizedValues['referralStatus'][locale.languageCode]; + String get referralDate => localizedValues['referralDate'][locale.languageCode]; + String get patientName => localizedValues['patientName'][locale.languageCode]; + String get referralNumber => localizedValues['referralNumber'][locale.languageCode]; + } From 4f1f7dcefdc317bac2e5b1310f1e7ff75f38dc6e Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Thu, 3 Dec 2020 13:38:45 +0300 Subject: [PATCH 3/3] ereferral implementation completed --- .../E-Referral/search_for_referrals_page.dart | 130 ++++++++++-------- 1 file changed, 72 insertions(+), 58 deletions(-) diff --git a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart index e6aecf2c..49c5dd60 100644 --- a/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart +++ b/lib/pages/AlHabibMedicalService/E-Referral/search_for_referrals_page.dart @@ -11,9 +11,11 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/balance/new_text_Field.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -135,6 +137,8 @@ class _SearchForReferralsPageState extends State { ), allReferrals.length != 0 ? Container( + transform: + Matrix4.translationValues(0.0, -40.0, 0.0), child: ListView.builder( shrinkWrap: true, scrollDirection: Axis.vertical, @@ -155,61 +159,68 @@ class _SearchForReferralsPageState extends State { borderRadius: BorderRadius.circular(10), ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Container( - margin: EdgeInsets.all(5.0), - child: Text( - allReferrals[index] - .status, - style: TextStyle( - fontSize: 16.0))), - Container( - margin: EdgeInsets.all(5.0), - child: Text( - allReferrals[index] - .patientName, - style: TextStyle( - fontSize: 16.0, - color: Colors - .grey[600]))), - Container( - margin: EdgeInsets.all(5.0), - child: Text( - allReferrals[index] - .preferredBranchName, - style: TextStyle( - fontSize: 16.0, - color: Colors - .grey[600]))), - Container( - margin: EdgeInsets.all(5.0), - child: Text( - DateUtil.getMonthDayYearDateFormatted( - DateUtil.convertStringToDateNoTimeZone( - allReferrals[ - index] - .referralDate)), - style: TextStyle( - fontSize: 16.0, - color: Colors - .grey[600]))), - ], - ), - Container( - margin: EdgeInsets.only( - right: 20.0, left: 20.0), - child: Icon(Icons.arrow_forward, - size: 20.0, - color: Colors.grey[700]), - ), - ], + child: Container( + margin: EdgeInsets.only( + left: 10.0, right: 10.0), + padding: EdgeInsets.all(5.0), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Container( + margin: + EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .status, + style: TextStyle( + fontSize: 16.0))), + Container( + margin: + EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .patientName, + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + Container( + margin: + EdgeInsets.all(5.0), + child: Text( + allReferrals[index] + .preferredBranchName, + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + Container( + margin: + EdgeInsets.all(5.0), + child: Text( + DateUtil.getMonthDayYearDateFormatted( + DateUtil.convertStringToDateNoTimeZone( + allReferrals[ + index] + .referralDate)), + style: TextStyle( + fontSize: 16.0, + color: Colors + .grey[600]))), + ], + ), + Container( + child: Icon(Icons.arrow_forward, + size: 20.0, + color: Colors.grey[700]), + ), + ], + ), ), ), )); @@ -234,6 +245,7 @@ class _SearchForReferralsPageState extends State { textColor: Colors.white, label: "Search", onTap: () async { + GifLoaderDialogUtils.showMyDialog(context); SearchEReferralRequestModel searchEReferralRequestModel = new SearchEReferralRequestModel( patientMobileNumber: _selectedCountry['code'] @@ -253,11 +265,13 @@ class _SearchForReferralsPageState extends State { await model .getEReferrals(searchEReferralRequestModel) .then((response) { + GifLoaderDialogUtils.hideDialog(context); print(response['List_EReferrals']); allReferrals.clear(); setState(() { response['List_EReferrals'].forEach((data) { - allReferrals.add(GetEReferralResponseModel.fromJson(data)); + allReferrals + .add(GetEReferralResponseModel.fromJson(data)); _isSubmitted = true; }); }); @@ -331,8 +345,8 @@ class _SearchForReferralsPageState extends State { GetEReferralResponseModel getEReferralResponseModel) { Navigator.push( context, - MaterialPageRoute( - builder: (context) => ReferralDetails( + FadePage( + page: ReferralDetails( getEReferralResponseModel: getEReferralResponseModel))); }