import 'package:diplomaticquarterapp/core/enum/OrderService.dart'; import 'package:diplomaticquarterapp/core/model/er/PatientER.dart'; import 'package:diplomaticquarterapp/core/model/er/PatientER_RC.dart'; import 'package:diplomaticquarterapp/core/model/er/get_all_transportation_method_list_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/er/am_request_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; enum Direction { ToHospital, FromHospital } enum Way { OneWay, TwoWays } class SelectTransportationMethod extends StatefulWidget { final Function changeCurrentTab; final PatientER patientER; final PatientER_RC patientER_RC; final AmRequestViewModel amRequestViewModel; SelectTransportationMethod({Key? key, required this.changeCurrentTab, required this.patientER, required this.patientER_RC, required this.amRequestViewModel}); @override _SelectTransportationMethodState createState() => _SelectTransportationMethodState(); } class _SelectTransportationMethodState extends State { PatientERTransportationMethod _erTransportationMethod = PatientERTransportationMethod(); Direction _direction = Direction.FromHospital; Way _way = Way.OneWay; OrderService _orderService = OrderService.AMBULANCE; @override void initState() { super.initState(); // if (widget.patientER.direction != null) { // _direction = widget.patientER.direction == 0 ? Direction.ToHospital : Direction.FromHospital; // _way = widget.patientER.tripType == 1 ? Way.OneWay : Way.TwoWays; // _erTransportationMethod = widget.amRequestViewModel.amRequestModeList[(widget.patientER.selectedAmbulate - 1)]; // } else { // if (widget.amRequestViewModel.amRequestModeList.length != 0) _erTransportationMethod = widget.amRequestViewModel.amRequestModeList[widget.amRequestViewModel.amRequestModeList.length - 1]; // } //RC API Revamp if (widget.patientER_RC.transportationDetails!.direction != null) { _direction = widget.patientER_RC.transportationDetails!.direction == 0 ? Direction.ToHospital : Direction.FromHospital; _way = widget.patientER_RC.transportationDetails!.tripType == 1 ? Way.OneWay : Way.TwoWays; _erTransportationMethod = widget.amRequestViewModel.amRequestModeList[(widget.patientER_RC.transportationDetails!.ambulate! - 1)]; } else { if (widget.amRequestViewModel.amRequestModeList.length != 0) _erTransportationMethod = widget.amRequestViewModel.amRequestModeList[widget.amRequestViewModel.amRequestModeList.length - 1]; } } @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return AppScaffold( isShowAppBar: false, isShowDecPage: false, body: SingleChildScrollView( physics: BouncingScrollPhysics(), child: Container( margin: EdgeInsets.only(left: 12, right: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 12, ), Text(TranslationBase.of(context).transportHeading, style: TextStyle(fontSize: 16.0, letterSpacing: -0.64, fontWeight: FontWeight.w600)), Container( margin: EdgeInsets.only(top: 12), decoration: cardRadius(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...List.generate( widget.amRequestViewModel.amRequestModeList.length, (index) => InkWell( onTap: () { setState(() { _erTransportationMethod = widget.amRequestViewModel.amRequestModeList[index]; }); }, child: Container( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( flex: 4, child: ListTile( contentPadding: EdgeInsets.only(left: 0.0, right: 0.0), title: Row( children: [ Radio( value: widget.amRequestViewModel.amRequestModeList[index], groupValue: _erTransportationMethod, onChanged: (value) { setState(() { _erTransportationMethod = value!; }); }, ), Flexible( child: Text( projectViewModel.isArabic ? widget.amRequestViewModel.amRequestModeList[index].textN! : widget.amRequestViewModel.amRequestModeList[index].text!, style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, ), ), ), ], ), ), ), Expanded( flex: 1, child: Text( TranslationBase.of(context).sar + ' ${widget.amRequestViewModel.amRequestModeList[index].priceTotal}', style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, ), ), ) ], ), ), ), ), ], ), ), SizedBox( height: 12, ), Text(TranslationBase.of(context).directionHeading, style: TextStyle(fontSize: 16.0, letterSpacing: -0.64, fontWeight: FontWeight.w600)), Container( width: double.maxFinite, child: Row( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Expanded( child: InkWell( onTap: () { setState(() { _direction = Direction.ToHospital; }); }, child: Container( width: double.maxFinite, child: ListTile( contentPadding: EdgeInsets.only(left: 0.0, right: 0.0), title: Row( children: [ Radio( value: Direction.ToHospital, groupValue: _direction, onChanged: (value) { setState(() { _direction = value!; }); }, ), Text(TranslationBase.of(context).toHospital, style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, )), ], ), ), ), ), ), Expanded( child: InkWell( onTap: () { setState(() { _direction = Direction.FromHospital; }); }, child: Container( width: double.maxFinite, child: ListTile( contentPadding: EdgeInsets.only(left: 0.0, right: 0.0), title: Row( children: [ Radio( value: Direction.FromHospital, groupValue: _direction, onChanged: (value) { setState(() { _direction = value!; }); }, ), Text(TranslationBase.of(context).fromHospital, style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, )), ], ), ), ), ), ), ], ), ), if (_direction == Direction.ToHospital) Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), Text(TranslationBase.of(context).wayHeading, style: TextStyle(fontSize: 16.0, letterSpacing: -0.64, fontWeight: FontWeight.w600)), SizedBox( height: 5, ), Container( child: Row( children: [ Expanded( child: InkWell( onTap: () { setState(() { _way = Way.OneWay; }); }, child: Container( child: ListTile( contentPadding: EdgeInsets.only(left: 0.0, right: 0.0), title: Row( children: [ Radio( value: Way.OneWay, groupValue: _way, onChanged: (value) { setState(() { _way = value!; }); }, ), Text(TranslationBase.of(context).oneDirec, style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, )), ], ), ), ), ), ), Expanded( child: InkWell( onTap: () { setState(() { _way = Way.TwoWays; }); }, child: Container( child: ListTile( contentPadding: EdgeInsets.only(left: 0.0, right: 0.0), title: Row( children: [ Radio( value: Way.TwoWays, groupValue: _way, onChanged: (value) { setState(() { _way = value!; }); }, ), Text( TranslationBase.of(context).twoDirec, style: TextStyle( fontSize: 12.0, letterSpacing: -0.48, fontWeight: FontWeight.w600, ), ), ], ), ), ), ), ), ], ), ), // SizedBox( // height: 30, // ), ], ), Container( margin: EdgeInsets.only(top: 12), decoration: cardRadius(12), padding: EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(TranslationBase.of(context).billAmount + " : ", style: TextStyle(fontSize: 16.0, letterSpacing: -0.64, fontWeight: FontWeight.w600)), SizedBox(height: 16.0), Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(TranslationBase.of(context).patientShareTotalToDo, style: TextStyle(fontSize: 13.0, letterSpacing: -0.64, fontWeight: FontWeight.w600)), Text( TranslationBase.of(context).sar + (_way == Way.OneWay ? ' ${_erTransportationMethod.priceTotal}' : ' ${(_erTransportationMethod.priceTotal * 2)}'), style: TextStyle(fontSize: 16.0, letterSpacing: -0.64, fontWeight: FontWeight.bold), ), ], ) ], ), ), SizedBox( height: 100, ), ], ), ), ), bottomSheet: Container( color: Theme.of(context).scaffoldBackgroundColor, padding: EdgeInsets.all(12.0), child: Row( children: [ Expanded( flex: 1, child: DefaultButton( TranslationBase.of(context).back, () { Navigator.pop(context); }, )), SizedBox(width: 12.0), Expanded( flex: 1, child: DefaultButton( TranslationBase.of(context).next, () { setState(() { // widget.patientER.transportationMethodId = (widget.amRequestViewModel.amRequestModeList.indexOf(_erTransportationMethod) + 1); // widget.patientER.direction = _direction == Direction.ToHospital ? 1 : 0; // widget.patientER.tripType = _way == Way.TwoWays ? 0 : 1; // widget.patientER.selectedAmbulate = (widget.amRequestViewModel.amRequestModeList.indexOf(_erTransportationMethod) + 1); // widget.patientER.patientERTransportationMethod = _erTransportationMethod; // widget.patientER.orderServiceID = _orderService.getIdOrderService(); // widget.patientER.pickupUrgency = 1; // widget.patientER.lineItemNo = 1; // widget.patientER.cost = _erTransportationMethod.price.toDouble(); // widget.patientER.vAT = _erTransportationMethod.priceVAT ?? 0; // widget.patientER.totalPrice = _erTransportationMethod.priceTotal.toDouble(); // widget.changeCurrentTab(1); // widget.patientER_RC.transportationDetails.id = (widget.amRequestViewModel.amRequestModeList.indexOf(_erTransportationMethod) + 1); widget.patientER_RC.transportationDetails!.direction = _direction == Direction.ToHospital ? 0 : 1; widget.patientER_RC.transportationDetails!.tripType = _way == Way.TwoWays ? 0 : 1; widget.patientER_RC.transportationDetails!.ambulate = (widget.amRequestViewModel.amRequestModeList.indexOf(_erTransportationMethod) + 1); widget.patientER_RC.transportationDetails!.transportationType = _erTransportationMethod.iD.toString(); widget.patientER_RC.patientERTransportationMethod = _erTransportationMethod; widget.patientER_RC.transportationDetails!.pickupUrgency = 1; // widget.patientER.orderServiceID = _orderService.getIdOrderService(); // widget.patientER.lineItemNo = 1; // widget.patientER.cost = _erTransportationMethod.price.toDouble(); // widget.patientER.vAT = _erTransportationMethod.priceVAT ?? 0; // widget.patientER.totalPrice = _erTransportationMethod.priceTotal.toDouble(); widget.changeCurrentTab(1); }); }, color: CustomColors.green, ), ), ], ), ), ); } }