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/extensions/string_extensions.dart'; import 'package:diplomaticquarterapp/models/header_model.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_inp.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_details_page.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.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/data_display/medical/doctor_card.dart'; import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.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 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import '../../../widgets/dialogs/confirm_send_email_dialog.dart'; import 'PrescriptionIDeliveryAddressPage.dart'; class PrescriptionItemsPage extends StatelessWidget { final Prescriptions prescriptions; PrescriptionItemsPage({Key key, this.prescriptions}); @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: prescriptions.doctorName, baseViewModel: model, showNewAppBar: true, backgroundColor: Color(0xffF8F8F8), showNewAppBarTitle: true, body: Column( children: [ Expanded( child: SingleChildScrollView( child: Column( children: [ DoctorHeader( headerModel: HeaderModel( prescriptions.doctorName, prescriptions.doctorImageURL, prescriptions.speciality, "", prescriptions.name, DateUtil.convertStringToDate(prescriptions.appointmentDate), DateUtil.formatDateToTime(DateUtil.convertStringToDate(prescriptions.appointmentDate)), prescriptions.nationalityFlagURL, prescriptions.doctorRate, prescriptions.actualDoctorRate, prescriptions.noOfPatientsRate, model.user.emailAddress, ), isNeedToShowButton: projectViewModel.havePrivilege(13), showConfirmMessageDialog: false, onTap: () { showConfirmMessage(context, model); }, ), if (!prescriptions.isInOutPatient) ListView.separated( itemBuilder: (context, index) { return InkWell( onTap: () => Navigator.push( context, FadePage( page: PrescriptionDetailsPageINP( prescriptionReport: model.prescriptionReportListINP[index], ), ), ), child: Container( width: double.infinity, child: Card( margin: EdgeInsets.only(left: 16, right: 16, top: index == 0 ? 16 : 4, bottom: 4), shape: cardRadius(12), child: Padding( padding: EdgeInsets.only(top: 12, bottom: 20, left:projectViewModel.isArabic? 12:20, right: projectViewModel.isArabic? 20:12), child: Row( children: [ Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( model.prescriptionReportListINP[index].itemDescription.isNotEmpty ? model.prescriptionReportListINP[index].itemDescription : model.prescriptionReportListINP[index].itemDescriptionN ?? '', style: TextStyle( fontSize: 16, letterSpacing: -0.64, fontWeight: FontWeight.w600, ), ), mHeight(10), Row( children: [ Container( child: Card( child: Image.network( model.prescriptionReportListINP[index].imageSRCUrl, fit: BoxFit.cover, width: 60, height: 60, ), margin: EdgeInsets.zero, clipBehavior: Clip.antiAlias, shape: cardRadius(2000), ), clipBehavior: Clip.antiAlias, decoration: containerColorRadiusBorderWidth(Colors.white, 200, Colors.grey[200], 1), ), mWidth(12), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( TranslationBase.of(context).route + ": ", style: TextStyle( color: Colors.grey, fontSize: 10, letterSpacing: -0.4, fontWeight: FontWeight.w600, ), ), Text( model.prescriptionReportListINP[index].route, style: TextStyle( fontSize: 12, letterSpacing: -0.48, fontWeight: FontWeight.w600, ), ), ], ), Row( children: [ Text( TranslationBase.of(context).dailyDoses + ": ", style: TextStyle( color: Colors.grey, fontSize: 10, letterSpacing: -0.4, fontWeight: FontWeight.w600, ), ), Text( model.prescriptionReportListINP[index].doseDailyQuantity.toString(), style: TextStyle( fontSize: 12, letterSpacing: -0.48, fontWeight: FontWeight.w600, ), ), ], ), mHeight(12), Text( model.prescriptionReportListINP[index].remarks, style: TextStyle( color: Colors.grey, fontSize: 10, letterSpacing: -0.4, fontWeight: FontWeight.w600, ), ), ], ) ], ), ], ), ), Icon(Icons.arrow_forward_ios,size: 16,), ], ), ), ), ), ); }, separatorBuilder: (context, index) { return mHeight(8); }, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: model.prescriptionReportListINP.length) else ListView.separated( padding: EdgeInsets.all(21), itemBuilder: (context, index) { return 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, prescriptions: prescriptions, ), ), ); }, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all( Radius.circular(10.0), ), boxShadow: [ BoxShadow( color: Color(0xff000000).withOpacity(.05), blurRadius: 27, offset: Offset(0, -3), ), ], ), child: Padding( padding: EdgeInsets.only(top: 12, bottom: 20, left:projectViewModel.isArabic? 12:20, right: projectViewModel.isArabic? 20:12), child: Row( children: [ Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( (model.prescriptionReportEnhList[index].itemDescription.isNotEmpty ? model.prescriptionReportEnhList[index].itemDescription : model.prescriptionReportEnhList[index].itemDescriptionN ?? '') .toLowerCase() .capitalizeFirstofEach, style: TextStyle( fontSize: 16, color: Color(0xff2E303A), letterSpacing: -0.64, fontWeight: FontWeight.w600, ), ), mHeight(10), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Card( child: Image.network( model.prescriptionReportEnhList[index].imageSRCUrl, fit: BoxFit.cover, width: 48, height: 48, ), margin: EdgeInsets.zero, clipBehavior: Clip.antiAlias, shape: cardRadius(2000), ), mWidth(12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ myRichText(TranslationBase.of(context).route + ": ", model.prescriptionReportEnhList[index].route, projectViewModel.isArabic), myRichText( TranslationBase.of(context).dailyDoses + ": ", model.prescriptionReportEnhList[index].doseDailyQuantity.toString(), projectViewModel.isArabic), mHeight(9), Text( model.prescriptionReportEnhList[index].remarks, style: TextStyle( color: Color(0xff575757), fontSize: 12, letterSpacing: -0.4, fontWeight: FontWeight.w600, ), ), ], ), ) ], ), ], ), ), Icon(Icons.arrow_forward_ios,size: 16,), ], ), ), ), ); }, separatorBuilder: (context, index) { return mHeight(12); }, shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemCount: model.prescriptionReportEnhList.length), ], ), ), ), Container( width: double.infinity, padding: EdgeInsets.only(left: 16, right: 16, top: 16, bottom: 20), child: Container( width: MediaQuery.of(context).size.width * 0.8, child: SecondaryButton( label: TranslationBase.of(context).resendOrder, disabled: (!projectViewModel.havePrivilege(62)) || projectViewModel.user.outSA == 1 || model.isMedDeliveryAllowed == false, onTap: () { Navigator.push( context, FadePage( page: PrescriptionDeliveryAddressPage( prescriptions: prescriptions, prescriptionReportList: model.prescriptionReportList, prescriptionReportEnhList: model.prescriptionReportEnhList, ), ), ); }, color: Color(0xff359846), ), ), ) ], ), ), ); } 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, doctorID: prescriptions.doctorID, mes: TranslationBase.of(context).sendSuc, projectID: prescriptions.projectID); }, ), ); } }