import 'package:doctor_app_flutter/client/base_app_client.dart'; 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/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/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'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; void updateProcedureForm(context, {String procedureName, PatiantInformtion patient, String orderType, String procedureId, String remarks, String categoreId}) { ProcedureViewModel model = 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, ); }); } 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; UpdateProcedureWidget( {this.model, this.procedureName, this.remarks, this.remarksController, this.patient, this.procedureId, this.categoryId}); @override _UpdateProcedureWidgetState createState() => _UpdateProcedureWidgetState(); } class _UpdateProcedureWidgetState extends State { int selectedType = 0; setSelectedType(int val) { setState(() { selectedType = val; }); } @override Widget build(BuildContext context) { return StatefulBuilder(builder: (BuildContext context, StateSetter setState /*You can rename this!*/) { return Container( height: MediaQuery.of(context).size.height * 0.55, 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( 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(TranslationBase.of(context).regular), ], ), ), 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, controller: widget.remarksController, maxLines: 5, minLines: 3, ), ), SizedBox( height: 100.0, ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 2), child: Wrap( alignment: WrapAlignment.center, children: [ AppButton( title: TranslationBase.of(context) .updateProcedure .toUpperCase(), onPressed: () { Navigator.pop(context); updateProcedure( orderType: selectedType.toString(), categorieId: widget.categoryId, procedureId: widget.procedureId, patient: widget.patient, model: widget.model, remarks: widget.remarksController.text); // authorizationForm(context); }, ), ], ), ), ], ), ), )); }); } updateProcedure( {ProcedureViewModel model, String remarks, String orderType, String procedureId, PatiantInformtion patient, String categorieId}) async { UpdateProcedureRequestModel updateProcedureReqModel = new UpdateProcedureRequestModel(); List controls = List(); ProcedureDetail controlsProcedure = new ProcedureDetail(); updateProcedureReqModel.appointmentNo = patient.appointmentNo; updateProcedureReqModel.episodeID = patient.episodeNo; updateProcedureReqModel.patientMRN = patient.patientMRN; updateProcedureReqModel.lineItemNo = 1; updateProcedureReqModel.orderNo = 0; controls.add( Controls(code: "remarks", controlValue: remarks.isEmpty ? '' : remarks), ); controls.add( Controls(code: "ordertype", controlValue: "1"), ); controlsProcedure.procedure = procedureId; controlsProcedure.category = 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'); } } }