From a59a2d5ad316e74c6eae02881ff85e263388f9cc Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 27 Apr 2020 23:18:17 +0300 Subject: [PATCH 1/4] pharmacy web services --- lib/config/config.dart | 7 +- lib/models/medicine_model.dart | 0 lib/models/pharmacies_request_model.dart | 26 ++ lib/providers/medicine_provider.dart | 30 ++ lib/routes.dart | 2 +- lib/screens/dashboard_screen.dart | 393 +++++++++--------- .../medicine/medicine_search_screen.dart | 68 ++- 7 files changed, 322 insertions(+), 204 deletions(-) delete mode 100644 lib/models/medicine_model.dart create mode 100644 lib/models/pharmacies_request_model.dart diff --git a/lib/config/config.dart b/lib/config/config.dart index 2db3184a..de0a7b6a 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -1,5 +1,10 @@ const MAX_SMALL_SCREEN = 660; -const BASE_URL = 'https://hmgwebservices.com/Services/'; const ONLY_NUMBERS = "[0-9]"; const ONLY_LETTERS = "[a-zA-Z]"; const ONLY_DATE = "[0-9/]"; + + +//Ibrahim Albitar + +const BASE_URL = 'https://hmgwebservices.com/Services/'; +const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems"; \ No newline at end of file diff --git a/lib/models/medicine_model.dart b/lib/models/medicine_model.dart deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/models/pharmacies_request_model.dart b/lib/models/pharmacies_request_model.dart new file mode 100644 index 00000000..e44c9be5 --- /dev/null +++ b/lib/models/pharmacies_request_model.dart @@ -0,0 +1,26 @@ +//Ibrahim Albitar + +class PharmaciesRequestModel { + String PHR_itemName; + int LanguageID; + String stamp; + String IPAdress; + double VersionID; + String TokenID; + String SessionID; + bool IsLoginForDoctorApp; + bool PatientOutSA; + int PatientTypeID; + + PharmaciesRequestModel( + {this.PHR_itemName, + this.PatientTypeID, + this.LanguageID, + this.stamp, + this.IPAdress, + this.VersionID, + this.TokenID, + this.SessionID, + this.IsLoginForDoctorApp, + this.PatientOutSA}); +} diff --git a/lib/providers/medicine_provider.dart b/lib/providers/medicine_provider.dart index e69de29b..759f6749 100644 --- a/lib/providers/medicine_provider.dart +++ b/lib/providers/medicine_provider.dart @@ -0,0 +1,30 @@ +import 'dart:convert'; + +import 'package:doctor_app_flutter/client/app_client.dart'; +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/models/pharmacies_request_model.dart'; +import 'package:flutter/cupertino.dart'; + +class MedicineProvider with ChangeNotifier { + + Future getPharmacyList(PharmaciesRequestModel pharmacy) async { + try { + final response = await AppClient.post(PHARMACY_ITEMS_URL, + body: json.encode({ + "PHR_itemName": pharmacy.PHR_itemName, + "LanguageID": pharmacy.LanguageID, + "stamp": pharmacy.stamp, + "IPAdress": pharmacy.IPAdress, + "VersionID": pharmacy.VersionID, + "TokenID": pharmacy.TokenID, + "SessionID": pharmacy.SessionID, + "IsLoginForDoctorApp": pharmacy.IsLoginForDoctorApp, + "PatientOutSA": pharmacy.PatientOutSA, + "PatientTypeID": pharmacy.PatientTypeID + })); + return Future.value(json.decode(response.body)); + } catch (error) { + throw error; + } + } +} diff --git a/lib/routes.dart b/lib/routes.dart index be11ee52..5148f1e6 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -30,7 +30,7 @@ const String PATIENTS = 'patients/patients'; const String PATIENTS_PROFILE = 'patients/patients-profile'; const String BLOOD_BANK = 'blood-bank'; const String DOCTOR_REPLY = 'doctor-reply'; -const String MEDICINE_SEARCH = 'medicine-search'; +const String MEDICINE_SEARCH = 'medicine/medicine-search'; const String SETTINGS = 'settings'; var routes = { diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b6502760..55cfcefd 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -23,217 +23,216 @@ class _DashboardScreenState extends State { @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle:'Home', - body: Container( - + appBarTitle: 'Home', + body: Container( child: Column( - children: [ - Expanded( - flex: 1, - child: Container( - margin: EdgeInsets.all(10), - child: AppText( - "Today's Statistics", - fontWeight: FontWeight.bold, - ), - alignment: Alignment.centerLeft, - )), - Expanded( - flex: 3, - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Expanded( - flex: 2, - child: RoundedContainer(child:CircularPercentIndicator( - radius: 90.0, - animation: true, - animationDuration: 1200, - lineWidth: 7.0, - percent: .75, - center: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - AppText( - "38", - fontWeight: FontWeight.bold, - fontSize: SizeConfig.textMultiplier * 4 - ), - AppText( - "Out-Patients", - fontWeight: FontWeight.normal, - fontSize: SizeConfig.textMultiplier * 1.5, - color: Colors.grey[800] - ), - ], - ), - circularStrokeCap: CircularStrokeCap.butt, - backgroundColor: Colors.blueGrey[100], - progressColor: Colors.red, - ))), - Expanded( - flex: 2, - child: Row( - children: [ - Expanded( - flex: 1, - child: Column( - crossAxisAlignment: - CrossAxisAlignment.stretch, - children: [ - Expanded( - child: DashboardItemTexts( - "Arrived", - "23", - )), - Expanded( - child: DashboardItemTexts( - "Not Arrived", - "23", - )), - ], - )), - Expanded( - child: Column( + children: [ + Expanded( + flex: 1, + child: Container( + margin: EdgeInsets.all(10), + child: AppText( + "Today's Statistics", + fontWeight: FontWeight.bold, + ), + alignment: Alignment.centerLeft, + )), + Expanded( + flex: 3, + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + flex: 2, + child: RoundedContainer( + child: CircularPercentIndicator( + radius: 90.0, + animation: true, + animationDuration: 1200, + lineWidth: 7.0, + percent: .75, + center: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AppText("38", + fontWeight: FontWeight.bold, + fontSize: SizeConfig.textMultiplier * 4), + AppText("Out-Patients", + fontWeight: FontWeight.normal, + fontSize: SizeConfig.textMultiplier * 1.5, + color: Colors.grey[800]), + ], + ), + circularStrokeCap: CircularStrokeCap.butt, + backgroundColor: Colors.blueGrey[100], + progressColor: Colors.red, + ))), + Expanded( + flex: 2, + child: Row( + children: [ + Expanded( + flex: 1, + child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Expanded( child: DashboardItemTexts( - "ER", + "Arrived", "23", )), Expanded( child: DashboardItemTexts( - "Walk-in", + "Not Arrived", "23", )), ], )), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + child: DashboardItemTexts( + "ER", + "23", + )), + Expanded( + child: DashboardItemTexts( + "Walk-in", + "23", + )), ], - )) - ])), - Expanded( - flex: 2, - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "08", - "Lab Result", - backgroundColor: Colors.red, - )), - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "10", - "Radiology", - backgroundColor: Colors.red, - )), - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "05", - "Referral", - backgroundColor: Colors.red, - )), - ], - )), - Expanded( - flex: 2, - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "23", - "In-Patient", - showBorder: true, - )), - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "23", - "Operations", - showBorder: true, - )), - ], - )), - Expanded( - flex: 1, - child: Container( - margin: EdgeInsets.all(10), - child: AppText( - "Patient Services", - fontWeight: FontWeight.bold, - ), - alignment: Alignment.centerLeft, - )), - Expanded( - flex: 2, - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Expanded( - flex: 2, - child: InkWell( child: DashboardItemIconText( - DoctorApp.home_icon, - "", - "Search Patient", - showBorder: false, - backgroundColor: Colors.green[200], - ), - - onTap: () { - Navigator.of(context).pushNamed(PATIENT_SEARCH); - }, - - )), - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "", - "Out Patient", - showBorder: false, - backgroundColor: Colors.deepPurple[300], - )), - ], - )), - Expanded( - flex: 2, - child: Row( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "", - "In Patient", - showBorder: false, - backgroundColor: Colors.blueGrey[900], - )), - Expanded( - flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "", - "Discharge Patient", - showBorder: false, - backgroundColor: Colors.brown[400], - )), - ], - )), - ], - ))); + )), + ], + )) + ])), + Expanded( + flex: 2, + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "08", + "Lab Result", + backgroundColor: Colors.red, + )), + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "10", + "Radiology", + backgroundColor: Colors.red, + )), + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "05", + "Referral", + backgroundColor: Colors.red, + )), + ], + )), + Expanded( + flex: 2, + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "23", + "In-Patient", + showBorder: true, + )), + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "23", + "Operations", + showBorder: true, + )), + ], + )), + Expanded( + flex: 1, + child: Container( + margin: EdgeInsets.all(10), + child: AppText( + "Patient Services", + fontWeight: FontWeight.bold, + ), + alignment: Alignment.centerLeft, + )), + Expanded( + flex: 2, + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + flex: 2, + child: InkWell( + child: DashboardItemIconText( + DoctorApp.home_icon, + "", + "Search Patient", + showBorder: false, + backgroundColor: Colors.green[200], + ), + onTap: () { + Navigator.of(context).pushNamed(PATIENT_SEARCH); + }, + )), + Expanded( + flex: 2, + child: InkWell( + child: DashboardItemIconText( + DoctorApp.home_icon, + "", + "Out Patient", + showBorder: false, + backgroundColor: Colors.deepPurple[300], + ), + onTap: () { + Navigator.of(context).pushNamed(MEDICINE_SEARCH); + }, + )), + ], + )), + Expanded( + flex: 2, + child: Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "", + "In Patient", + showBorder: false, + backgroundColor: Colors.blueGrey[900], + )), + Expanded( + flex: 2, + child: new DashboardItemIconText( + DoctorApp.home_icon, + "", + "Discharge Patient", + showBorder: false, + backgroundColor: Colors.brown[400], + )), + ], + )), + ], + ))); } } diff --git a/lib/screens/medicine/medicine_search_screen.dart b/lib/screens/medicine/medicine_search_screen.dart index 11e4d6ea..79ae48ff 100644 --- a/lib/screens/medicine/medicine_search_screen.dart +++ b/lib/screens/medicine/medicine_search_screen.dart @@ -1,9 +1,67 @@ +import 'package:doctor_app_flutter/models/pharmacies_request_model.dart'; +import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; -class MedicineSearchScreen extends StatelessWidget { +import 'package:provider/provider.dart'; + +DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + +class MedicineSearchScreen extends StatefulWidget with DrAppToastMsg { + MedicineSearchScreen({this.changeLoadingStata}); + final Function changeLoadingStata; + + @override + _MedicineSearchState createState() => _MedicineSearchState(); +} + +class _MedicineSearchState extends State { + var _medicineModel = PharmaciesRequestModel( + IsLoginForDoctorApp: true, + PHR_itemName: "Panadol", + PatientOutSA: false, + PatientTypeID: 1, + LanguageID: 2, + IPAdress: "11.11.11.11", + VersionID: 1.2, + TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", + stamp: "2020-04-23T21:01:21.492Z", + SessionID: "e29zoooEJ4"); @override Widget build(BuildContext context) { - return Container( - - ); + return ChangeNotifierProvider( + create: (context) => MedicineProvider(), //change builder to create + child: Consumer( + builder: (context, provider, child) => AppScaffold( + appBarTitle: "Search Medicine", + body: RaisedButton( + onPressed: () { + MedicineProvider medicineProvider = + Provider.of(context); + searchMedicine(context, medicineProvider); + }, + )))); + } + + searchMedicine( + context, MedicineProvider medicineProvider) { + + medicineProvider.getPharmacyList(_medicineModel).then((res) { + + if (res['MessageStatus'] == 1) { + print("ListPharmcy " + res['ListPharmcy'].toString()); + + //Navigator.of(context).pushNamed(); + } else { + // handel error + // widget.showCenterShortLoadingToast("watting"); + //helpers.showErrorToast(res['ErrorEndUserMessage']); + } + // Navigator.of(context).pushNamed(HOME); + }).catchError((err) { + print('$err'); + //helpers.showErrorToast(); + }); } -} \ No newline at end of file +} From c30fcbc2b5147b791accdb9e85b3a34fcdea842d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Apr 2020 01:35:48 +0300 Subject: [PATCH 2/4] pharmacies list --- .gitignore | 2 + .vscode/settings.json | 2 +- lib/config/config.dart | 12 +++- lib/models/pharmacies_List_request_model.dart | 46 +++++++++++++ ...rt => pharmacies_items_request_model.dart} | 13 ++-- lib/providers/medicine_provider.dart | 30 ++++++++- lib/routes.dart | 6 +- .../medicine/medicine_search_screen.dart | 11 ++-- .../medicine/pharmacies_list_screen.dart | 64 +++++++++++++++++++ 9 files changed, 170 insertions(+), 16 deletions(-) create mode 100644 lib/models/pharmacies_List_request_model.dart rename lib/models/{pharmacies_request_model.dart => pharmacies_items_request_model.dart} (74%) create mode 100644 lib/screens/medicine/pharmacies_list_screen.dart diff --git a/.gitignore b/.gitignore index c8e6bcd9..6b5418ff 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ lib/generated_plugin_registrant.dart !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages .vscode/settings.json .vscode/settings.json +.vscode/settings.json +.vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json index a1b95030..501a6f1f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "commentBox.styles": { "defaultStyle": { - "commentStartToken": "/* \n *@author: Elham Rababah \n *@Date:13/4/2020 \n *@param: \n *@return:\n *@desc: ", + "commentStartToken": "/* \n *@author: ibrahim albitar \n *@Date:27/4/2020 \n *@param: \n *@return:\n *@desc: ", "commentEndToken": "\n */", "leftEdgeToken": " * ", "rightEdgeToken": "", diff --git a/lib/config/config.dart b/lib/config/config.dart index de0a7b6a..5b187a1b 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -4,7 +4,13 @@ const ONLY_LETTERS = "[a-zA-Z]"; const ONLY_DATE = "[0-9/]"; -//Ibrahim Albitar - +/* + *@author: ibrahim albitar + *@Date:27/4/2020 + *@param: + *@return: + *@desc: + */ const BASE_URL = 'https://hmgwebservices.com/Services/'; -const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems"; \ No newline at end of file +const PHARMACY_ITEMS_URL = "Lists.svc/REST/GetPharmcyItems"; +const PHARMACY_LIST_URL = "Patients.svc/REST/GetPharmcyList"; \ No newline at end of file diff --git a/lib/models/pharmacies_List_request_model.dart b/lib/models/pharmacies_List_request_model.dart new file mode 100644 index 00000000..fea73f92 --- /dev/null +++ b/lib/models/pharmacies_List_request_model.dart @@ -0,0 +1,46 @@ +/* + *@author: Ibrahim Albitar + *@Date:27/4/2020 + *@param: + *@return: + *@desc: + */ +class PharmaciesListRequestModel { + +// {"ItemID":90417, +// "LanguageID":2, +// "stamp":"2020-03-08T07:49:14.067Z", +// "IPAdress":"11.11.11.11", +// "VersionID":1.2, +// "Channel":9, +// "TokenID":"PpIU/OWJ40yxMHQtCXL0DA==", +// "SessionID":"dz1hqVj1Fk", +// "IsLoginForDoctorApp":true, +// "PatientOutSA":false, +// "PatientTypeID":1} + + int ItemID; + int LanguageID; + String stamp; + String IPAdress; + double VersionID; + String TokenID; + String SessionID; + bool IsLoginForDoctorApp; + bool PatientOutSA; + int PatientTypeID; + int Channel; + + PharmaciesListRequestModel( + {this.ItemID, + this.PatientTypeID, + this.LanguageID, + this.stamp, + this.IPAdress, + this.VersionID, + this.TokenID, + this.SessionID, + this.IsLoginForDoctorApp, + this.Channel, + this.PatientOutSA}); +} diff --git a/lib/models/pharmacies_request_model.dart b/lib/models/pharmacies_items_request_model.dart similarity index 74% rename from lib/models/pharmacies_request_model.dart rename to lib/models/pharmacies_items_request_model.dart index e44c9be5..0e1dcaec 100644 --- a/lib/models/pharmacies_request_model.dart +++ b/lib/models/pharmacies_items_request_model.dart @@ -1,6 +1,11 @@ -//Ibrahim Albitar - -class PharmaciesRequestModel { +/* + *@author: Ibrahim Albitar + *@Date:27/4/2020 + *@param: + *@return: + *@desc: + */ +class PharmaciesItemsRequestModel { String PHR_itemName; int LanguageID; String stamp; @@ -12,7 +17,7 @@ class PharmaciesRequestModel { bool PatientOutSA; int PatientTypeID; - PharmaciesRequestModel( + PharmaciesItemsRequestModel( {this.PHR_itemName, this.PatientTypeID, this.LanguageID, diff --git a/lib/providers/medicine_provider.dart b/lib/providers/medicine_provider.dart index 759f6749..1c5e582a 100644 --- a/lib/providers/medicine_provider.dart +++ b/lib/providers/medicine_provider.dart @@ -2,16 +2,39 @@ import 'dart:convert'; import 'package:doctor_app_flutter/client/app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/models/pharmacies_request_model.dart'; +import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart'; +import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; import 'package:flutter/cupertino.dart'; class MedicineProvider with ChangeNotifier { - Future getPharmacyList(PharmaciesRequestModel pharmacy) async { + Future getMedicineItem(PharmaciesItemsRequestModel medicine) async { try { final response = await AppClient.post(PHARMACY_ITEMS_URL, body: json.encode({ - "PHR_itemName": pharmacy.PHR_itemName, + "PHR_itemName": medicine.PHR_itemName, + "LanguageID": medicine.LanguageID, + "stamp": medicine.stamp, + "IPAdress": medicine.IPAdress, + "VersionID": medicine.VersionID, + "TokenID": medicine.TokenID, + "SessionID": medicine.SessionID, + "IsLoginForDoctorApp": medicine.IsLoginForDoctorApp, + "PatientOutSA": medicine.PatientOutSA, + "PatientTypeID": medicine.PatientTypeID + })); + return Future.value(json.decode(response.body)); + } catch (error) { + throw error; + } + } + + + Future getPharmaciesList(PharmaciesListRequestModel pharmacy) async { + try { + final response = await AppClient.post(PHARMACY_LIST_URL, + body: json.encode({ + "ItemID": pharmacy.ItemID, "LanguageID": pharmacy.LanguageID, "stamp": pharmacy.stamp, "IPAdress": pharmacy.IPAdress, @@ -20,6 +43,7 @@ class MedicineProvider with ChangeNotifier { "SessionID": pharmacy.SessionID, "IsLoginForDoctorApp": pharmacy.IsLoginForDoctorApp, "PatientOutSA": pharmacy.PatientOutSA, + "Channel": pharmacy.Channel, "PatientTypeID": pharmacy.PatientTypeID })); return Future.value(json.decode(response.body)); diff --git a/lib/routes.dart b/lib/routes.dart index 5148f1e6..75211a7c 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -1,4 +1,6 @@ +import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart'; + import './screens/QR_reader_screen.dart'; import './screens/auth/change_password_screen.dart'; import './screens/auth/login_screen.dart'; @@ -31,6 +33,7 @@ const String PATIENTS_PROFILE = 'patients/patients-profile'; const String BLOOD_BANK = 'blood-bank'; const String DOCTOR_REPLY = 'doctor-reply'; const String MEDICINE_SEARCH = 'medicine/medicine-search'; +const String PHARMACIES_LIST = 'medicine/pharmacies-list'; const String SETTINGS = 'settings'; var routes = { @@ -48,5 +51,6 @@ var routes = { CHANGE_PASSWORD: (_) => ChangePasswordScreen(), VERIFY_ACCOUNT: (_) => VerifyAccountScreen(), VERIFICATION_METHODS:(_)=> VerificationMethodsScreen(), - PATIENTS_PROFILE:(_)=> PatientProfileScreen() + PATIENTS_PROFILE:(_)=> PatientProfileScreen(), + PHARMACIES_LIST: (_) => PharmaciesListScreen() }; diff --git a/lib/screens/medicine/medicine_search_screen.dart b/lib/screens/medicine/medicine_search_screen.dart index 79ae48ff..a8c15377 100644 --- a/lib/screens/medicine/medicine_search_screen.dart +++ b/lib/screens/medicine/medicine_search_screen.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/models/pharmacies_request_model.dart'; +import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; @@ -6,6 +6,8 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../routes.dart'; + DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); class MedicineSearchScreen extends StatefulWidget with DrAppToastMsg { @@ -17,7 +19,7 @@ class MedicineSearchScreen extends StatefulWidget with DrAppToastMsg { } class _MedicineSearchState extends State { - var _medicineModel = PharmaciesRequestModel( + var _medicineModel = PharmaciesItemsRequestModel( IsLoginForDoctorApp: true, PHR_itemName: "Panadol", PatientOutSA: false, @@ -40,6 +42,7 @@ class _MedicineSearchState extends State { MedicineProvider medicineProvider = Provider.of(context); searchMedicine(context, medicineProvider); + Navigator.of(context).pushNamed(PHARMACIES_LIST); }, )))); } @@ -47,10 +50,10 @@ class _MedicineSearchState extends State { searchMedicine( context, MedicineProvider medicineProvider) { - medicineProvider.getPharmacyList(_medicineModel).then((res) { + medicineProvider.getMedicineItem(_medicineModel).then((res) { if (res['MessageStatus'] == 1) { - print("ListPharmcy " + res['ListPharmcy'].toString()); + print("ListMedicine " + res['ListPharmcy'].toString()); //Navigator.of(context).pushNamed(); } else { diff --git a/lib/screens/medicine/pharmacies_list_screen.dart b/lib/screens/medicine/pharmacies_list_screen.dart new file mode 100644 index 00000000..7a889d98 --- /dev/null +++ b/lib/screens/medicine/pharmacies_list_screen.dart @@ -0,0 +1,64 @@ +import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart'; +import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + +class PharmaciesListScreen extends StatefulWidget { + @override + _PharmaciesListState createState() => _PharmaciesListState(); +} + +class _PharmaciesListState extends State { + var _pharmaciesModel = PharmaciesListRequestModel( + ItemID: 90417, + IsLoginForDoctorApp: true, + PatientOutSA: false, + PatientTypeID: 1, + LanguageID: 2, + IPAdress: "11.11.11.11", + VersionID: 1.2, + TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", + stamp: "2020-04-23T21:01:21.492Z", + Channel: 9, + SessionID: "e29zoooEJ4"); + + @override + Widget build(BuildContext context) { + return ChangeNotifierProvider( + create: (context) => MedicineProvider(), //change builder to create + child: Consumer( + builder: (context, provider, child) => AppScaffold( + appBarTitle: "Pharmacies List", + body: RaisedButton( + onPressed: () { + MedicineProvider medicineProvider = + Provider.of(context); + pharmaciesList(context, medicineProvider); + }, + )))); + } + + pharmaciesList(context, MedicineProvider medicineProvider) { + medicineProvider.getPharmaciesList(_pharmaciesModel).then((res) { + print(res.toString()); + if (res['MessageStatus'] == 1) { + print("ListPharmcy " + res['PharmList'].toString()); + + //Navigator.of(context).pushNamed(); + } else { + // handel error + // widget.showCenterShortLoadingToast("watting"); + //helpers.showErrorToast(res['ErrorEndUserMessage']); + print(res['MessageStatus'].toString()); + } + // Navigator.of(context).pushNamed(HOME); + }).catchError((err) { + print('$err'); + //helpers.showErrorToast(); + }); + } +} From 22a21faff75cc17567910a15c97c384b180aaa59 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 30 Apr 2020 01:30:23 +0300 Subject: [PATCH 3/4] pharmacies screen --- lib/routes.dart | 2 +- .../medicine/medicine_search_screen.dart | 125 +++++++++++++++--- .../medicine/pharmacies_list_screen.dart | 108 +++++++++++++-- .../medicine/medicine_item_widget.dart | 51 +++++++ 4 files changed, 258 insertions(+), 28 deletions(-) create mode 100644 lib/widgets/medicine/medicine_item_widget.dart diff --git a/lib/routes.dart b/lib/routes.dart index 75211a7c..d3c00c70 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -52,5 +52,5 @@ var routes = { VERIFY_ACCOUNT: (_) => VerifyAccountScreen(), VERIFICATION_METHODS:(_)=> VerificationMethodsScreen(), PATIENTS_PROFILE:(_)=> PatientProfileScreen(), - PHARMACIES_LIST: (_) => PharmaciesListScreen() + PHARMACIES_LIST: (_) => PharmaciesListScreen(itemID: null,) }; diff --git a/lib/screens/medicine/medicine_search_screen.dart b/lib/screens/medicine/medicine_search_screen.dart index a8c15377..b427982a 100644 --- a/lib/screens/medicine/medicine_search_screen.dart +++ b/lib/screens/medicine/medicine_search_screen.dart @@ -1,12 +1,20 @@ +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/widgets/medicine/medicine_item_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; +import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; - import '../../routes.dart'; +import '../../util/extenstions.dart'; DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); @@ -19,9 +27,12 @@ class MedicineSearchScreen extends StatefulWidget with DrAppToastMsg { } class _MedicineSearchState extends State { + var data; + final myController = TextEditingController(); + Helpers helpers = new Helpers(); + var _medicineModel = PharmaciesItemsRequestModel( IsLoginForDoctorApp: true, - PHR_itemName: "Panadol", PatientOutSA: false, PatientTypeID: 1, LanguageID: 2, @@ -30,6 +41,7 @@ class _MedicineSearchState extends State { TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", stamp: "2020-04-23T21:01:21.492Z", SessionID: "e29zoooEJ4"); + @override Widget build(BuildContext context) { return ChangeNotifierProvider( @@ -37,34 +49,113 @@ class _MedicineSearchState extends State { child: Consumer( builder: (context, provider, child) => AppScaffold( appBarTitle: "Search Medicine", - body: RaisedButton( - onPressed: () { - MedicineProvider medicineProvider = - Provider.of(context); - searchMedicine(context, medicineProvider); - Navigator.of(context).pushNamed(PHARMACIES_LIST); - }, + body: Column( + children: [ + RoundedContainer( + child: Column( + children: [ + Icon( + Icons.search, + size: SizeConfig.imageSizeMultiplier * 15, + ), + Padding( + padding: EdgeInsets.only( + bottom: SizeConfig.heightMultiplier * 5, + right: SizeConfig.heightMultiplier * 3, + left: SizeConfig.heightMultiplier * 3, + top: SizeConfig.heightMultiplier * 3), + child: AppTextFormField( + hintText: 'Type Medicine Name Here..', + controller: myController, + onSaved: (value) {}, + // validator: (value) { + // return TextValidator().validateName(value); + // }, + inputFormatter: ONLY_LETTERS), + ) + ], + )), + Container( + margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + title: "Search", + color: Color(0xff58434F), + onPressed: () { + MedicineProvider medicineProvider = + Provider.of(context); + searchMedicine(context, medicineProvider); + }, + ), + ], + ), + ), + Expanded( + child: Container( + width: SizeConfig.screenWidth * 0.80, + child: ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: data == null ? 0 : data.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: data[index]["ItemDescription"], + ), + onTap: () { + //Navigator.of(context).pushNamed(PHARMACIES_LIST); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PharmaciesListScreen( + itemID: data[index]["ItemID"]), + ), + ); + }, + ); + }, + ), + ), + ), + ], )))); } - searchMedicine( - context, MedicineProvider medicineProvider) { + searchMedicine(context, MedicineProvider medicineProvider) { + FocusScope.of(context).unfocus(); + if (myController.text.isNullOrEmpty()) { + this.setState(() { + data = null; + }); + helpers.showErrorToast("Type Medicine Name"); + return; + } + _medicineModel.PHR_itemName = myController.text; medicineProvider.getMedicineItem(_medicineModel).then((res) { - if (res['MessageStatus'] == 1) { print("ListMedicine " + res['ListPharmcy'].toString()); - - //Navigator.of(context).pushNamed(); + this.setState(() { + data = res['ListPharmcy']; + }); + //Navigator.of(context).pushNamed(PHARMACIES_LIST); } else { // handel error - // widget.showCenterShortLoadingToast("watting"); - //helpers.showErrorToast(res['ErrorEndUserMessage']); + this.setState(() { + data = null; + }); + widget.showCenterShortLoadingToast("watting"); + helpers.showErrorToast(res['ErrorEndUserMessage']); } // Navigator.of(context).pushNamed(HOME); }).catchError((err) { print('$err'); - //helpers.showErrorToast(); + this.setState(() { + data = null; + }); + helpers.showErrorToast(); }); } } diff --git a/lib/screens/medicine/pharmacies_list_screen.dart b/lib/screens/medicine/pharmacies_list_screen.dart index 7a889d98..9227c771 100644 --- a/lib/screens/medicine/pharmacies_list_screen.dart +++ b/lib/screens/medicine/pharmacies_list_screen.dart @@ -1,20 +1,32 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; +import 'package:doctor_app_flutter/widgets/medicine/medicine_item_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); class PharmaciesListScreen extends StatefulWidget { + final int itemID; + + // In the constructor, require a item id. + PharmaciesListScreen({Key key, @required this.itemID}) : super(key: key); + @override _PharmaciesListState createState() => _PharmaciesListState(); } class _PharmaciesListState extends State { + var data; + Helpers helpers = new Helpers(); + var _pharmaciesModel = PharmaciesListRequestModel( - ItemID: 90417, IsLoginForDoctorApp: true, PatientOutSA: false, PatientTypeID: 1, @@ -29,24 +41,100 @@ class _PharmaciesListState extends State { @override Widget build(BuildContext context) { return ChangeNotifierProvider( - create: (context) => MedicineProvider(), //change builder to create + create: (context) => MedicineProvider(), + //change builder to create child: Consumer( builder: (context, provider, child) => AppScaffold( appBarTitle: "Pharmacies List", - body: RaisedButton( - onPressed: () { - MedicineProvider medicineProvider = - Provider.of(context); - pharmaciesList(context, medicineProvider); - }, - )))); + body: Column( + children: [ + RoundedContainer( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + AppText( + "Description", + margin: 10, + fontWeight: FontWeight.bold, + ), + AppText( + "ItemDescription", + marginLeft: 10, + marginTop: 0, + marginRight: 10, + marginBottom: 10, + ), + AppText( + "Price", + margin: 10, + fontWeight: FontWeight.bold, + ), + AppText("SellingPrice", + marginLeft: 10, + marginTop: 0, + marginRight: 10, + marginBottom: 10, + ), + ], + )), + Container( + margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), + child: Align( + alignment: Alignment.centerLeft, + child: AppText( + "You can Find it in", + fontWeight: FontWeight.bold, + fontSize: SizeConfig.textMultiplier * 3, + ))), + Expanded( + child: Container( + width: SizeConfig.screenWidth * 0.80, + child: ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: data == null ? 0 : data.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: data[index]["ItemDescription"], + ), + onTap: () { + //Navigator.of(context).pushNamed(PHARMACIES_LIST); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PharmaciesListScreen( + itemID: data[index]["ItemID"]), + ), + ); + }, + ); + }, + ), + ), + ), + ], + ) + // RaisedButton( + // onPressed: () { + // + // }, + // ) + ))); } - pharmaciesList(context, MedicineProvider medicineProvider) { + pharmaciesList(context) { + _pharmaciesModel.ItemID = widget.itemID; + MedicineProvider medicineProvider = + Provider.of(context); medicineProvider.getPharmaciesList(_pharmaciesModel).then((res) { print(res.toString()); if (res['MessageStatus'] == 1) { print("ListPharmcy " + res['PharmList'].toString()); + this.setState(() { + data = res['PharmList']; + }); //Navigator.of(context).pushNamed(); } else { diff --git a/lib/widgets/medicine/medicine_item_widget.dart b/lib/widgets/medicine/medicine_item_widget.dart new file mode 100644 index 00000000..56cf4638 --- /dev/null +++ b/lib/widgets/medicine/medicine_item_widget.dart @@ -0,0 +1,51 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; + +import '../shared/rounded_container_widget.dart'; +import '../shared/app_texts_widget.dart'; +import 'package:flutter/material.dart'; + +/* + *@author: ibrahim albitar + *@Date:28/4/2020 + *@param: + *@return: + *@desc: + */ + +class MedicineItemWidget extends StatefulWidget { + +final String label; +final Color backgroundColor; +final bool showBorder; +final Color borderColor; + +MedicineItemWidget({ @required this.label, this.backgroundColor = Colors.white, this.showBorder = false, this.borderColor = Colors.white}); + @override + _MedicineItemWidgetState createState() => _MedicineItemWidgetState(); +} + +class _MedicineItemWidgetState extends State { + @override + Widget build(BuildContext context) { + return new RoundedContainer( + height: SizeConfig.heightMultiplier * 8, + child:Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + RoundedContainer( + width: SizeConfig.widthMultiplier * 2, + backgroundColor: Colors.red, + margin: 0, + topLeft: 6, + topRight: 0, + bottomLeft: 6, + bottomRight: 0, + customCornerRaduis: true, + child: SizedBox(width: SizeConfig.widthMultiplier, height: SizeConfig.heightMultiplier*3,), + ), + Expanded(child: Padding( padding: EdgeInsets.all(5), child: Align( alignment: Alignment.centerLeft, child: AppText(widget.label)))) + ],), + backgroundColor: widget.backgroundColor, showBorder: widget.showBorder, borderColor: widget.borderColor, margin: 4, raduis: 10,); + } +} \ No newline at end of file From 734b7b2c994ebed9a2d7de93654a15a748452582 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 30 Apr 2020 08:33:49 +0300 Subject: [PATCH 4/4] refactoring code --- lib/models/pharmacies_List_request_model.dart | 87 +++++--- .../pharmacies_items_request_model.dart | 66 ++++-- lib/providers/medicine_provider.dart | 101 ++++++--- lib/screens/dashboard_screen.dart | 28 ++- .../medicine/medicine_search_screen.dart | 189 +++++++--------- .../medicine/pharmacies_list_screen.dart | 208 ++++++++---------- 6 files changed, 361 insertions(+), 318 deletions(-) diff --git a/lib/models/pharmacies_List_request_model.dart b/lib/models/pharmacies_List_request_model.dart index fea73f92..a2b4e5c2 100644 --- a/lib/models/pharmacies_List_request_model.dart +++ b/lib/models/pharmacies_List_request_model.dart @@ -1,3 +1,4 @@ + /* *@author: Ibrahim Albitar *@Date:27/4/2020 @@ -5,42 +6,62 @@ *@return: *@desc: */ + class PharmaciesListRequestModel { -// {"ItemID":90417, -// "LanguageID":2, -// "stamp":"2020-03-08T07:49:14.067Z", -// "IPAdress":"11.11.11.11", -// "VersionID":1.2, -// "Channel":9, -// "TokenID":"PpIU/OWJ40yxMHQtCXL0DA==", -// "SessionID":"dz1hqVj1Fk", -// "IsLoginForDoctorApp":true, -// "PatientOutSA":false, -// "PatientTypeID":1} - int ItemID; - int LanguageID; + int itemID; + int languageID; String stamp; - String IPAdress; - double VersionID; - String TokenID; - String SessionID; - bool IsLoginForDoctorApp; - bool PatientOutSA; - int PatientTypeID; - int Channel; + String ipAdress; + double versionID; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + int patientTypeID; + int channel; PharmaciesListRequestModel( - {this.ItemID, - this.PatientTypeID, - this.LanguageID, - this.stamp, - this.IPAdress, - this.VersionID, - this.TokenID, - this.SessionID, - this.IsLoginForDoctorApp, - this.Channel, - this.PatientOutSA}); -} + {this.itemID , + this.patientTypeID = 1, + this.languageID = 2, + this.stamp = '2020-04-23T21:01:21.492Z', + this.ipAdress = '11.11.11.11', + this.versionID = 1.2, + this.tokenID = '@dm!n', + this.sessionID = 'e29zoooEJ4', + this.isLoginForDoctorApp = true, + this.channel = 9, + this.patientOutSA = false}); + + PharmaciesListRequestModel.fromJson(Map json) { + itemID = json['ItemID']; + patientTypeID = json['PatientTypeID']; + languageID = json['LanguageID']; + stamp = json['stamp']; + ipAdress = json['IPAdress']; + versionID = json['VersionID']; + tokenID = json['TokenID']; + sessionID = json['SessionID']; + isLoginForDoctorApp = json['IsLoginForDoctorApp']; + channel = json['Channel']; + patientOutSA = json['PatientOutSA']; + } + + Map toJson() { + final Map data = new Map(); + data['ItemID'] = this.itemID; + data['PatientTypeID'] = this.patientTypeID; + data['LanguageID'] = this.languageID; + data['stamp'] = this.stamp; + data['IPAdress'] = this.ipAdress; + data['VersionID'] = this.versionID; + data['TokenID'] = this.tokenID; + data['SessionID'] = this.sessionID; + data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + data['PatientOutSA'] = this.patientOutSA; + data['Channel'] = this.channel; + return data; + } +} \ No newline at end of file diff --git a/lib/models/pharmacies_items_request_model.dart b/lib/models/pharmacies_items_request_model.dart index 0e1dcaec..210c8db7 100644 --- a/lib/models/pharmacies_items_request_model.dart +++ b/lib/models/pharmacies_items_request_model.dart @@ -6,26 +6,54 @@ *@desc: */ class PharmaciesItemsRequestModel { - String PHR_itemName; - int LanguageID; + String phrItemName; + int languageID; String stamp; - String IPAdress; - double VersionID; - String TokenID; - String SessionID; - bool IsLoginForDoctorApp; - bool PatientOutSA; - int PatientTypeID; + String ipAdress; + double versionID; + String tokenID; + String sessionID; + bool isLoginForDoctorApp; + bool patientOutSA; + int patientTypeID; PharmaciesItemsRequestModel( - {this.PHR_itemName, - this.PatientTypeID, - this.LanguageID, - this.stamp, - this.IPAdress, - this.VersionID, - this.TokenID, - this.SessionID, - this.IsLoginForDoctorApp, - this.PatientOutSA}); + {this.phrItemName = '', + this.patientTypeID = 1, + this.languageID = 2, + this.stamp = '2020-04-23T21:01:21.492Z', + this.ipAdress = '11.11.11.11', + this.versionID = 1.2, + this.tokenID = '@dm!n', + this.sessionID = 'e29zoooEJ4', + this.isLoginForDoctorApp = true, + this.patientOutSA = false}); + + PharmaciesItemsRequestModel.fromJson(Map json) { + phrItemName = json['PHR_itemName']; + patientTypeID = json['PatientTypeID']; + languageID = json['LanguageID']; + stamp = json['stamp']; + ipAdress = json['IPAdress']; + versionID = json['VersionID']; + tokenID = json['TokenID']; + sessionID = json['SessionID']; + isLoginForDoctorApp = json['IsLoginForDoctorApp']; + patientOutSA = json['PatientOutSA']; + } + + Map toJson() { + final Map data = new Map(); + data['PHR_itemName'] = this.phrItemName; + data['PatientTypeID'] = this.patientTypeID; + data['LanguageID'] = this.languageID; + data['stamp'] = this.stamp; + data['IPAdress'] = this.ipAdress; + data['VersionID'] = this.versionID; + data['TokenID'] = this.tokenID; + data['SessionID'] = this.sessionID; + data['IsLoginForDoctorApp'] = this.isLoginForDoctorApp; + data['PatientOutSA'] = this.patientOutSA; + return data; + } } diff --git a/lib/providers/medicine_provider.dart b/lib/providers/medicine_provider.dart index 1c5e582a..5e7a0ef4 100644 --- a/lib/providers/medicine_provider.dart +++ b/lib/providers/medicine_provider.dart @@ -4,51 +4,88 @@ import 'package:doctor_app_flutter/client/app_client.dart'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/models/pharmacies_List_request_model.dart'; import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; +import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:flutter/cupertino.dart'; class MedicineProvider with ChangeNotifier { + var pharmacyItemsList = []; + var pharmaciesList = []; + bool isFinished = false; + bool hasError = false; + String errorMsg = ''; - Future getMedicineItem(PharmaciesItemsRequestModel medicine) async { + PharmaciesItemsRequestModel _itemsRequestModel =PharmaciesItemsRequestModel(); + PharmaciesListRequestModel _listRequestModel = PharmaciesListRequestModel(); + + Future getMedicineItem(String itemName) async { try { - final response = await AppClient.post(PHARMACY_ITEMS_URL, - body: json.encode({ - "PHR_itemName": medicine.PHR_itemName, - "LanguageID": medicine.LanguageID, - "stamp": medicine.stamp, - "IPAdress": medicine.IPAdress, - "VersionID": medicine.VersionID, - "TokenID": medicine.TokenID, - "SessionID": medicine.SessionID, - "IsLoginForDoctorApp": medicine.IsLoginForDoctorApp, - "PatientOutSA": medicine.PatientOutSA, - "PatientTypeID": medicine.PatientTypeID - })); - return Future.value(json.decode(response.body)); + if (await Helpers.checkConnection()) { + _itemsRequestModel.phrItemName = itemName; + final response = await AppClient.post(PHARMACY_ITEMS_URL, + body: json.encode(_itemsRequestModel.toJson())); + final int statusCode = response.statusCode; + if (statusCode < 200 || statusCode >= 400 || json == null) { + isFinished = true; + hasError = true; + errorMsg = 'Error While Fetching data'; + } else { + var parsed = json.decode(response.body.toString()); + if (parsed['MessageStatus'] == 1) { + pharmacyItemsList = parsed['ListPharmcy']; + hasError = false; + isFinished = true; + errorMsg = "Done"; + } else { + hasError = true; + errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage']; + } + } + } else { + isFinished = true; + hasError = true; + errorMsg = 'Please Check The Internet Connection'; + } + notifyListeners(); } catch (error) { throw error; } - } + return errorMsg; + } - Future getPharmaciesList(PharmaciesListRequestModel pharmacy) async { + Future getPharmaciesList(int itemId) async { try { - final response = await AppClient.post(PHARMACY_LIST_URL, - body: json.encode({ - "ItemID": pharmacy.ItemID, - "LanguageID": pharmacy.LanguageID, - "stamp": pharmacy.stamp, - "IPAdress": pharmacy.IPAdress, - "VersionID": pharmacy.VersionID, - "TokenID": pharmacy.TokenID, - "SessionID": pharmacy.SessionID, - "IsLoginForDoctorApp": pharmacy.IsLoginForDoctorApp, - "PatientOutSA": pharmacy.PatientOutSA, - "Channel": pharmacy.Channel, - "PatientTypeID": pharmacy.PatientTypeID - })); - return Future.value(json.decode(response.body)); + if (await Helpers.checkConnection()) { + _listRequestModel.itemID = itemId; + final response = await AppClient.post(PHARMACY_LIST_URL, + body: json.encode(_listRequestModel.toJson())); + final int statusCode = response.statusCode; + if (statusCode < 200 || statusCode >= 400 || json == null) { + isFinished = true; + hasError = true; + errorMsg = 'Error While Fetching data'; + } else { + var parsed = json.decode(response.body.toString()); + if (parsed['MessageStatus'] == 1) { + pharmaciesList = parsed['PharmList']; + hasError = false; + isFinished = true; + errorMsg = "Done"; + } else { + hasError = true; + errorMsg = parsed['ErrorMessage'] ?? parsed['ErrorEndUserMessage']; + } + } + } else { + isFinished = true; + hasError = true; + errorMsg = 'Please Check The Internet Connection'; + } + notifyListeners(); } catch (error) { throw error; } + + return errorMsg; } } diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index 79ef6878..aade7083 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,5 +1,7 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart'; +import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:provider/provider.dart'; import '../routes.dart'; @@ -212,7 +214,6 @@ class _DashboardScreenState extends State { flex: 2, child: InkWell( onTap: () { - Navigator.push( context, MaterialPageRoute( @@ -242,12 +243,25 @@ class _DashboardScreenState extends State { children: [ Expanded( flex: 2, - child: new DashboardItemIconText( - DoctorApp.home_icon, - "", - "In Patient", - showBorder: false, - backgroundColor: Colors.blueGrey[900], + child: InkWell( + child: DashboardItemIconText( + DoctorApp.home_icon, + "", + "In Patient", + showBorder: false, + backgroundColor: Colors.blueGrey[900], + ), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (_) => MedicineProvider(), + child: MedicineSearchScreen(), + ), + ), + ); + }, ), ), Expanded( diff --git a/lib/screens/medicine/medicine_search_screen.dart b/lib/screens/medicine/medicine_search_screen.dart index b427982a..d49adb22 100644 --- a/lib/screens/medicine/medicine_search_screen.dart +++ b/lib/screens/medicine/medicine_search_screen.dart @@ -1,6 +1,5 @@ import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/size_config.dart'; -import 'package:doctor_app_flutter/models/pharmacies_items_request_model.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; import 'package:doctor_app_flutter/screens/medicine/pharmacies_list_screen.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; @@ -13,7 +12,6 @@ import 'package:doctor_app_flutter/widgets/shared/app_text_form_field.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import '../../routes.dart'; import '../../util/extenstions.dart'; DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); @@ -31,101 +29,89 @@ class _MedicineSearchState extends State { final myController = TextEditingController(); Helpers helpers = new Helpers(); - var _medicineModel = PharmaciesItemsRequestModel( - IsLoginForDoctorApp: true, - PatientOutSA: false, - PatientTypeID: 1, - LanguageID: 2, - IPAdress: "11.11.11.11", - VersionID: 1.2, - TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", - stamp: "2020-04-23T21:01:21.492Z", - SessionID: "e29zoooEJ4"); + MedicineProvider _medicineProvider; @override Widget build(BuildContext context) { - return ChangeNotifierProvider( - create: (context) => MedicineProvider(), //change builder to create - child: Consumer( - builder: (context, provider, child) => AppScaffold( - appBarTitle: "Search Medicine", - body: Column( - children: [ - RoundedContainer( - child: Column( - children: [ - Icon( - Icons.search, - size: SizeConfig.imageSizeMultiplier * 15, - ), - Padding( - padding: EdgeInsets.only( - bottom: SizeConfig.heightMultiplier * 5, - right: SizeConfig.heightMultiplier * 3, - left: SizeConfig.heightMultiplier * 3, - top: SizeConfig.heightMultiplier * 3), - child: AppTextFormField( - hintText: 'Type Medicine Name Here..', - controller: myController, - onSaved: (value) {}, - // validator: (value) { - // return TextValidator().validateName(value); - // }, - inputFormatter: ONLY_LETTERS), - ) - ], - )), - Container( - margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), - child: Wrap( - alignment: WrapAlignment.center, - children: [ - AppButton( - title: "Search", - color: Color(0xff58434F), - onPressed: () { - MedicineProvider medicineProvider = - Provider.of(context); - searchMedicine(context, medicineProvider); - }, - ), - ], - ), - ), - Expanded( - child: Container( - width: SizeConfig.screenWidth * 0.80, - child: ListView.builder( - scrollDirection: Axis.vertical, - shrinkWrap: true, - itemCount: data == null ? 0 : data.length, - itemBuilder: (BuildContext context, int index) { - return InkWell( - child: MedicineItemWidget( - label: data[index]["ItemDescription"], - ), - onTap: () { - //Navigator.of(context).pushNamed(PHARMACIES_LIST); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => PharmaciesListScreen( - itemID: data[index]["ItemID"]), - ), - ); - }, - ); - }, - ), + _medicineProvider = Provider.of(context); + return AppScaffold( + appBarTitle: "Search Medicine", + body: Column( + children: [ + RoundedContainer( + child: Column( + children: [ + Icon( + Icons.search, + size: SizeConfig.imageSizeMultiplier * 15, + ), + Padding( + padding: EdgeInsets.only( + bottom: SizeConfig.heightMultiplier * 5, + right: SizeConfig.heightMultiplier * 3, + left: SizeConfig.heightMultiplier * 3, + top: SizeConfig.heightMultiplier * 3), + child: AppTextFormField( + hintText: 'Type Medicine Name Here..', + controller: myController, + onSaved: (value) {}, + // validator: (value) { + // return TextValidator().validateName(value); + // }, + inputFormatter: ONLY_LETTERS), + ) + ], + )), + Container( + margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), + child: Wrap( + alignment: WrapAlignment.center, + children: [ + AppButton( + title: "Search", + color: Color(0xff58434F), + onPressed: () { + searchMedicine(context); + }, + ), + ], + ), + ), + Expanded( + child: Container( + width: SizeConfig.screenWidth * 0.80, + child: ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: data == null ? 0 : data.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: data[index]["ItemDescription"], ), - ), - ], - )))); + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ChangeNotifierProvider( + create: (_) => MedicineProvider(), + child: PharmaciesListScreen( + itemID: data[index]["ItemID"]), + ), + ), + ); + }, + ); + }, + ), + ), + ), + ], + )); } - searchMedicine(context, MedicineProvider medicineProvider) { + searchMedicine(context) { FocusScope.of(context).unfocus(); - if (myController.text.isNullOrEmpty()) { this.setState(() { data = null; @@ -133,29 +119,10 @@ class _MedicineSearchState extends State { helpers.showErrorToast("Type Medicine Name"); return; } - _medicineModel.PHR_itemName = myController.text; - medicineProvider.getMedicineItem(_medicineModel).then((res) { - if (res['MessageStatus'] == 1) { - print("ListMedicine " + res['ListPharmcy'].toString()); - this.setState(() { - data = res['ListPharmcy']; - }); - //Navigator.of(context).pushNamed(PHARMACIES_LIST); - } else { - // handel error - this.setState(() { - data = null; - }); - widget.showCenterShortLoadingToast("watting"); - helpers.showErrorToast(res['ErrorEndUserMessage']); - } - // Navigator.of(context).pushNamed(HOME); - }).catchError((err) { - print('$err'); + _medicineProvider.getMedicineItem(myController.text).then((str) { this.setState(() { - data = null; + data = _medicineProvider.pharmacyItemsList; }); - helpers.showErrorToast(); }); } } diff --git a/lib/screens/medicine/pharmacies_list_screen.dart b/lib/screens/medicine/pharmacies_list_screen.dart index 9227c771..c68da864 100644 --- a/lib/screens/medicine/pharmacies_list_screen.dart +++ b/lib/screens/medicine/pharmacies_list_screen.dart @@ -6,6 +6,7 @@ import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/widgets/medicine/medicine_item_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -23,130 +24,105 @@ class PharmaciesListScreen extends StatefulWidget { } class _PharmaciesListState extends State { - var data; + var _data; Helpers helpers = new Helpers(); - - var _pharmaciesModel = PharmaciesListRequestModel( - IsLoginForDoctorApp: true, - PatientOutSA: false, - PatientTypeID: 1, - LanguageID: 2, - IPAdress: "11.11.11.11", - VersionID: 1.2, - TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", - stamp: "2020-04-23T21:01:21.492Z", - Channel: 9, - SessionID: "e29zoooEJ4"); + MedicineProvider _medicineProvider; @override Widget build(BuildContext context) { - return ChangeNotifierProvider( - create: (context) => MedicineProvider(), - //change builder to create - child: Consumer( - builder: (context, provider, child) => AppScaffold( - appBarTitle: "Pharmacies List", - body: Column( - children: [ - RoundedContainer( - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - AppText( - "Description", - margin: 10, - fontWeight: FontWeight.bold, - ), - AppText( - "ItemDescription", - marginLeft: 10, - marginTop: 0, - marginRight: 10, - marginBottom: 10, - ), - AppText( - "Price", - margin: 10, - fontWeight: FontWeight.bold, - ), - AppText("SellingPrice", - marginLeft: 10, - marginTop: 0, - marginRight: 10, - marginBottom: 10, - ), - ], - )), - Container( - margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), - child: Align( - alignment: Alignment.centerLeft, - child: AppText( - "You can Find it in", - fontWeight: FontWeight.bold, - fontSize: SizeConfig.textMultiplier * 3, - ))), - Expanded( - child: Container( - width: SizeConfig.screenWidth * 0.80, - child: ListView.builder( - scrollDirection: Axis.vertical, - shrinkWrap: true, - itemCount: data == null ? 0 : data.length, - itemBuilder: (BuildContext context, int index) { - return InkWell( - child: MedicineItemWidget( - label: data[index]["ItemDescription"], + _medicineProvider = Provider.of(context); + pharmaciesList(); + return AppScaffold( + appBarTitle: "Pharmacies List", + body: Column( + children: [ + RoundedContainer( + child: !_medicineProvider.isFinished + ? DrAppCircularProgressIndeicator() + : _medicineProvider.hasError + ? Center( + child: Text( + _medicineProvider.errorMsg, + style: TextStyle( + color: Theme.of(context).errorColor), + ), + ) + : Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + AppText( + "Description", + margin: 10, + fontWeight: FontWeight.bold, + ), + AppText( + _data[0]["ItemDescription"], + marginLeft: 10, + marginTop: 0, + marginRight: 10, + marginBottom: 10, + ), + AppText( + "Price", + margin: 10, + fontWeight: FontWeight.bold, ), - onTap: () { - //Navigator.of(context).pushNamed(PHARMACIES_LIST); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => PharmaciesListScreen( - itemID: data[index]["ItemID"]), - ), - ); - }, - ); - }, - ), + AppText( + _data[0]["SellingPrice"].toString(), + marginLeft: 10, + marginTop: 0, + marginRight: 10, + marginBottom: 10, + ), + ], + )), + Container( + margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), + child: Align( + alignment: Alignment.centerLeft, + child: AppText( + "You can Find it in", + fontWeight: FontWeight.bold, + fontSize: SizeConfig.textMultiplier * 3, + ))), + Expanded( + child: Container( + width: SizeConfig.screenWidth * 0.80, + child: ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + itemCount: _data == null ? 0 : _data.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + child: MedicineItemWidget( + label: _data[index]["LocationDescription"], ), - ), - ], - ) - // RaisedButton( - // onPressed: () { - // - // }, - // ) - ))); + onTap: () { + //Navigator.of(context).pushNamed(PHARMACIES_LIST); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => PharmaciesListScreen( + itemID: _data[index]["ItemID"]), + ), + ); + }, + ); + }, + ), + ), + ), + ], + )); } - pharmaciesList(context) { - _pharmaciesModel.ItemID = widget.itemID; - MedicineProvider medicineProvider = - Provider.of(context); - medicineProvider.getPharmaciesList(_pharmaciesModel).then((res) { - print(res.toString()); - if (res['MessageStatus'] == 1) { - print("ListPharmcy " + res['PharmList'].toString()); - this.setState(() { - data = res['PharmList']; - }); - - //Navigator.of(context).pushNamed(); - } else { - // handel error - // widget.showCenterShortLoadingToast("watting"); - //helpers.showErrorToast(res['ErrorEndUserMessage']); - print(res['MessageStatus'].toString()); - } - // Navigator.of(context).pushNamed(HOME); - }).catchError((err) { - print('$err'); - //helpers.showErrorToast(); + Future pharmaciesList() async { + _medicineProvider.getPharmaciesList(widget.itemID).then((result) { + this.setState(() { + _data = _medicineProvider.pharmaciesList; + }); }); + return true; } }