From 40b4a83c6b3ae9890fbb05e073dd3ede9a13d30e Mon Sep 17 00:00:00 2001 From: Mohammad Aljammal Date: Wed, 19 May 2021 17:20:14 +0300 Subject: [PATCH] Fix Expansion Procedure --- ios/Podfile.lock | 2 +- lib/client/base_app_client.dart | 3 +- lib/config/config.dart | 4 +- lib/core/viewModel/procedure_View_model.dart | 2 +- .../procedures/ExpansionProcedure.dart | 189 ++++++++++++++++++ .../procedures/add-favourite-procedure.dart | 45 +---- .../procedures/entity_list_fav_procedure.dart | 121 +---------- pubspec.lock | 6 +- 8 files changed, 215 insertions(+), 157 deletions(-) create mode 100644 lib/screens/procedures/ExpansionProcedure.dart diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1cf7499c..59cdf14c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -328,4 +328,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 649616dc336b3659ac6b2b25159d8e488e042b69 -COCOAPODS: 1.10.0.rc.1 +COCOAPODS: 1.10.1 diff --git a/lib/client/base_app_client.dart b/lib/client/base_app_client.dart index 7336db13..4b362e35 100644 --- a/lib/client/base_app_client.dart +++ b/lib/client/base_app_client.dart @@ -48,7 +48,8 @@ class BaseAppClient { if (body['EditedBy'] == '') { body.remove("EditedBy"); } - body['TokenID'] = token ?? ''; + body['TokenID'] = "@dm!n";// token ?? ''; + // body['TokenID'] = token ?? ''; String lang = await sharedPref.getString(APP_Language); if (lang != null && lang == 'ar') body['LanguageID'] = 1; diff --git a/lib/config/config.dart b/lib/config/config.dart index 0e8106bc..8d5459cc 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -4,8 +4,8 @@ const MAX_SMALL_SCREEN = 660; const ONLY_NUMBERS = "[0-9]"; const ONLY_LETTERS = "[a-zA-Z &'\"]"; const ONLY_DATE = "[0-9/]"; -// const BASE_URL = 'https://hmgwebservices.com/'; -const BASE_URL = 'https://uat.hmgwebservices.com/'; +const BASE_URL = 'https://hmgwebservices.com/'; +// const BASE_URL = 'https://uat.hmgwebservices.com/'; const PHARMACY_ITEMS_URL = "Services/Lists.svc/REST/GetPharmcyItems_Region_enh"; const PHARMACY_LIST_URL = "Services/Patients.svc/REST/GetPharmcyList"; const PATIENT_PROGRESS_NOTE_URL = diff --git a/lib/core/viewModel/procedure_View_model.dart b/lib/core/viewModel/procedure_View_model.dart index 4f9a7cf6..3bdd676f 100644 --- a/lib/core/viewModel/procedure_View_model.dart +++ b/lib/core/viewModel/procedure_View_model.dart @@ -115,7 +115,7 @@ class ProcedureViewModel extends BaseViewModel { tempId = templateId; hasError = false; //_insuranceCardService.clearInsuranceCard(); - setState(ViewState.Busy); + setState(ViewState.BusyLocal); await _procedureService.getProcedureTemplateDetails(templateId: templateId); if (_procedureService.hasError) { error = _procedureService.error; diff --git a/lib/screens/procedures/ExpansionProcedure.dart b/lib/screens/procedures/ExpansionProcedure.dart new file mode 100644 index 00000000..188f6634 --- /dev/null +++ b/lib/screens/procedures/ExpansionProcedure.dart @@ -0,0 +1,189 @@ +import 'package:doctor_app_flutter/client/base_app_client.dart'; +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/core/model/procedure/procedure_templateModel.dart'; +import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_model.dart'; +import 'package:doctor_app_flutter/core/model/procedure/procedure_template_details_request_model.dart'; +import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; +import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class ExpansionProcedure extends StatefulWidget { + final ProcedureTempleteModel procedureTempleteModel; + final ProcedureViewModel model; + final Function(ProcedureTempleteDetailsModel) removeFavProcedure; + final Function(ProcedureTempleteDetailsModel) addFavProcedure; + final Function(ProcedureTempleteDetailsModel) addProceduresRemarks; + + final bool Function(ProcedureTempleteModel) isEntityListSelected; + final bool Function(ProcedureTempleteDetailsModel) isEntityFavListSelected; + + const ExpansionProcedure( + {Key key, + this.procedureTempleteModel, + this.model, + this.removeFavProcedure, + this.addFavProcedure, + this.addProceduresRemarks, + this.isEntityListSelected, + this.isEntityFavListSelected}) + : super(key: key); + + @override + _ExpansionProcedureState createState() => _ExpansionProcedureState(); +} + +class _ExpansionProcedureState extends State { + bool _isShowMore = false; + List _templateDetailsList = List(); + BaseAppClient baseAppClient = BaseAppClient(); + @override + Widget build(BuildContext context) { + return Column( + children: [ + InkWell( + onTap: () async { + if (!_isShowMore && _templateDetailsList.isEmpty) { + GifLoaderDialogUtils.showMyDialog(context); + await getProcedureTemplateDetails(widget.procedureTempleteModel.templateID); + GifLoaderDialogUtils.hideDialog(context); + } + setState(() { + _isShowMore = !_isShowMore; + }); + }, + child: Container( + padding: EdgeInsets.all(10.0), + margin: EdgeInsets.only(left: 5, right: 5), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(5.0), + )), + child: Row( + children: [ + Expanded( + child: Row( + children: [ + Icon( + Icons.folder, + size: 20, + color: Color(0xff575757), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, vertical: 0), + child: AppText( + "Procedures for " + + widget.procedureTempleteModel.templateName, + fontSize: 16.0, + variant: "bodyText", + bold: true, + color: Color(0xff575757)), + ), + ), + ], + )), + Container( + width: 25, + height: 25, + child: Icon( + _isShowMore + ? Icons.keyboard_arrow_up + : Icons.keyboard_arrow_down, + color: Colors.grey[800], + size: 22, + ), + ) + ], + ), + ), + ), + if (_isShowMore) + AnimatedContainer( + padding: EdgeInsets.all(10.0), + margin: EdgeInsets.only(left: 5, right: 5), + decoration: BoxDecoration( + shape: BoxShape.rectangle, + color: Colors.white, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(5.0), + bottomRight: Radius.circular(5.0), + )), + duration: Duration(milliseconds: 7000), + child: Column( + children: + _templateDetailsList.map((itemProcedure) { + return Container( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 11), + child: Checkbox( + value: widget + .isEntityFavListSelected(itemProcedure), + activeColor: Color(0xffD02127), + onChanged: (bool newValue) { + setState(() { + if (widget.isEntityFavListSelected(itemProcedure)) { + widget.removeFavProcedure(itemProcedure); + } else { + widget.addFavProcedure(itemProcedure); + } + }); + }), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, vertical: 0), + child: AppText(itemProcedure.procedureName, + fontSize: 14.0, + variant: "bodyText", + bold: true, + color: Color(0xff575757)), + ), + ), + ], + ), + ], + ), + ), + ); + }).toList(), + ), + ), + SizedBox( + height: 10, + ), + ], + ); + } + + getProcedureTemplateDetails(templateId)async { + ProcedureTempleteDetailsRequestModel _procedureTempleteDetailsRequestModel = ProcedureTempleteDetailsRequestModel(templateID: templateId, searchType: 1, patientID: 0); + _templateDetailsList.clear(); + await baseAppClient.post(GET_PROCEDURE_TEMPLETE_DETAILS, + onSuccess: (dynamic response, int statusCode) { + response['HIS_ProcedureTemplateDetailsList'].forEach((template) { + setState(() { + _templateDetailsList.add(ProcedureTempleteDetailsModel.fromJson(template)); + }); + }); + }, onFailure: (String error, int statusCode) { + DrAppToastMsg.showErrorToast(error); + + }, body: _procedureTempleteDetailsRequestModel.toJson()); + } + +} diff --git a/lib/screens/procedures/add-favourite-procedure.dart b/lib/screens/procedures/add-favourite-procedure.dart index 89a382ad..fe95735d 100644 --- a/lib/screens/procedures/add-favourite-procedure.dart +++ b/lib/screens/procedures/add-favourite-procedure.dart @@ -20,15 +20,18 @@ class AddFavouriteProcedure extends StatefulWidget { const AddFavouriteProcedure({Key key, this.model, this.patient}) : super(key: key); + @override _AddFavouriteProcedureState createState() => _AddFavouriteProcedureState(); } class _AddFavouriteProcedureState extends State { _AddFavouriteProcedureState({this.patient, this.model}); + ProcedureViewModel model; PatiantInformtion patient; List entityList = List(); + @override Widget build(BuildContext context) { return BaseView( @@ -49,12 +52,7 @@ class _AddFavouriteProcedureState extends State { Expanded( child: NetworkBaseView( baseViewModel: model, - child: - // selectedCategory != null - // ? selectedCategory['categoryId'] == 02 || - // selectedCategory['categoryId'] == 03 - // ? - EntityListCheckboxSearchFavProceduresWidget( + child: EntityListCheckboxSearchFavProceduresWidget( model: widget.model, masterList: widget.model.procedureTemplate, removeFavProcedure: (item) { @@ -73,30 +71,7 @@ class _AddFavouriteProcedureState extends State { }, isEntityFavListSelected: (master) => isEntityListSelected(master), - ) - // : ProcedureListWidget( - // model: widget.model, - // masterList: widget.model - // .categoriesList[0].entityList, - // removeHistory: (item) { - // setState(() { - // entityList.remove(item); - // }); - // }, - // addHistory: (history) { - // setState(() { - // entityList.add(history); - // }); - // }, - // addSelectedHistories: () { - // //TODO build your fun herr - // // widget.addSelectedHistories(); - // }, - // isEntityListSelected: (master) => - // isEntityListSelected(master), - // ) - // : null, - ), + )), ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), @@ -108,8 +83,6 @@ class _AddFavouriteProcedureState extends State { color: Color(0xff359846), fontWeight: FontWeight.w700, onPressed: () { - //print(entityList.toString()); - onPressed: if (entityList.isEmpty == true) { DrAppToastMsg.showErrorToast( TranslationBase.of(context) @@ -119,12 +92,6 @@ class _AddFavouriteProcedureState extends State { } Navigator.pop(context); - // postProcedure( - // orderType: selectedType.toString(), - // entityList: entityList, - // patient: patient, - // model: widget.model, - // remarks: remarksController.text); }, ), ], @@ -138,7 +105,7 @@ class _AddFavouriteProcedureState extends State { bool isEntityListSelected(ProcedureTempleteDetailsModel masterKey) { Iterable history = entityList - .where((element) => masterKey.templateID == element.templateID); + .where((element) => masterKey.templateID == element.templateID && masterKey.procedureName == element.procedureName); if (history.length > 0) { return true; } diff --git a/lib/screens/procedures/entity_list_fav_procedure.dart b/lib/screens/procedures/entity_list_fav_procedure.dart index 31b2a784..1dac2f24 100644 --- a/lib/screens/procedures/entity_list_fav_procedure.dart +++ b/lib/screens/procedures/entity_list_fav_procedure.dart @@ -11,6 +11,8 @@ import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'ExpansionProcedure.dart'; + class EntityListCheckboxSearchFavProceduresWidget extends StatefulWidget { final ProcedureViewModel model; final Function addSelectedHistories; @@ -70,6 +72,7 @@ class _EntityListCheckboxSearchFavProceduresWidgetState } TextEditingController remarksController = TextEditingController(); + @override Widget build(BuildContext context) { return Container( @@ -102,116 +105,14 @@ class _EntityListCheckboxSearchFavProceduresWidgetState items.length != 0 ? Column( children: items.map((historyInfo) { - return Column( - children: [ - ExpansionTile( - title: InkWell( - onTap: () { - widget.model - .getProcedureTemplateDetails( - templateId: - historyInfo.templateID); - }, - child: Row( - children: [ - Icon( - Icons.folder, - size: 20, - color: Color(0xff575757), - ), - Expanded( - child: Padding( - padding: - const EdgeInsets.symmetric( - horizontal: 10, - vertical: 0), - child: AppText( - "Procedures for " + - historyInfo.templateName, - fontSize: 16.0, - variant: "bodyText", - bold: true, - color: Color(0xff575757)), - ), - ), - ], - ), - ), - children: [ - Column( - children: widget - .model.procedureTemplateDetails - .map((itemProcedure) { - return Container( - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: 12), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, - children: [ - Row( - children: [ - Padding( - padding: - const EdgeInsets - .symmetric( - horizontal: 11), - child: Checkbox( - value: widget - .isEntityFavListSelected( - itemProcedure), - activeColor: Color( - 0xffD02127), - onChanged: (bool - newValue) { - setState(() { - if (widget - .isEntityFavListSelected( - itemProcedure)) { - widget.removeFavProcedure( - itemProcedure); - } else { - widget.addFavProcedure( - itemProcedure); - } - }); - }), - ), - Expanded( - child: Padding( - padding: - const EdgeInsets - .symmetric( - horizontal: - 10, - vertical: 0), - child: AppText( - itemProcedure - .procedureName, - fontSize: 14.0, - variant: - "bodyText", - bold: true, - color: Color( - 0xff575757)), - ), - ), - ], - ), - ], - ), - ), - ); - }).toList(), - ), - SizedBox( - height: 2.0, - ), - DividerWithSpacesAround(), - ], - ), - ], + return ExpansionProcedure( + procedureTempleteModel: historyInfo, + model: widget.model, + removeFavProcedure: widget.removeFavProcedure, + addFavProcedure: widget.addFavProcedure, + addProceduresRemarks: widget.addProceduresRemarks, + isEntityListSelected: widget.isEntityListSelected, + isEntityFavListSelected: widget.isEntityFavListSelected, ); }).toList(), ) diff --git a/pubspec.lock b/pubspec.lock index 613c2753..4b6a9b7a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -629,7 +629,7 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.4" + version: "1.3.0-nullsafety.3" mime: dependency: transitive description: @@ -921,7 +921,7 @@ packages: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.2" + version: "1.10.0-nullsafety.1" sticky_headers: dependency: "direct main" description: @@ -1119,5 +1119,5 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=2.10.0 <=2.11.0-213.1.beta" + dart: ">=2.10.0 <2.11.0" flutter: ">=1.22.0 <2.0.0"