import 'package:doctor_app_flutter/core/enum/filter_type.dart';
import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/core/viewModel/radiology_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/patients/profile/radiology/radiology_details_page.dart';
import 'package:doctor_app_flutter/screens/procedures/add_radiology_order.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/add-order/addNewOrder.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/app_texts_widget.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 RadiologyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    ProjectViewModel projectViewModel = Provider.of(context);
    final routeArgs = ModalRoute.of(context).settings.arguments as Map;
    PatiantInformtion patient = routeArgs['patient'];
    String patientType = routeArgs['patientType'];
    String arrivalType = routeArgs['arrivalType'];

    return BaseView<ProcedureViewModel>(
      onModelReady: (model) => model.getPatientRadOrders(patient,patientType: patientType),
      builder: (_, model, widget) => AppScaffold(
        isShowAppBar: true,
        backgroundColor: Colors.grey[100],
        // appBarTitle: TranslationBase.of(context).radiology,
        appBar: PatientProfileHeaderNewDesignAppBar(
            patient, patient.patientType.toString() ?? '0', arrivalType),
        baseViewModel: model,
        body: FractionallySizedBox(
          widthFactor: 1.0,
          child: ListView(
            physics: BouncingScrollPhysics(),
            children: <Widget>[
              SizedBox(
                height: 12,
              ),
              if(model.radiologyList.isNotEmpty && patient.patientStatusType != 43)
                Padding(
                padding: const EdgeInsets.all(8.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    AppText(
                      'Radiology',
                      style: "caption2",
                      color: Colors.black,
                      fontSize: 13,
                    ),
                    AppText(
                      'Result',
                      bold: true,
                      fontSize: 22,
                    ),
                  ],
                ),
              ),
              if(patient.patientStatusType == 43)
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      AppText(
                        'Radiology',
                        style: "caption2",
                        color: Colors.black,
                        fontSize: 13,
                      ),
                      AppText(
                        'Result',
                        bold: true,
                        fontSize: 22,
                      ),
                    ],
                  ),
                ),
              if (patientType != null &&
                  patientType == '7' &&
                  patient.patientStatusType == 43)
              AddNewOrder( onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (context) => AddSelectedRadiologyOrder(
                        patient: patient,
                        model: model,
                      )),
                );
              },label: 'Apply for Radiology Order',),
              ...List.generate(
                  model.radiologyList.length,
                  (index) => InkWell(
                        onTap: () => Navigator.push(
                          context,
                          FadePage(
                            page: RadiologyDetailsPage(
                              finalRadiology: model.radiologyList[index],
                              patient: patient,
                            ),
                          ),
                        ),
                        child:  DoctorCard(
                          doctorName: model.radiologyList[index].doctorName,
                          profileUrl: model.radiologyList[index].doctorImageURL,
                          invoiceNO: '${model.radiologyList[index].invoiceNo}',
                          branch: '${model.radiologyList[index].projectName}',
                          clinic: model.radiologyList[index].clinicDescription,
                  appointmentDate: model.radiologyList[index].orderDate ?? model.radiologyList[index].reportData,
                ),
              )),
                if(model.radiologyList.isEmpty && patient.patientStatusType != 43)
                Center(
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      SizedBox(height: 100,),
                      Image.asset('assets/images/no-data.png'),
                      Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: AppText('No Radiology Found'),
                      )

                    ],
                  ),
                )
            ],
          ),
        ),
      ),
    );
  }
}
