import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/config/config.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/post_procedure_req_model.dart'; import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.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/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient_profile_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.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/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; class ProcedureScreen extends StatefulWidget { @override _ProcedureScreenState createState() => _ProcedureScreenState(); } class _ProcedureScreenState extends State { int testNum = 1; PatiantInformtion patient; TextEditingController procedureController = TextEditingController(); @override Widget build(BuildContext context) { final routeArgs = ModalRoute.of(context).settings.arguments as Map; patient = routeArgs['patient']; return BaseView( onModelReady: (model) => model.getProcedure(), builder: (BuildContext context, ProcedureViewModel model, Widget child) => AppScaffold( isShowAppBar: true, appBarTitle: 'ORDER PROCEDURE', body: NetworkBaseView( baseViewModel: model, child: SingleChildScrollView( child: Container( child: Column( children: [ Padding( padding: EdgeInsets.all(12.0), child: Row( children: [ AvatarWidget( Icon( patient.genderDescription == "Male" ? DoctorApp.male : DoctorApp.female_icon, size: 70, color: Colors.white, ), ), SizedBox( width: 20, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( patient.firstName + ' ' + patient.lastName, color: Colors.black, fontWeight: FontWeight.bold, ), Row( children: [ AppText( TranslationBase.of(context).fileNo, color: Colors.black, fontWeight: FontWeight.bold, ), SizedBox( width: 5.0, ), AppText( patient.patientId.toString(), color: Colors.black, fontWeight: FontWeight.normal, ), ], ), ], ) ], ), ), Divider( height: 1.0, thickness: 1.0, color: Colors.grey, ), if (model.procedureList.length != 0) SizedBox( height: model.procedureList[0].rowcount == 0 ? 200.0 : 10.0), //model.prescriptionList == null if (model.procedureList.length != 0) model.procedureList[0].rowcount == 0 ? Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ InkWell( onTap: () { addSelectedProcedure(context); //model.postPrescription(); }, child: CircleAvatar( radius: 65, backgroundColor: Color(0XFFB8382C), child: CircleAvatar( radius: 60, backgroundColor: Colors.white, child: Icon( Icons.add, color: Colors.black, size: 45.0, ), ), ), ), SizedBox( height: 15.0, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ AppText( 'NO ORDER FOR PROCEDURE LISTED', color: Colors.black, fontWeight: FontWeight.w900, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ AppText( TranslationBase.of(context).addNow, color: Color(0XFFB8382C), fontWeight: FontWeight.w900, ), ], ), ], ) : Padding( padding: EdgeInsets.all(16.0), child: NetworkBaseView( baseViewModel: model, child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ InkWell( child: Container( height: 50.0, width: 450.0, decoration: BoxDecoration( border: Border.all( color: Colors.grey), borderRadius: BorderRadius.circular(10.0), ), child: Padding( padding: EdgeInsets.all(8.0), child: Row( mainAxisAlignment: MainAxisAlignment .spaceBetween, children: [ AppText( ' Add more procedure', fontWeight: FontWeight.w100, fontSize: 12.5, ), Icon( Icons.add, color: Color(0XFFB8382C), ) ], ), ), ), onTap: () { addSelectedProcedure(context); }, ), // Container( // decoration: BoxDecoration( // borderRadius: BorderRadius.all( // Radius.circular(6.0)), // border: Border.all( // width: 1.0, // color: HexColor("#CCCCCC"))), // child: AppTextFormField( // labelText: 'Add more procedure', // borderColor: Colors.white, // //suffixIcon: Icons.search, // // //textInputType: TextInputType.number, // inputFormatter: ONLY_NUMBERS, // onTap: () { // addSelectedProcedure(context); // }, // ), // ), SizedBox( height: 35.0, ), ...List.generate( model.procedureList[0].rowcount, (index) => Container( child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment .spaceBetween, children: [ Container( height: 120.0, width: 45.0, child: Column( children: [ AppText( '8\nDEC', color: Colors.green, ) ], ), ), Container( height: 120, width: 325.0, child: Column( children: [ Row( children: [ AppText( 'Code #: ', fontWeight: FontWeight .w900, fontSize: 15.0, ), AppText( model .procedureList[ 0] .entityList[ index] .procedureId .toString(), fontSize: 13.0, ), SizedBox( width: 12.0, ), AppText( 'Order Type: ', fontWeight: FontWeight .w900, fontSize: 15.0, ), AppText( 'Urgent', fontSize: 13.0, color: Colors.red, ), ], ), Row( children: [ Container( child: Expanded( child: AppText( model .procedureList[ 0] .entityList[ index] .procedureName, fontWeight: FontWeight .w800, ), ), ) ], ), Row( children: [ AppText( 'Price: ', fontWeight: FontWeight .w900, ), Expanded( child: AppText( model .procedureList[ 0] .entityList[ index] .price .toString(), fontSize: 13.0), ) ], ), SizedBox( height: 10.0, ), Row( children: [ AppText( 'Some short remark about the procedure', fontSize: 13.5, ), ], ), SizedBox( height: 10.0, ), Divider( height: 5.0, thickness: 1.0, color: Colors.grey, ) // SizedBox( // height: 40, // ), ], ), ), Container( width: 30, height: 120, child: Column( children: [ Icon(Icons.edit) ], ), ) ], ), ], ), ), ), ], ), ), ) ], ), ), ), )), ); } } postProcedure({ProcedureViewModel model}) async { model = new ProcedureViewModel(); PostProcedureReqModel postProcedureReqModel = new PostProcedureReqModel(); List controls = List(); List controlsProcedure = List(); postProcedureReqModel.appointmentNo = 2016054575; postProcedureReqModel.episodeID = 200012166; postProcedureReqModel.patientMRN = 3120725; postProcedureReqModel.vidaAuthTokenID = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxNDg1IiwianRpIjoiZjQ4YTk0OTQtYTczZS00MDI3LWI2MjgtNzc4MjAwMzUyYWEzIiwiZW1haWwiOiJNb2hhbWVkLlJlc3dhbkBjbG91ZHNvbHV0aW9uLXNhLmNvbSIsImlkIjoiMTQ4NSIsIk5hbWUiOiJTSEFLRVJBIFBBUlZFRU4gKFVTRUQgQlkgRVNFUlZJQ0VTKSIsIkVtcGxveWVlSWQiOiIxNDg1IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiIxNDg1IiwiU0VTU0lPTklEIjoiMjE1ODUyMTAiLCJDbGluaWNJZCI6IjMiLCJyb2xlIjoiRE9DVE9SUyIsIm5iZiI6MTYwODM2NDU2OCwiZXhwIjoxNjA5MjI4NTY4LCJpYXQiOjE2MDgzNjQ1Njh9.YLbvq5nxPn8o9ZYkcbc5YAX7Jy23Mm0s33oRmE8GHDI'; controls.add( Controls(code: 'Remarks', controlValue: 'Testing'), ); controlsProcedure.add( Procedures(category: "02", procedure: "02011002", controls: controls)); postProcedureReqModel.procedures = controlsProcedure; await model.postProcedure(postProcedureReqModel); DrAppToastMsg.showSuccesToast('Procedure had been added'); if (model.state == ViewState.ErrorLocal) { helpers.showErrorToast(model.error); } } void addSelectedProcedure(context) { TextEditingController procedureController = TextEditingController(); showModalBottomSheet( context: context, builder: (BuildContext bc) { return BaseView( onModelReady: (model) => model.getCategories(), builder: (BuildContext context, ProcedureViewModel model, Widget child) => NetworkBaseView( baseViewModel: model, child: SingleChildScrollView( child: Container( height: 490, child: Padding( padding: EdgeInsets.all(12.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( 'Select Procedure'.toUpperCase(), fontWeight: FontWeight.w900, ), if (model.categoriesList.length != 0) Container( height: 120.0, child: ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, itemCount: model.categoriesList[0].rowcount, itemBuilder: (BuildContext ctxt, int index) { return Container( child: AppText(model.categoriesList[0] .entityList[index].procedureName), ); }), ), SizedBox( height: 0.0, ), Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(6.0)), border: Border.all( width: 1.0, color: HexColor("#CCCCCC"))), child: AppTextFormField( labelText: 'Add Delected Procedures'.toUpperCase(), borderColor: Colors.white, textInputType: TextInputType.text, inputFormatter: ONLY_LETTERS, controller: procedureController, ), ), SizedBox( height: 80.0, ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), child: Wrap( alignment: WrapAlignment.center, children: [ AppButton( title: TranslationBase.of(context).addMedication, onPressed: () { Navigator.pop(context); postProcedure(); }, ), ], ), ), ], ) ], ), ), ), ), ), ); }); }