import 'package:diplomaticquarterapp/core/enum/viewstate.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/buttons/button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../../widgets/dialogs/confirm_send_email_dialog.dart'; import 'PrescriptionIDeliveryAddressPage.dart'; class PrescriptionItemsPage extends StatelessWidget { final Prescriptions prescriptions; PrescriptionItemsPage({Key key, this.prescriptions}); //TODO @override Widget build(BuildContext context) { ProjectViewModel projectViewModel = Provider.of(context); return BaseView( onModelReady: (model) => model.getPrescriptionReport(prescriptions: prescriptions), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, appBarTitle: TranslationBase.of(context).prescriptions, baseViewModel: model, body: Container( height: MediaQuery.of(context).size.height * 0.8, child: Column( children: [ if (!prescriptions.isInOutPatient) ...List.generate( model.prescriptionReportList.length, (index) => InkWell( onTap: () => Navigator.push( context, FadePage( page: PrescriptionDetailsPage( prescriptionReport: model.prescriptionReportList[index], ), ), ), child: Container( width: double.infinity, margin: EdgeInsets.only(top: 10, left: 10, right: 10), padding: EdgeInsets.all(8.0), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all( Radius.circular(10.0), ), border: Border.all( color: Colors.grey[200], width: 0.5), ), child: Row( children: [ ClipRRect( borderRadius: BorderRadius.all(Radius.circular(5)), child: Image.network( model.prescriptionReportList[index] .imageSRCUrl, fit: BoxFit.cover, width: 60, height: 70, ), ), SizedBox( width: 10, ), Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Center( child: Texts(model .prescriptionReportList[index] .itemDescription .isNotEmpty ? model.prescriptionReportList[index] .itemDescription : model.prescriptionReportList[index] .itemDescriptionN)), )), Icon( Icons.arrow_forward_ios, size: 18, color: Colors.grey[500], ) ], ), ), )) else ...List.generate( model.prescriptionReportEnhList.length, (index) => InkWell( onTap: () { PrescriptionReport prescriptionReport = PrescriptionReport( imageSRCUrl: model .prescriptionReportEnhList[index].imageSRCUrl, itemDescription: model .prescriptionReportEnhList[index] .itemDescription, itemDescriptionN: model .prescriptionReportEnhList[index] .itemDescription, routeN: model.prescriptionReportEnhList[index].route, frequency: model .prescriptionReportEnhList[index].frequency, frequencyN: model .prescriptionReportEnhList[index].frequency, doseDailyQuantity: model .prescriptionReportEnhList[index] .doseDailyQuantity, days: model.prescriptionReportEnhList[index].days, itemID: model.prescriptionReportEnhList[index].itemID, remarks: model .prescriptionReportEnhList[index].remarks); Navigator.push( context, FadePage( page: PrescriptionDetailsPage( prescriptionReport: prescriptionReport, ), ), ); }, child: Container( margin: EdgeInsets.all(8.0), color: Colors.white, child: Row( children: [ ClipRRect( borderRadius: BorderRadius.all(Radius.circular(5)), child: Image.network( model .prescriptionReportEnhList[index].imageSRCUrl, fit: BoxFit.cover, width: 60, height: 70, ), ), SizedBox( width: 10, ), Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts(model.prescriptionReportEnhList[index] .itemDescription), ], ), ), ), Icon( Icons.arrow_forward_ios, size: 18, color: Colors.grey[500], ) ], ), ), ), ) ], ), ), bottomSheet: Container( width: double.infinity, height: MediaQuery.of(context).size.height * 0.25, color: Colors.grey[100], child: Column( children: [ Divider(), if(projectViewModel.havePrivilege(13)) Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( label: TranslationBase.of(context).sendCopy, onTap: () { showConfirmMessage(context,model); }, loading: model.state == ViewState.BusyLocal, ), ), Container( width: MediaQuery.of(context).size.width * 0.8, child: Button( label: TranslationBase.of(context).resendOrder, backgroundColor: Colors.green[800], onTap: (){ Navigator.push( context, FadePage( page: PrescriptionDeliveryAddressPage( prescriptions: prescriptions, prescriptionReportList: model.prescriptionReportList, prescriptionReportEnhList: model.prescriptionReportEnhList, ), ), ); }, )) ], ), ), ), ); } void showConfirmMessage(BuildContext context, PrescriptionsViewModel model) { showDialog( context: context, child: ConfirmSendEmailDialog( email: model.user.emailAddress, onTapSendEmail: () { model.sendPrescriptionEmail( appointmentDate: prescriptions.appointmentDate, patientID: prescriptions.patientID, clinicName: prescriptions.companyName, doctorName: prescriptions.doctorName, mes: TranslationBase.of(context).sendSuc, projectID: prescriptions.projectID); }, ), ); } }