diff --git a/lib/core/service/procedure_service.dart b/lib/core/service/procedure_service.dart index 10b66d94..f61166b9 100644 --- a/lib/core/service/procedure_service.dart +++ b/lib/core/service/procedure_service.dart @@ -84,7 +84,7 @@ class ProcedureService extends BaseService { pageIndex: 0, clinicId: 0, pageSize: 0, - category: categoryID, + category: categoryID ?? "01", ); hasError = false; _categoriesList.clear(); diff --git a/lib/screens/procedures/add-procedure-form.dart b/lib/screens/procedures/add-procedure-form.dart index 071b4000..d6c1b419 100644 --- a/lib/screens/procedures/add-procedure-form.dart +++ b/lib/screens/procedures/add-procedure-form.dart @@ -18,6 +18,7 @@ import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:flutter/material.dart'; import 'entity_list_checkbox_search_widget.dart'; +import 'entity_list_procedure_widget.dart'; valdateProcedure(ProcedureViewModel model, PatiantInformtion patient, List entityList) async { @@ -58,7 +59,7 @@ postProcedure( controlValue: element.remarks != null ? element.remarks : ""), ); controls.add( - Controls(code: "ordertype", controlValue: element.type), + Controls(code: "ordertype", controlValue: "0"), ); controlsProcedure.add(Procedures( category: element.categoryID, @@ -124,7 +125,10 @@ class _AddSelectedProcedureState extends State { TextEditingController procedureController = TextEditingController(); TextEditingController remarksController = TextEditingController(); List entityList = List(); + List entityListProcedure = List(); + dynamic selectedCategory; + setSelectedType(int val) { setState(() { selectedType = val; @@ -153,10 +157,9 @@ class _AddSelectedProcedureState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( - TranslationBase.of(context) - .selectProcedures - .toUpperCase(), + 'Please Select Category', fontWeight: FontWeight.w900, + fontSize: 15.0, ), SizedBox( height: 10.0, @@ -219,29 +222,53 @@ class _AddSelectedProcedureState extends State { ), if (widget.model.categoriesList.length != 0) NetworkBaseView( - baseViewModel: model, - child: EntityListCheckboxSearchWidget( - 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), - ), - ), + baseViewModel: model, + child: selectedCategory != null + ? selectedCategory['categoryId'] == 02 || + selectedCategory['categoryId'] == 03 + ? EntityListCheckboxSearchWidget( + 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), + ) + : 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), SizedBox( height: 15.0, ), diff --git a/lib/screens/procedures/entity_list_checkbox_search_widget.dart b/lib/screens/procedures/entity_list_checkbox_search_widget.dart index 1c05af7e..b36f11c4 100644 --- a/lib/screens/procedures/entity_list_checkbox_search_widget.dart +++ b/lib/screens/procedures/entity_list_checkbox_search_widget.dart @@ -40,7 +40,7 @@ class EntityListCheckboxSearchWidget extends StatefulWidget { class _EntityListCheckboxSearchWidgetState extends State { - int selectedType = 1; + int selectedType = 0; int typeUrgent; int typeRegular; @@ -133,7 +133,7 @@ class _EntityListCheckboxSearchWidgetState .orderType), Radio( activeColor: Color(0xFFB9382C), - value: 1, + value: 0, groupValue: selectedType, onChanged: (value) { historyInfo.type = @@ -148,7 +148,7 @@ class _EntityListCheckboxSearchWidgetState Radio( activeColor: Color(0xFFB9382C), groupValue: selectedType, - value: 0, + value: 1, onChanged: (value) { historyInfo.type = setSelectedType(value) diff --git a/lib/screens/procedures/entity_list_procedure_widget.dart b/lib/screens/procedures/entity_list_procedure_widget.dart new file mode 100644 index 00000000..2f5c6ea2 --- /dev/null +++ b/lib/screens/procedures/entity_list_procedure_widget.dart @@ -0,0 +1,171 @@ +import 'package:doctor_app_flutter/core/enum/viewstate.dart'; +import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; +import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; +import 'package:doctor_app_flutter/widgets/shared/Text.dart'; +import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart'; +import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; +import 'package:eva_icons_flutter/eva_icons_flutter.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class ProcedureListWidget extends StatefulWidget { + final ProcedureViewModel model; + final Function addSelectedHistories; + final Function(EntityList) removeHistory; + final Function(EntityList) addHistory; + final Function(EntityList) addRemarks; + + final bool Function(EntityList) isEntityListSelected; + final List masterList; + + ProcedureListWidget( + {Key key, + this.model, + this.addSelectedHistories, + this.removeHistory, + this.masterList, + this.addHistory, + this.isEntityListSelected, + this.addRemarks}) + : super(key: key); + + @override + _ProcedureListWidgetState createState() => _ProcedureListWidgetState(); +} + +class _ProcedureListWidgetState extends State { + int selectedType = 0; + int typeUrgent; + int typeRegular; + + setSelectedType(int val) { + setState(() { + selectedType = val; + }); + } + + List items = List(); + List remarksList = List(); + List typeList = List(); + + @override + void initState() { + items.addAll(widget.masterList); + super.initState(); + } + + TextEditingController remarksController = TextEditingController(); + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + NetworkBaseView( + baseViewModel: widget.model, + child: Container( + height: MediaQuery.of(context).size.height * 0.55, + child: Center( + child: Container( + margin: EdgeInsets.only(top: 15), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: Colors.white), + child: ListView( + children: [ + TextFields( + hintText: TranslationBase.of(context).searchProcedures, + suffixIcon: EvaIcons.search, + onChanged: (value) { + filterSearchResults(value); + }, + ), + SizedBox( + height: 15, + ), + items.length != 0 + ? Column( + children: items.map((historyInfo) { + return Column( + children: [ + Row( + children: [ + Checkbox( + value: widget.isEntityListSelected( + historyInfo), + activeColor: Colors.red[800], + onChanged: (bool newValue) { + setState(() { + if (widget.isEntityListSelected( + historyInfo)) { + widget + .removeHistory(historyInfo); + } else { + widget.addHistory(historyInfo); + } + }); + }), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, vertical: 0), + child: Texts( + historyInfo.procedureName, + variant: "bodyText", + bold: true, + color: Colors.black), + ), + ), + ], + ), + DividerWithSpacesAround(), + ], + ); + }).toList(), + ) + : Center( + child: Container( + child: AppText( + "There's no procedures for this category", + color: Color(0xFFB9382C)), + ), + ) + ], + ), + )), + ), + ), + SizedBox( + height: 10, + ), + ], + ), + ); + } + + void filterSearchResults(String query) { + List dummySearchList = List(); + dummySearchList.addAll(widget.masterList); + if (query.isNotEmpty) { + List dummyListData = List(); + dummySearchList.forEach((item) { + if (item.procedureName.toLowerCase().contains(query.toLowerCase())) { + dummyListData.add(item); + } + }); + setState(() { + items.clear(); + items.addAll(dummyListData); + }); + return; + } else { + setState(() { + items.clear(); + items.addAll(widget.masterList); + }); + } + } +} diff --git a/lib/screens/procedures/procedure_screen.dart b/lib/screens/procedures/procedure_screen.dart index afe8a63e..f15e825d 100644 --- a/lib/screens/procedures/procedure_screen.dart +++ b/lib/screens/procedures/procedure_screen.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; @@ -235,7 +236,7 @@ class _ProcedureScreenState extends State { .entityList[ index] .orderType == - 0 + 1 ? Color( 0xFFB9382C) : Colors @@ -254,7 +255,7 @@ class _ProcedureScreenState extends State { .entityList[ index] .orderType == - 0 + 1 ? Color( 0xFFB9382C) : Colors @@ -274,7 +275,7 @@ class _ProcedureScreenState extends State { .entityList[ index] .orderType == - 0 + 1 ? Color( 0xFFB9382C) : Colors @@ -330,13 +331,13 @@ class _ProcedureScreenState extends State { Expanded( child: AppText( model.procedureList[0].entityList[index].orderType == - 1 + 0 ? 'Routine' : 'Urgent', fontSize: 13.5, color: model.procedureList[0].entityList[index].orderType == - 0 + 1 ? Color(0xFFB9382C) : Colors.green), ), @@ -459,43 +460,59 @@ class _ProcedureScreenState extends State { onTap: () { // model // .updateProcedure(); - updateProcedureForm( - context, - model: - model, - orderNo: model - .procedureList[ - 0] - .entityList[ - index] - .orderNo, - remarks: model - .procedureList[ - 0] - .entityList[ - index] - .remarks, - procedureName: model - .procedureList[ - 0] - .entityList[ - index] - .procedureName, - patient: - patient, - procedureId: model - .procedureList[ - 0] - .entityList[ - index] - .procedureId, - categoreId: model - .procedureList[ - 0] - .entityList[ - index] - .categoryID - .toString()); + if (model + .procedureList[ + 0] + .entityList[ + index] + .categoryID == + 02 || + model + .procedureList[0] + .entityList[index] + .categoryID == + 03) { + updateProcedureForm( + context, + model: + model, + orderNo: model + .procedureList[ + 0] + .entityList[ + index] + .orderNo, + remarks: model + .procedureList[ + 0] + .entityList[ + index] + .remarks, + procedureName: model + .procedureList[ + 0] + .entityList[ + index] + .procedureName, + patient: + patient, + procedureId: model + .procedureList[ + 0] + .entityList[ + index] + .procedureId, + categoreId: model + .procedureList[ + 0] + .entityList[ + index] + .categoryID + .toString()); + } else { + helpers.showErrorToast( + 'You cant Update this Procedure'); + } }, ) ], diff --git a/lib/screens/procedures/update-procedure.dart b/lib/screens/procedures/update-procedure.dart index 445203a4..9f5d7f45 100644 --- a/lib/screens/procedures/update-procedure.dart +++ b/lib/screens/procedures/update-procedure.dart @@ -8,6 +8,7 @@ import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/procedures/entity_list_checkbox_search_widget.dart'; +import 'package:doctor_app_flutter/screens/procedures/entity_list_procedure_widget.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; @@ -79,6 +80,11 @@ class _UpdateProcedureWidgetState extends State { }); } + void initState() { + super.initState(); + widget.remarksController.text = widget.remarks; + } + List entityList = List(); dynamic selectedCategory; @override @@ -177,74 +183,108 @@ class _UpdateProcedureWidgetState extends State { ), if (widget.model.categoriesList.length != 0) NetworkBaseView( - baseViewModel: model, - child: EntityListCheckboxSearchWidget( - 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), - ), + baseViewModel: model, + child: selectedCategory != null + ? selectedCategory['categoryId'] == + 02 || + selectedCategory[ + 'categoryId'] == + 03 + ? EntityListCheckboxSearchWidget( + 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), + ) + : 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( + child: Row( + children: [ + AppText( + TranslationBase.of(context).orderType), + Radio( + activeColor: Color(0xFFB9382C), + value: 0, + groupValue: selectedType, + onChanged: (value) { + setSelectedType(value); + }, + ), + Text(TranslationBase.of(context).urgent), + Radio( + activeColor: Color(0xFFB9382C), + groupValue: selectedType, + value: 1, + onChanged: (value) { + setSelectedType(value); + }, + ), + Text('routine'), + ], + ), + ), + SizedBox( + height: 12.0, + ), + Container( + decoration: BoxDecoration( + borderRadius: + BorderRadius.all(Radius.circular(6.0)), + border: Border.all( + width: 1.0, + color: HexColor("#CCCCCC"))), + child: TextFields( + fontSize: 15.0, + controller: widget.remarksController, + maxLines: 3, + minLines: 2, + onChanged: (value) {}, ), - // Container( - // child: Row( - // children: [ - // AppText( - // TranslationBase.of(context).orderType), - // Radio( - // activeColor: Color(0xFFB9382C), - // value: 0, - // groupValue: selectedType, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text(TranslationBase.of(context).urgent), - // Radio( - // activeColor: Color(0xFFB9382C), - // groupValue: selectedType, - // value: 1, - // onChanged: (value) { - // setSelectedType(value); - // }, - // ), - // Text('routine'), - // ], - // ), - // ), - // SizedBox( - // height: 12.0, - // ), - // Container( - // decoration: BoxDecoration( - // borderRadius: - // BorderRadius.all(Radius.circular(6.0)), - // border: Border.all( - // width: 1.0, - // color: HexColor("#CCCCCC"))), - // child: TextFields( - // hintText: widget.remarks, - // fontSize: 15.0, - // controller: widget.remarksController, - // maxLines: 3, - // minLines: 2, - // onChanged: (value) {}, - // ), - // ), + ), SizedBox( height: 50.0, ), @@ -259,11 +299,11 @@ class _UpdateProcedureWidgetState extends State { .updateProcedure .toUpperCase(), onPressed: () { - if (entityList.isEmpty == true) { - DrAppToastMsg.showErrorToast( - "Fill the mandatory procedure details"); - return; - } + // if (entityList.isEmpty == true) { + // DrAppToastMsg.showErrorToast( + // "Fill the mandatory procedure details"); + // return; + // } Navigator.pop(context); updateProcedure( orderNo: widget.orderNo, @@ -315,20 +355,32 @@ class _UpdateProcedureWidgetState extends State { updateProcedureReqModel.lineItemNo = 1; updateProcedureReqModel.orderNo = orderNo; - entityList.forEach((element) { + if (entityList.isNotEmpty) { + entityList.forEach((element) { + controls.add( + Controls(code: "remarks", controlValue: element.remarks ?? remarks), + ); + controls.add( + Controls(code: "ordertype", controlValue: '1'), + ); + + controlsProcedure.procedure = element.procedureId; + controlsProcedure.category = element.categoryID; + controlsProcedure.controls = controls; + }); + } else { controls.add( Controls( - code: "remarks", - controlValue: element.remarks.isNotEmpty ? element.remarks : ""), + code: "remarks", controlValue: remarks.isNotEmpty ? remarks : ""), ); controls.add( - Controls(code: "ordertype", controlValue: '1'), + Controls(code: "ordertype", controlValue: '0'), ); + } - controlsProcedure.procedure = element.procedureId; - controlsProcedure.category = element.categoryID; - controlsProcedure.controls = controls; - }); + controlsProcedure.procedure = procedureId; + controlsProcedure.category = categorieId; + controlsProcedure.controls = controls; // controlsProcedure.add(ProcedureDetail( // category: categorieId, procedure: procedureId, controls: controls)); updateProcedureReqModel.procedureDetail = controlsProcedure;