import 'package:doctor_app_flutter/core/enum/filter_type.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/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.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'];
    return BaseView<RadiologyViewModel>(
      onModelReady: (model) => model.getPatientRadOrders(patient),
      builder: (_, model, widget) => AppScaffold(
        isShowAppBar: true,
        appBarTitle: TranslationBase.of(context).radiology,
        baseViewModel: model,
        body: FractionallySizedBox(
          widthFactor: 1.0,
          child: ListView(
            physics: BouncingScrollPhysics(),
            children: <Widget>[
              Row(
                children: <Widget>[
                  Expanded(
                    flex: 1,
                    child: InkWell(
                      onTap: () => model.setFilterType(FilterType.Clinic),
                      child: ListTile(
                        title: Text(TranslationBase.of(context).clinic),
                        leading: Radio(
                          value: FilterType.Clinic,
                          groupValue: model.filterType,
                          onChanged: (FilterType value) {
                            model.setFilterType(value);
                          },
                        ),
                      ),
                    ),
                  ),
                  Expanded(
                    flex: 1,
                    child: InkWell(
                      onTap: () => model.setFilterType(FilterType.Hospital),
                      child: ListTile(
                        title: Text(TranslationBase.of(context).hospital),
                        leading: Radio(
                          value: FilterType.Hospital,
                          groupValue: model.filterType,
                          onChanged: (FilterType value) {
                            model.setFilterType(value);
                          },
                        ),
                      ),
                    ),
                  )
                ],
              ),
              ...List.generate(
                model.finalRadiologyList.length,
                (index) => AppExpandableNotifier(
                    title: model.finalRadiologyList[index].filterName,
                    bodyWidget: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: model
                          .finalRadiologyList[index].finalRadiologyList
                          .map((radiology) {
                        return InkWell(
                          onTap: () => Navigator.push(
                            context,
                            FadePage(
                              page: RadiologyDetailsPage(
                                finalRadiology: radiology,
                                patient: patient,
                              ),
                            ),
                          ),
                          child: DoctorCard(
                            isInOutPatient: radiology.isInOutPatient,
                            isLiveCareAppointment:
                                radiology.isLiveCareAppointment,
                            name: radiology.doctorName,
                            profileUrl: radiology.doctorImageURL,
                            billNo: '${radiology.invoiceNo}',
                            subName: '${radiology.projectName}',
                            date: projectViewModel.isArabic
                                ? DateUtils.getMonthDayYearDateFormattedAr(
                                    radiology.orderDate)
                                : DateUtils.getMonthDayYearDateFormatted(
                                    radiology.orderDate),
                          ),
                        );
                      }).toList(),
                    )),
              )
            ],
          ),
        ),
      ),
    );
  }
}
