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_inp.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<PrescriptionsViewModel>(
      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.prescriptionReportListINP.length,
                    (index) => InkWell(
                          onTap: () => Navigator.push(
                            context,
                            FadePage(
                              page: PrescriptionDetailsPageINP(
                                prescriptionReport:
                                    model.prescriptionReportListINP[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: <Widget>[
                                ClipRRect(
                                  borderRadius:
                                      BorderRadius.all(Radius.circular(5)),
                                  child: Image.network(
                                    model.prescriptionReportListINP[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
                                              .prescriptionReportListINP[index]
                                              .itemDescription
                                              .isNotEmpty
                                          ? model
                                              .prescriptionReportListINP[index]
                                              .itemDescription
                                          : model
                                                  .prescriptionReportListINP[
                                                      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: <Widget>[
                          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: <Widget>[
                                  Texts(model.prescriptionReportEnhList[index]
                                          .itemDescription.isNotEmpty
                                      ? model.prescriptionReportEnhList[index]
                                          .itemDescription
                                      : model.prescriptionReportEnhList[index]
                                              .itemDescriptionN ??
                                          ''),
                                ],
                              ),
                            ),
                          ),
                          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: <Widget>[
              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,
              doctorID: prescriptions.doctorID,
              mes: TranslationBase.of(context).sendSuc,
              projectID: prescriptions.projectID);
        },
      ),
    );
  }
}
