import 'package:doctor_app_flutter/core/enum/filter_type.dart';
import 'package:doctor_app_flutter/core/viewModel/prescription_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/prescriptions_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.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/screens/prescription/add_prescription_form.dart';
import 'package:doctor_app_flutter/screens/prescription/prescription_items_page.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier_new.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/doctor_card.dart';
import 'package:doctor_app_flutter/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class PrescriptionsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    PatiantInformtion patient = routeArgs['patient'];
    String patientType = routeArgs['patientType'];
    String arrivalType = routeArgs['arrivalType'];
    ProjectViewModel projectViewModel = Provider.of(context);
    return BaseView<PrescriptionViewModel>(
        onModelReady: (model) => model.getPrescriptions(patient),
        builder: (_, model, w) => AppScaffold(
              baseViewModel: model,
              isShowAppBar: true,
              appBar: PatientProfileHeaderNewDesignAppBar(
                  patient, patientType ?? '0', arrivalType),
              body: FractionallySizedBox(
                widthFactor: 1.0,
                child: ListView(
                  physics: BouncingScrollPhysics(),
                  children: <Widget>[
                    SizedBox(
                      height: 12,
                    ),
                    Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Texts(
                            'Order',
                            style: "caption2",
                            color: Colors.black,
                            fontSize: 13,
                          ),
                          Texts(
                            'Prescriptions',
                            bold: true,
                            fontSize: 22,
                          ),
                        ],
                      ),
                    ),
                    if (patientType != null &&
                        patientType == '7' &&
                        patient.patientStatusType == 43)
                      InkWell(
                        onTap: () {
                          addPrescriptionForm(
                              context, model, patient, model.prescriptionList);
                        },
                        child: Container(
                          width: double.maxFinite,
                          height: 140,
                          margin: EdgeInsets.all(10),
                          decoration: BoxDecoration(
                            color: Colors.grey[300],
                            borderRadius: BorderRadius.circular(10),
                          ),
                          child: Center(
                            child: Container(
                              height: 90,
                              child: Column(
                                children: [
                                  Container(
                                    height: 40,
                                    width: 40,
                                    decoration: BoxDecoration(
                                      color: Colors.grey[600],
                                      borderRadius: BorderRadius.circular(10),
                                    ),
                                    child: Center(
                                      child: Icon(
                                        Icons.add,
                                        color: Colors.white,
                                      ),
                                    ),
                                  ),
                                  SizedBox(
                                    height: 10,
                                  ),
                                  Texts(
                                    'Apply for New Prescriptions Order',
                                    color: Colors.grey[600],
                                    fontWeight: FontWeight.w600,
                                  )
                                ],
                              ),
                            ),
                          ),
                        ),
                      ),
                    ...List.generate(
                        model.prescriptionsList.length,
                        (index) => InkWell(
                            onTap: () => Navigator.push(
                                  context,
                                  FadePage(
                                    page: PrescriptionItemsPage(
                                      prescriptions:
                                          model.prescriptionsList[index],
                                      patient: patient,
                                      patientType: patientType,
                                      arrivalType: arrivalType,
                                    ),
                                  ),
                                ),
                            child: DoctorCard(
                              doctorName:
                                  model.prescriptionsList[index].doctorName,
                              profileUrl:
                                  model.prescriptionsList[index].doctorImageURL,
                              branch: model.prescriptionsList[index].name,
                              clinic: model
                                  .prescriptionsList[index].clinicDescription,
                              isPrescriptions: true,
                              appointmentDate:
                                  DateUtils.getDateTimeFromServerFormat(
                                model.prescriptionsList[index].appointmentDate,
                              ),
                            )))
                  ],
                ),
              ),
            ));
  }
}
