import 'dart:async';

import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/VideoCallService.dart';
import 'package:doctor_app_flutter/core/viewModel/LiveCarePatientViewModel.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.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/util/NotificationPermissionUtils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/patient_card/PatientCard.dart';
import 'package:doctor_app_flutter/widgets/shared/app_loader_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_form_field.dart';
import 'package:flutter/material.dart';

import '../../locator.dart';
import '../../routes.dart';

class LiveCarePatientScreen extends StatefulWidget {
  @override
  _LiveCarePatientScreenState createState() => _LiveCarePatientScreenState();
}

class _LiveCarePatientScreenState extends State<LiveCarePatientScreen> {
  final _controller = TextEditingController();

  Timer timer;
  LiveCarePatientViewModel _liveCareViewModel;
  @override
  void initState() {
    super.initState();
    timer = Timer.periodic(Duration(seconds: 10), (Timer t) {
      if (_liveCareViewModel != null) {
        _liveCareViewModel.getPendingPatientERForDoctorApp(isFromTimer: true);
      }
    });
  }

  @override
  void dispose() {
    _liveCareViewModel.isLogin(0);
    _liveCareViewModel = null;
    timer?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return BaseView<LiveCarePatientViewModel>(
      onModelReady: (model) async {
        _liveCareViewModel = model;
        await model.getPendingPatientERForDoctorApp();
        await model.isLogin(1);
      },
      builder: (_, model, w) => AppScaffold(
        baseViewModel: model,
        isShowAppBar: false,
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Container(
              padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
              decoration: BoxDecoration(
                color: Colors.white,
              ),
              child: Container(
                padding: EdgeInsets.only(left: 10, right: 10, bottom: 10),
                margin: EdgeInsets.only(top: 50),
                child: Row(children: [
                  IconButton(
                    icon: Icon(Icons.arrow_back_ios),
                    color: Colors.black, //Colors.black,
                    onPressed: () => Navigator.pop(context),
                  ),
                  Expanded(
                    child: AppText(
                      "LiveCare Patients",
                      fontSize: SizeConfig.textMultiplier * 2.8,
                      fontWeight: FontWeight.bold,
                      color: Color(0xFF2B353E),
                    ),
                  ),
                ]),
              ),
            ),
            SizedBox(
              height: 20,
            ),
            Center(
              child: FractionallySizedBox(
                widthFactor: .9,
                child: Container(
                    width: double.maxFinite,
                    height: 75,
                    decoration: BoxDecoration(
                        borderRadius: BorderRadius.all(Radius.circular(6.0)),
                        border: Border.all(
                          width: 1.0,
                          color: Color(0xffCCCCCC),
                        ),
                        color: Colors.white),
                    child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
                      Padding(
                          padding: EdgeInsets.only(left: 10, top: 10),
                          child: AppText(
                            TranslationBase.of(context).searchPatientName,
                            fontSize: 13,
                          )),
                      AppTextFormField(
                          // focusNode: focusProject,
                          controller: _controller,
                          borderColor: Colors.white,
                          prefix: IconButton(
                            icon: Icon(
                              DoctorApp.filter_1,
                              color: Colors.black,
                            ),
                            iconSize: 20,
                            padding: EdgeInsets.only(bottom: 30),
                          ),
                          onChanged: (String str) {
                            model.searchData(str);
                          }),
                    ])),
              ),
            ),
            model.state == ViewState.Idle
                ? Expanded(
                    child: Container(
                        child: model.filterData.isEmpty
                            ? Center(
                                child: ErrorMessage(
                                  error: TranslationBase.of(context).youDontHaveAnyPatient,
                                ),
                              )
                            : ListView.builder(
                                scrollDirection: Axis.vertical,
                                shrinkWrap: true,
                                itemCount: model.filterData.length,
                                itemBuilder: (BuildContext ctxt, int index) {
                                  return Padding(
                                    padding: EdgeInsets.all(8.0),
                                    child: PatientCard(
                                      patientInfo: PatiantInformtion.fromJson(model.filterData[index].toJson()),
                                      patientType: "0",
                                      arrivalType: "0",
                                      isFromSearch: false,
                                      isInpatient: false,
                                      isFromLiveCare: true,
                                      onTap: () {
                                        // TODO change the parameter to daynamic
                                        Navigator.of(context).pushNamed(PATIENTS_PROFILE, arguments: {
                                          "patient": PatiantInformtion.fromJson(model.filterData[index].toJson()),
                                          "patientType": "0",
                                          "isSearch": false,
                                          "isInpatient": false,
                                          "arrivalType": "0",
                                          "isSearchAndOut": false,
                                          "isFromLiveCare": true,
                                        });
                                      },
                                      // isFromSearch: widget.isSearch,
                                    ),
                                  );
                                })),
                  )
                : Expanded(
                    child: AppLoaderWidget(
                    containerColor: Colors.transparent,
                  )),
            // AppButton(
            //   fontWeight: FontWeight.w700,
            //   color:Colors.green[600],
            //   title: TranslationBase.of(context).initiateCall,
            //   disabled: model.state == ViewState.BusyLocal,
            //   onPressed: () async {
            //     AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){
            //       locator<VideoCallService>().openVideo(model.startCallRes, PatiantInformtion(
            //         vcId: 454353,
            //         fullName: "test mosa"
            //       ), callConnected, callDisconnected);
            //     });
            //
            //   },
            // ),
          ],
        ),
      ),
    );
  }

  callConnected() {}

  callDisconnected() {}
}
