import 'dart:async';

import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.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/routes.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/patients/patient_search/patient_search_header.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.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/errors/error_message.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app_text_field_custom_serach.dart';
import 'package:flutter/material.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: true,
        appBar: PatientSearchHeader(
          title: "LiveCare Patients",
        ),
        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(),
            ),
            SizedBox(
              height: 20,
            ),
            AppTextFieldCustomSearch(
              searchController: _controller,
              onChangeFun: (value) {
                model.searchData(value);
              },
              marginTop: 5,
              suffixIcon: IconButton(
                icon: Icon(
                  DoctorApp.filter_1,
                  color: Colors.black,
                ),
                iconSize: 20,
                onPressed: () {},
              ),
              onFieldSubmitted: () {},
            ),
            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) {
                                  //
                                  //
                                  //                                 String jsonString = '''
                                  //   {
                                  //     "PatientID": 1231755,
                                  //     "SetupID": "010266",
                                  //     "PatientType": 1,
                                  //     "FirstName": "TAMER",
                                  //     "MiddleName": "MUSA",
                                  //     "LastName": "FANASHEH",
                                  //     "FirstNameN": "",
                                  //     "MiddleNameN": "موسى",
                                  //     "LastNameN": "",
                                  //     "Gender": 1,
                                  //     "DateofBirth": "/Date(558910800000+0300)/",
                                  //     "DateofBirthN": "25/01/1408",
                                  //     "NationalityID": "JOR",
                                  //     "PhoneResi": "",
                                  //     "PhoneOffice": "",
                                  //     "MobileNumber": "0537503378",
                                  //     "FaxNumber": "",
                                  //     "EmailAddress": "sultan.khan@cloudsolutions.com.sa",
                                  //     "IsEmailAlertRequired": true,
                                  //     "IsSMSAlertRequired": true,
                                  //     "PreferredLanguage": "1",
                                  //     "EmergencyContactName": "MOH",
                                  //     "EmergencyContactNo": "0507845867",
                                  //     "PatientIdentificationType": 2,
                                  //     "PatientIdentificationNo": "2344670985",
                                  //     "ProjectID": 15,
                                  //     "ReceiveHealthSummaryReport": true,
                                  //     "NoShowCount": 0,
                                  //     "IsPatientHasMobileDeviceToken": true,
                                  //     "EditedBy": 102,
                                  //     "IsIVRStopped": true,
                                  //     "CRSClientIdentifierID": null,
                                  //     "CRSVerificationStatus": null,
                                  //     "CRSVerifiedBy": null,
                                  //     "CRSVerificationStatusDesc": "Sent for Manual Verification",
                                  //     "CRSVerificationStatusDescN": "Sent for Manual Verification",
                                  //     "NumberPosition": 1,
                                  //     "Status": 2,
                                  //     "IsPrivilegedMember": null,
                                  //     "Address": "gffffff al malga",
                                  //     "Age": 36,
                                  //     "EmaiLAddress": "sultan.khan@cloudsolutions.com.sa",
                                  //     "GenderDescription": "Male",
                                  //     "GenderImage": "https://hmgwebservices.com/Images/GenderAvtar/Male.jpg",
                                  //     "IsPatientDataVerified": false,
                                  //     "IsPatientPrivilegedMember": false,
                                  //     "NationalityDescription": "Jordanian",
                                  //     "NationalityFlagURL": "https://hmgwebservices.com/Images/flag/JOR.png",
                                  //     "POBox": "",
                                  //     "PatientDataVerified": 3,
                                  //     "PatientName": "TAMER MUSA FANASHEH",
                                  //     "PatientTypeDescription": "Permanent File",
                                  //     "PatientTypeDescriptionN": null,
                                  //     "StatusDscription": "Active ",
                                  //     "TempAddress": "",
                                  //     "UpcomingAppointmentsNumber": 0,
                                  //     "ZipCode": "966"
                                  //   }
                                  // ''';
                                  //
                                  //                                 Map<String, dynamic> jsonObject = json.decode(jsonString);
                                  //
                                  //                                 //

                                  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,
                                        });

                                        // AppPermissionsUtils.requestVideoCallPermission(
                                        //     context: context,
                                        //     onTapGrant: () {
                                        //       locator<VideoCallService>().openVideo(model.startCallRes!, PatiantInformtion.fromJson(jsonObject),
                                        //           model.startCallRes != null ? model.startCallRes!.isRecording! : true, callConnected, callDisconnected);
                                        //     });
                                      },
                                      // isFromSearch: widget.isSearch,
                                    ),
                                  );
                                })),
                  )
                : Expanded(
                    child: AppLoaderWidget(
                    containerColor: Colors.transparent,
                  )),
            // AppButton(
            //   fontWeight: FontWeight.w700,
            //   color:AppGlobal.appGreenColor[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() {}
}
