import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/model/procedure/ControlsModel.dart'; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/model/procedure/update_procedure_request_model.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'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import '../../widgets/shared/text_fields/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; void updateProcedureForm(context, {required String procedureName, required int orderNo, required int limetNo, required PatiantInformtion patient, required String orderType, required String procedureId, required String remarks, required ProcedureViewModel model, required String categoreId}) { //ProcedureViewModel model2 = ProcedureViewModel(); TextEditingController remarksController = TextEditingController(); TextEditingController orderController = TextEditingController(); showModalBottomSheet( context: context, isScrollControlled: true, builder: (BuildContext bc) { return UpdateProcedureWidget( procedureName: procedureName, remarks: remarks, remarksController: remarksController, patient: patient, model: model, procedureId: procedureId, categoryId: categoreId, orderNo: orderNo, limetNo: limetNo, ); }); } class UpdateProcedureWidget extends StatefulWidget { final PatiantInformtion patient; final ProcedureViewModel model; final String procedureName; final String remarks; final TextEditingController remarksController; final String procedureId; final String categoryId; final int orderNo; final int limetNo; UpdateProcedureWidget( {required this.model, required this.procedureName, required this.remarks, required this.remarksController, required this.patient, required this.procedureId, required this.categoryId, required this.orderNo, required this.limetNo}); @override _UpdateProcedureWidgetState createState() => _UpdateProcedureWidgetState(); } class _UpdateProcedureWidgetState extends State { int selectedType = 0; setSelectedType(int val) { setState(() { selectedType = val; }); } void initState() { super.initState(); widget.remarksController.text = widget.remarks; } List entityList = []; dynamic selectedCategory; @override Widget build(BuildContext context) { final screenSize = MediaQuery.of(context).size; return StatefulBuilder(builder: (BuildContext context, StateSetter setState /*You can rename this!*/) { return BaseView( onModelReady: (model) => model.getCategory(), builder: (BuildContext context, ProcedureViewModel model, Widget? child) => NetworkBaseView( baseViewModel: model, child: SingleChildScrollView( child: Container( height: MediaQuery.of(context).size.height * 0.9, child: Form( child: Padding( padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 10.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( widget.procedureName.toUpperCase(), fontWeight: FontWeight.w700, ), SizedBox( height: 30.0, ), // Container( // height: screenSize.height * 0.070, // child: InkWell( // onTap: model.categoryList != null && // model.categoryList.length > 0 // ? () { // ListSelectDialog dialog = // ListSelectDialog( // list: model.categoryList, // attributeName: 'categoryName', // attributeValueId: 'categoryId', // okText: // TranslationBase.of(context).ok, // okFunction: (selectedValue) { // setState(() { // selectedCategory = // selectedValue; // model.getProcedureCategory( // categoryName: // selectedCategory[ // 'categoryName'], // categoryID: selectedCategory[ // 'categoryId'] <= // 9 // ? "0" + // selectedCategory[ // 'categoryId'] // .toString() // : selectedCategory[ // 'categoryId'] // .toString()); // }); // }, // ); // showDialog( // barrierDismissible: false, // context: context, // builder: (BuildContext context) { // return dialog; // }, // ); // //model.getProcedureCategory(); // } // : null, // child: TextField( // decoration: textFieldSelectorDecoration( // TranslationBase.of(context) // .procedureCategorise, // selectedCategory != null // ? selectedCategory['categoryName'] // : null, // true, // suffixIcon: Icon( // Icons.search, // color: Colors.black, // )), // enabled: false, // ), // ), // ), // if (widget.model.categoriesList.length != 0) // NetworkBaseView( // baseViewModel: model, // child: selectedCategory != null // ? selectedCategory['categoryId'] == // 02 || // selectedCategory[ // 'categoryId'] == // 03 || // selectedCategory[ // 'categoryId'] == // 55 // ? 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: (int? value) { setSelectedType(value!); }, ), Text('routine'), Radio( activeColor: Color(0xFFB9382C), groupValue: selectedType, value: 1, onChanged: (int? value) { setSelectedType(value!); }, ), Text(TranslationBase.of(context).urgent ?? ""), ], ), ), 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, hintText: widget.remarksController.text.isEmpty ? 'No Remarks Added' : '', maxLines: 3, minLines: 2, onChanged: (value) {}, ), ), SizedBox( height: 70.0, ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 2), child: Column( //alignment: WrapAlignment.center, children: [ AppButton( color: Color(0xff359846), title: TranslationBase.of(context).updateProcedure!.toUpperCase(), onPressed: () { // if (entityList.isEmpty == true && // widget.remarksController.text == // widget.remarks) { // DrAppToastMsg.showErrorToast( // "Fill the mandatory procedure details"); // return; // } Navigator.pop(context); updateProcedure( limetNO: widget.limetNo, orderNo: widget.orderNo, orderType: selectedType.toString(), categorieId: widget.categoryId, procedureId: widget.procedureId, entityList: entityList, patient: widget.patient, model: widget.model, remarks: widget.remarksController.text); // authorizationForm(context); }, ), SizedBox( height: 20.0, ), AppButton( title: TranslationBase.of(context).cancel, color: Color(0xFFB9382C), onPressed: () { Navigator.pop(context); }, ) ], ), ), ], ), ), )), ), ), ); }); } updateProcedure( {required ProcedureViewModel model, required String remarks, required int limetNO, required int orderNo, String? newProcedureId, String? newCategorieId, required List entityList, required String orderType, required String procedureId, required PatiantInformtion patient, required String categorieId}) async { UpdateProcedureRequestModel updateProcedureReqModel = new UpdateProcedureRequestModel(); List controls = []; ProcedureDetail controlsProcedure = new ProcedureDetail(); updateProcedureReqModel.appointmentNo = patient.appointmentNo; updateProcedureReqModel.episodeID = patient.episodeNo; updateProcedureReqModel.patientMRN = patient.patientMRN; updateProcedureReqModel.lineItemNo = limetNO; updateProcedureReqModel.orderNo = orderNo; // if (entityList.isNotEmpty) { // entityList.forEach((element) { // controls.add( // Controls(code: "remarks", controlValue: element.remarks ?? ''), // ); // controls.add( // Controls(code: "ordertype", controlValue: '1'), // ); // // controlsProcedure.procedure = element.procedureId; // controlsProcedure.category = int.parse(element.categoryID) > 9 // ? element.categoryID // : "0" + element.categoryID; // controlsProcedure.controls = controls; // }); // } // else { { controls.add( Controls(code: "remarks", controlValue: remarks.isNotEmpty ? remarks : ""), ); controls.add( Controls(code: "ordertype", controlValue: orderType), ); controlsProcedure.procedure = procedureId; controlsProcedure.category = '0' + categorieId; controlsProcedure.controls = controls; } // controlsProcedure.add(ProcedureDetail( // category: categorieId, procedure: procedureId, controls: controls)); updateProcedureReqModel.procedureDetail = controlsProcedure; await model.updateProcedure(updateProcedureRequestModel: updateProcedureReqModel, mrn: patient.patientMRN); if (model.state == ViewState.ErrorLocal) { Helpers.showErrorToast(model.error); model.getProcedure(mrn: patient.patientMRN); } else if (model.state == ViewState.Idle) { DrAppToastMsg.showSuccesToast('procedure has been updated'); model.getProcedure(mrn: patient.patientMRN); } } bool isEntityListSelected(EntityList masterKey) { Iterable history = entityList.where((element) => masterKey.procedureId == element.procedureId); if (history.length > 0) { return true; } return false; } InputDecoration textFieldSelectorDecoration(String hintText, String selectedText, bool isDropDown, {Icon? suffixIcon}) { return InputDecoration( focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderRadius: BorderRadius.circular(8), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderRadius: BorderRadius.circular(8), ), disabledBorder: OutlineInputBorder( borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderRadius: BorderRadius.circular(8), ), hintText: selectedText != null ? selectedText : hintText, suffixIcon: isDropDown ? suffixIcon != null ? suffixIcon : Icon( Icons.arrow_drop_down, color: Colors.black, ) : null, hintStyle: TextStyle( fontSize: 14, color: Colors.grey.shade600, ), ); } }