import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/OBGyneProcedureListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/DoctorView.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class SearchResults extends StatefulWidget {
  List<DoctorList> doctorsList = [];
  List<PatientDoctorAppointmentList> patientDoctorAppointmentListHospital;
  bool isLiveCareAppointment;
  bool isObGyneAppointment;
  OBGyneProcedureListResponse obGyneProcedureListResponse;

  SearchResults({@required this.doctorsList, this.patientDoctorAppointmentListHospital, this.isObGyneAppointment = false, @required this.isLiveCareAppointment, this.obGyneProcedureListResponse});

  @override
  _SearchResultsState createState() => _SearchResultsState();
}

class _SearchResultsState extends State<SearchResults> {
  List<DoctorList> tempList = [];
  ProjectViewModel projectViewModel;

  @override
  Widget build(BuildContext context) {
    projectViewModel = Provider.of(context);
    return AppScaffold(
      appBarTitle: TranslationBase.of(context).bookAppo,
      isShowDecPage: false,
      isShowAppBar: true,
      showNewAppBarTitle: true,
      showNewAppBar: true,
      backgroundColor: CustomColors.appBackgroudGrey2Color,
      body: ListView.separated(
        physics: BouncingScrollPhysics(),
        separatorBuilder: (context, index) {
          return Container(
            height: 12,
            margin: EdgeInsets.only(left: 21, right: 21),
          );
        },
        itemBuilder: (context, index) {
          return AppExpandableNotifier(
            title: (widget.patientDoctorAppointmentListHospital[index].distanceInKMs != "0")
                ? widget.patientDoctorAppointmentListHospital[index].filterName + " - " + widget.patientDoctorAppointmentListHospital[index].distanceInKMs + " " + TranslationBase.of(context).km
                : widget.patientDoctorAppointmentListHospital[index].filterName,
            isTitleSingleLine: false,
            bodyWidget: ListView.separated(
                shrinkWrap: true,
                physics: NeverScrollableScrollPhysics(),
                padding: EdgeInsets.only(bottom: 10, top: 10, left: 21, right: 21),
                itemBuilder: (context, _index) {
                  final doctor = widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList[_index];
                  return DoctorView(
                      doctor: doctor,
                      isLiveCareAppointment: widget.isLiveCareAppointment,
                      isObGyneAppointment: widget.isObGyneAppointment,
                      obGyneProcedureListResponse: widget.obGyneProcedureListResponse,
                      onTap: () {
                        projectViewModel.analytics.appointment.book_appointment_select_doctor(appointment_type: 'regular', doctor: doctor);
                      });
                },
                separatorBuilder: (context, index) => SizedBox(height: 14),
                itemCount: widget.patientDoctorAppointmentListHospital[index].patientDoctorAppointmentList.length),
          );
        },
        itemCount: widget.patientDoctorAppointmentListHospital.length,
      ),
    );
  }
}
