You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			701 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			701 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Dart
		
	
import 'dart:io';
 | 
						|
 | 
						|
import 'package:diplomaticquarterapp/analytics/google-analytics.dart';
 | 
						|
import 'package:diplomaticquarterapp/core/model/labs/patient_lab_orders.dart';
 | 
						|
import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart';
 | 
						|
import 'package:diplomaticquarterapp/core/model/radiology/final_radiology.dart';
 | 
						|
import 'package:diplomaticquarterapp/core/viewModels/feedback/feedback_view_model.dart';
 | 
						|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
 | 
						|
import 'package:diplomaticquarterapp/locator.dart';
 | 
						|
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
 | 
						|
import 'package:diplomaticquarterapp/models/Appointments/appoDetailsButtons.dart';
 | 
						|
import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/reminder_dialog.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/ArrivedButtons.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AskDocRequestTypeModel.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/BookedButtons.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/BookedButtonsAllowCheckIn.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/ConfirmedButtons.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/models/ConfirmedButtonsAllowCheckIn.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/askDocDialog.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/medical/labs/laboratory_result_page.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescription_items_page.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_details_page.dart';
 | 
						|
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
 | 
						|
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/app-permissions.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
 | 
						|
import 'package:diplomaticquarterapp/uitl/utils.dart';
 | 
						|
import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart';
 | 
						|
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
 | 
						|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:huawei_hmsavailability/huawei_hmsavailability.dart';
 | 
						|
import 'package:huawei_map/huawei_map.dart' as hmsMap;
 | 
						|
import 'package:intl/intl.dart';
 | 
						|
import 'package:map_launcher/map_launcher.dart';
 | 
						|
import 'package:permission_handler/permission_handler.dart';
 | 
						|
import 'package:provider/provider.dart';
 | 
						|
import 'package:url_launcher/url_launcher.dart';
 | 
						|
 | 
						|
class AppointmentActions extends StatefulWidget {
 | 
						|
  AppoitmentAllHistoryResultList appo;
 | 
						|
  TabController tabController;
 | 
						|
  final Function enableFooterButton;
 | 
						|
  MyInAppBrowser? browser;
 | 
						|
  final ProjectViewModel? projectViewModel;
 | 
						|
 | 
						|
  AppointmentActions({required this.appo, required this.tabController, required this.enableFooterButton, this.projectViewModel});
 | 
						|
 | 
						|
  @override
 | 
						|
  _AppointmentActionsState createState() => _AppointmentActionsState();
 | 
						|
}
 | 
						|
 | 
						|
class _AppointmentActionsState extends State<AppointmentActions> {
 | 
						|
  List<AppoDetailsButton> appoButtonsList = [];
 | 
						|
  static bool isHuawei = false;
 | 
						|
  HmsApiAvailability hmsApiAvailability = HmsApiAvailability();
 | 
						|
 | 
						|
  @override
 | 
						|
  void initState() {
 | 
						|
    _getAppointmentActionButtons();
 | 
						|
    checkIsHuawei();
 | 
						|
    super.initState();
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context) {
 | 
						|
    ProjectViewModel projectViewModel = Provider.of(context);
 | 
						|
    ToDoCountProviderModel model = Provider.of<ToDoCountProviderModel>(context);
 | 
						|
 | 
						|
    return GridView.builder(
 | 
						|
      gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, crossAxisSpacing: 13, mainAxisSpacing: 9),
 | 
						|
      physics: NeverScrollableScrollPhysics(),
 | 
						|
      padding: EdgeInsets.all(21),
 | 
						|
      shrinkWrap: true,
 | 
						|
      itemBuilder: (context, index) {
 | 
						|
        // bool shouldEnable = ((widget.appo.clinicID == 17 || widget.appo.clinicID == 47) || (widget.appo.isLiveCareAppointment && appoButtonsList[index].caller == "askDoc") || appoButtonsList[index].caller == "openReschedule");
 | 
						|
        bool shouldEnable =
 | 
						|
            (((widget.appo.clinicID == 17 || widget.appo.clinicID == 47 || widget.appo.clinicID == 134 || widget.appo.clinicID == 253) && appoButtonsList[index].caller == "openReschedule") ||
 | 
						|
                (widget.appo.isLiveCareAppointment! && appoButtonsList[index].caller == "askDoc") ||
 | 
						|
                (Utils.isVidaPlusProject(projectViewModel, widget.appo.projectID) &&
 | 
						|
                    widget.appo.clinicID == 10 &&
 | 
						|
                    (appoButtonsList[index].caller == "prescriptions" || appoButtonsList[index].caller == "radiology" || appoButtonsList[index].caller == "labResult")));
 | 
						|
        return InkWell(
 | 
						|
          onTap: shouldEnable
 | 
						|
              ? null
 | 
						|
              : () {
 | 
						|
                  _handleButtonClicks(appoButtonsList[index], model);
 | 
						|
                },
 | 
						|
          child: MedicalProfileItem(
 | 
						|
            title: appoButtonsList[index].title!,
 | 
						|
            imagePath: appoButtonsList[index].icon!,
 | 
						|
            subTitle: appoButtonsList[index].subtitle!,
 | 
						|
            hasBadge: true,
 | 
						|
            isEnable: !shouldEnable,
 | 
						|
            imgColor: Color(0xff28323A),
 | 
						|
            isPngImage: appoButtonsList[index].icon!.contains(".png") ? true : false,
 | 
						|
          ),
 | 
						|
        );
 | 
						|
      },
 | 
						|
      itemCount: appoButtonsList.length,
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  _handleButtonClicks(AppoDetailsButton, ToDoCountProviderModel model) {
 | 
						|
    switch (AppoDetailsButton.caller) {
 | 
						|
      case "openReschedule":
 | 
						|
        widget.tabController.animateTo((widget.tabController.index + 1) % 2);
 | 
						|
        setState(() {
 | 
						|
          widget.enableFooterButton();
 | 
						|
        });
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'reschedule appointment');
 | 
						|
        break;
 | 
						|
      case "navigateToProject":
 | 
						|
        openMap(double.parse(widget.appo.latitude!), double.parse(widget.appo.longitude!));
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'hospital location');
 | 
						|
        break;
 | 
						|
      case "addReminder":
 | 
						|
        GAnalytics.APPOINTMENT_DETAIL_FLOW_TYPE = 'my appointment';
 | 
						|
        showReminderDialog(
 | 
						|
          context,
 | 
						|
          DateFormat("dd MMM yyyy hh:mm")
 | 
						|
              .parse(DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.appo.appointmentDate!), widget.projectViewModel!.isArabic) + " " + widget.appo.startTime!),
 | 
						|
          //DateUtil.convertStringToDate(widget.appo.appointmentDate),
 | 
						|
          widget.appo.doctorNameObj!,
 | 
						|
          widget.appo.appointmentNo.toString(),
 | 
						|
          DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.appo.appointmentDate!), widget.projectViewModel!.isArabic),
 | 
						|
          // DateUtil.formatDateToTime(DateUtil.convertStringToDate(widget.appo.appointmentDate)),
 | 
						|
          widget.appo.startTime!,
 | 
						|
          onSuccess: () {
 | 
						|
            AppToast.showSuccessToast(message: TranslationBase.of(context).reminderSuccess);
 | 
						|
          },
 | 
						|
        );
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'add reminder');
 | 
						|
        break;
 | 
						|
      case "goToTodoList":
 | 
						|
        // Navigator.of(context).pop();
 | 
						|
        navigateToToDoPage(context, model);
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'todo list');
 | 
						|
        break;
 | 
						|
      case "askDoc":
 | 
						|
        askYourDoc();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'ask doctor');
 | 
						|
        break;
 | 
						|
      case "radiology":
 | 
						|
        openAppointmentRadiology();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'radiology');
 | 
						|
        break;
 | 
						|
      case "labResult":
 | 
						|
        openAppointmentLabResults();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'lab result');
 | 
						|
        break;
 | 
						|
      case "prescriptions":
 | 
						|
        openPrescriptionReport();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'prescriptions');
 | 
						|
        break;
 | 
						|
      case "Survey":
 | 
						|
        rateAppointment();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'survey');
 | 
						|
        break;
 | 
						|
      case "Insurance":
 | 
						|
        navigateToInsuranceApprovals(widget.appo.appointmentNo!);
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'insurance');
 | 
						|
        break;
 | 
						|
 | 
						|
      case "VitalSigns":
 | 
						|
        navigateToVitalSigns(widget.appo.appointmentNo!, widget.appo.projectID!);
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'vital sign');
 | 
						|
        break;
 | 
						|
 | 
						|
      case "insertComplaint":
 | 
						|
        navigateToInsertComplaint();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'raise complaint');
 | 
						|
        break;
 | 
						|
 | 
						|
      case "goToNavigation":
 | 
						|
        initPenguinSDK();
 | 
						|
        locator<GAnalytics>().appointment.appointment_detail_action(appointment: widget.appo, action: 'navigate to clinic');
 | 
						|
        break;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  initPenguinSDK() async {
 | 
						|
    NavigationClinicDetails data = NavigationClinicDetails();
 | 
						|
    data.clinicId = widget.appo.clinicID.toString();
 | 
						|
    // data.clinicId = "49";
 | 
						|
    data.patientId = widget.appo.patientID.toString();
 | 
						|
    data.projectId = widget.appo.projectID.toString();
 | 
						|
    final bool permited = await AppPermission.askPenguinPermissions();
 | 
						|
    if (!permited) {
 | 
						|
      Map<Permission, PermissionStatus> statuses = await [
 | 
						|
        Permission.location,
 | 
						|
        Permission.bluetooth,
 | 
						|
        Permission.bluetoothConnect,
 | 
						|
        Permission.bluetoothScan,
 | 
						|
        Permission.activityRecognition,
 | 
						|
      ].request().whenComplete(() {
 | 
						|
        PenguinMethodChannel().launch("penguin", widget.projectViewModel!.isArabic ? "ar" : "en", widget.projectViewModel!.authenticatedUserObject.user.patientID.toString(), details: data);
 | 
						|
      });
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  _getAppointmentActionButtons() {
 | 
						|
    if (widget.appo != null) {
 | 
						|
      if (isConfirmed()) {
 | 
						|
        if (widget.appo.isOnlineCheckedIN!) {
 | 
						|
          _getConfirmedCheckInAppoActionsList();
 | 
						|
        } else {
 | 
						|
          _getConfirmedAppoActionsList();
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        print("isConfirmed Null");
 | 
						|
      }
 | 
						|
      if (isBooked()) {
 | 
						|
        if (widget.appo.isOnlineCheckedIN!) {
 | 
						|
          _getBookedCheckInAppoActionsList();
 | 
						|
        } else {
 | 
						|
          _getBookedAppoActionsList();
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        print("isBooked Null");
 | 
						|
      }
 | 
						|
      if (isArrived()) {
 | 
						|
        if (widget.appo.clinicID == 17) {
 | 
						|
          _getArrivedInvoiceAppoActionsList();
 | 
						|
        } else {
 | 
						|
          _getArrivedAppoActionsList();
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        print("isArrived Null");
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      print("Appo Null");
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  bool isConfirmed() {
 | 
						|
    return AppointmentType.isConfirmed(widget.appo);
 | 
						|
  }
 | 
						|
 | 
						|
  bool isArrived() {
 | 
						|
    return AppointmentType.isArrived(widget.appo);
 | 
						|
  }
 | 
						|
 | 
						|
  bool isCheckedIn() {
 | 
						|
    return widget.appo.isOnlineCheckedIN!;
 | 
						|
  }
 | 
						|
 | 
						|
  bool isBooked() {
 | 
						|
    return AppointmentType.isBooked(widget.appo);
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?>? _getBookedAppoActionsList() async {
 | 
						|
    print("_getBookedAppoActionsList");
 | 
						|
    BookedButtons bookedButtons = new BookedButtons();
 | 
						|
    print(bookedButtons.buttons);
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < bookedButtons.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: bookedButtons.buttons[i]['title'],
 | 
						|
        subtitle: bookedButtons.buttons[i]['subtitle'],
 | 
						|
        icon: bookedButtons.buttons[i]['icon'],
 | 
						|
        caller: bookedButtons.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?>? _getBookedCheckInAppoActionsList() async {
 | 
						|
    print("_getBookedCheckInAppoActionsList");
 | 
						|
    BookedButtonsAllowCheckIn bookedButtonsAllowCheckIn = new BookedButtonsAllowCheckIn();
 | 
						|
    print(bookedButtonsAllowCheckIn.buttons);
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < bookedButtonsAllowCheckIn.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: bookedButtonsAllowCheckIn.buttons[i]['title'],
 | 
						|
        subtitle: bookedButtonsAllowCheckIn.buttons[i]['subtitle'],
 | 
						|
        icon: bookedButtonsAllowCheckIn.buttons[i]['icon'],
 | 
						|
        caller: bookedButtonsAllowCheckIn.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?> _getConfirmedAppoActionsList() async {
 | 
						|
    print("_getConfirmedAppoActionsList");
 | 
						|
    ConfirmedButtons confirmedButtons = new ConfirmedButtons();
 | 
						|
    print(confirmedButtons.buttons);
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < confirmedButtons.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: confirmedButtons.buttons[i]['title'],
 | 
						|
        subtitle: confirmedButtons.buttons[i]['subtitle'],
 | 
						|
        icon: confirmedButtons.buttons[i]['icon'],
 | 
						|
        caller: confirmedButtons.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?> _getConfirmedCheckInAppoActionsList() async {
 | 
						|
    print("_getConfirmedAllowCheckInAppoActionsList");
 | 
						|
    ConfirmedButtonsAllowCheckIn confirmedButtonsAllowCheckIn = new ConfirmedButtonsAllowCheckIn();
 | 
						|
    print(confirmedButtonsAllowCheckIn.buttons);
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < confirmedButtonsAllowCheckIn.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: confirmedButtonsAllowCheckIn.buttons[i]['title'],
 | 
						|
        subtitle: confirmedButtonsAllowCheckIn.buttons[i]['subtitle'],
 | 
						|
        icon: confirmedButtonsAllowCheckIn.buttons[i]['icon'],
 | 
						|
        caller: confirmedButtonsAllowCheckIn.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?> _getArrivedAppoActionsList() async {
 | 
						|
    print("_getArrivedAppoActionsList");
 | 
						|
    ArrivedButtons arrivedButtons = new ArrivedButtons();
 | 
						|
    print(arrivedButtons.buttons);
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < arrivedButtons.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: arrivedButtons.buttons[i]['title'],
 | 
						|
        subtitle: arrivedButtons.buttons[i]['subtitle'],
 | 
						|
        icon: arrivedButtons.buttons[i]['icon'],
 | 
						|
        caller: arrivedButtons.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  Future<List<AppoDetailsButton>?> _getArrivedInvoiceAppoActionsList() async {
 | 
						|
    print("_getArrivedInvoiceAppoActionsList");
 | 
						|
    ArrivedButtons arrivedButtons = new ArrivedButtons();
 | 
						|
    List<AppoDetailsButton> buttonsList = [];
 | 
						|
    for (var i = 0; i < arrivedButtons.buttons.length; i++) {
 | 
						|
      buttonsList.add(AppoDetailsButton(
 | 
						|
        title: arrivedButtons.buttons[i]['title'],
 | 
						|
        subtitle: arrivedButtons.buttons[i]['subtitle'],
 | 
						|
        icon: arrivedButtons.buttons[i]['icon'],
 | 
						|
        caller: arrivedButtons.buttons[i]['caller'],
 | 
						|
      ));
 | 
						|
    }
 | 
						|
    setState(() {
 | 
						|
      appoButtonsList = buttonsList;
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  // cancelAppointment() {
 | 
						|
  //   ConfirmDialog.closeAlertDialog(context);
 | 
						|
  //   GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
  //   DoctorsListService service = new DoctorsListService();
 | 
						|
  //   service.cancelAppointment(widget.appo, context).then((res) {
 | 
						|
  //     GifLoaderDialogUtils.hideDialog(context);
 | 
						|
  //     print(res);
 | 
						|
  //     if (res['MessageStatus'] == 1) {
 | 
						|
  //       getToDoCount();
 | 
						|
  //       AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
 | 
						|
  //       Navigator.of(context).pop();
 | 
						|
  //     } else {
 | 
						|
  //       AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
 | 
						|
  //     }
 | 
						|
  //   }).catchError((err) {
 | 
						|
  //     GifLoaderDialogUtils.hideDialog(context);
 | 
						|
  //     print(err);
 | 
						|
  //   });
 | 
						|
  // }
 | 
						|
 | 
						|
  // getToDoCount() {
 | 
						|
  //   toDoProvider.setState(0, true);
 | 
						|
  //   ClinicListService service = new ClinicListService();
 | 
						|
  //   service.getActiveAppointmentNo(context).then((res) {
 | 
						|
  //     print(res['AppointmentActiveNumber']);
 | 
						|
  //     if (res['MessageStatus'] == 1) {
 | 
						|
  //       toDoProvider.setState(res['AppointmentActiveNumber'], true);
 | 
						|
  //     } else {}
 | 
						|
  //   }).catchError((err) {
 | 
						|
  //     print(err);
 | 
						|
  //   });
 | 
						|
  // }
 | 
						|
 | 
						|
  openAppointmentLabResults() {
 | 
						|
    int languageID = widget.projectViewModel!.isArabic ? 1 : 2;
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
    PatientLabOrders patientLabOrders = new PatientLabOrders();
 | 
						|
    service.getPatientLabOrdersByAppoNo(widget.appo.appointmentNo, widget.appo.projectID, widget.appo.clinicID, languageID, context).then((res) {
 | 
						|
      print(res['ListLabResultsByAppNo']);
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      if (res['ListLabResultsByAppNo'] != null) {
 | 
						|
        patientLabOrders.orderNo = res['ListLabResultsByAppNo'][0]['OrderNo'].toString();
 | 
						|
        patientLabOrders.invoiceNo = res['ListLabResultsByAppNo'][0]['InvoiceNo'].toString();
 | 
						|
        patientLabOrders.clinicID = widget.appo.clinicID;
 | 
						|
        patientLabOrders.clinicDescription = widget.appo.clinicName;
 | 
						|
        patientLabOrders.projectID = widget.appo.projectID.toString();
 | 
						|
        patientLabOrders.doctorName = widget.appo.doctorNameObj;
 | 
						|
        patientLabOrders.doctorImageURL = widget.appo.doctorImageURL;
 | 
						|
        patientLabOrders.speciality = widget.appo.doctorSpeciality;
 | 
						|
        patientLabOrders.projectName = widget.appo.projectName;
 | 
						|
        patientLabOrders.orderDate = DateUtil.convertStringToDate(widget.appo.appointmentDate!);
 | 
						|
        patientLabOrders.doctorRate = widget.appo.doctorRate;
 | 
						|
        patientLabOrders.actualDoctorRate = widget.appo.actualDoctorRate;
 | 
						|
        patientLabOrders.noOfPatientsRate = widget.appo.noOfPatientsRate;
 | 
						|
 | 
						|
        print(patientLabOrders.invoiceNo);
 | 
						|
        print(patientLabOrders.orderNo);
 | 
						|
        navigateToLabResults(patientLabOrders);
 | 
						|
      } else {
 | 
						|
        AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
 | 
						|
      }
 | 
						|
    }).catchError((err) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      print(err);
 | 
						|
      AppToast.showErrorToast(message: err);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  openAppointmentRadiology() {
 | 
						|
    int languageID = widget.projectViewModel!.isArabic! ? 1 : 2;
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
    FinalRadiology finalRadiology = new FinalRadiology();
 | 
						|
    service.getPatientRadOrders(widget.appo.appointmentNo.toString(), widget.appo.projectID, languageID, context).then((res) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      if (res['FinalRadiologyList'] != null) {
 | 
						|
        print(res['FinalRadiologyList']);
 | 
						|
        finalRadiology = new FinalRadiology.fromJson(res['FinalRadiologyList'][0]);
 | 
						|
        print(finalRadiology.reportData);
 | 
						|
        navigateToRadiologyDetails(finalRadiology);
 | 
						|
      } else {
 | 
						|
        AppToast.showErrorToast(message: TranslationBase.of(context).noResultFound);
 | 
						|
      }
 | 
						|
    }).catchError((err) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      print(err);
 | 
						|
      AppToast.showErrorToast(message: TranslationBase.of(context).noResultFound, localContext: context);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  openPrescriptionReport() {
 | 
						|
    Prescriptions prescriptions = new Prescriptions();
 | 
						|
 | 
						|
    prescriptions.doctorName = widget.appo.doctorNameObj;
 | 
						|
    prescriptions.appointmentNo = widget.appo.appointmentNo;
 | 
						|
    prescriptions.clinicID = widget.appo.clinicID;
 | 
						|
    prescriptions.projectID = widget.appo.projectID;
 | 
						|
    prescriptions.doctorImageURL = widget.appo.doctorImageURL;
 | 
						|
    prescriptions.speciality = widget.appo.doctorSpeciality;
 | 
						|
    prescriptions.name = widget.appo.projectName;
 | 
						|
    prescriptions.episodeID = widget.appo.episodeID;
 | 
						|
    prescriptions.setupID = widget.appo.setupID;
 | 
						|
    prescriptions.appointmentDate = widget.appo.appointmentDate;
 | 
						|
    prescriptions.nationalityFlagURL = "https://hmgwebservices.com/Images/flag/SAU.png";
 | 
						|
    prescriptions.doctorRate = widget.appo.doctorRate;
 | 
						|
    prescriptions.actualDoctorRate = widget.appo.actualDoctorRate;
 | 
						|
    prescriptions.noOfPatientsRate = widget.appo.noOfPatientsRate;
 | 
						|
    prescriptions.isInOutPatient = widget.appo.isInOutPatient;
 | 
						|
    prescriptions.doctorID = widget.appo.doctorID;
 | 
						|
 | 
						|
    navigateToMedicinePrescriptionReport(prescriptions);
 | 
						|
  }
 | 
						|
 | 
						|
  Future navigateToMedicinePrescriptionReport(Prescriptions prescriptions) async {
 | 
						|
    Navigator.push(context, FadePage(page: PrescriptionItemsPage(prescriptions: prescriptions)));
 | 
						|
  }
 | 
						|
 | 
						|
  Future navigateToLabResults(PatientLabOrders patientLabOrders) async {
 | 
						|
    Navigator.push(context, FadePage(page: LaboratoryResultPage(patientLabOrders: patientLabOrders))).then((value) {});
 | 
						|
  }
 | 
						|
 | 
						|
  Future navigateToRadiologyDetails(FinalRadiology finalRadiology) async {
 | 
						|
    Navigator.push(context, FadePage(page: RadiologyDetailsPage(finalRadiology: finalRadiology))).then((value) {});
 | 
						|
  }
 | 
						|
 | 
						|
  static Future<void> openMap(double latitude, double longitude) async {
 | 
						|
    await MapLauncher.showMarker(
 | 
						|
      mapType: Platform.isAndroid
 | 
						|
          ? isHuawei == true
 | 
						|
              ? MapType.petal
 | 
						|
              : MapType.google
 | 
						|
          : MapType.apple,
 | 
						|
      coords: Coords(latitude, longitude),
 | 
						|
      title: "Sulaiman Al Habib",
 | 
						|
      description: "Appointment Location",
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  checkIsHuawei() async {
 | 
						|
    if (Platform.isAndroid) {
 | 
						|
      await hmsApiAvailability.isHMSAvailable().then((value) {
 | 
						|
        isHuawei = value == 0 ? true : false;
 | 
						|
        hmsMap.HuaweiMapInitializer.initializeMap();
 | 
						|
      });
 | 
						|
      print(isHuawei);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  askYourDoc() {
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
 | 
						|
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
    service.isAllowedToAskDoctor(widget.appo.doctorID!, languageID, context).then((res) {
 | 
						|
      int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
 | 
						|
      service.isAllowedToAskDoctor(widget.appo.doctorID, languageID, context).then((res) {
 | 
						|
        GifLoaderDialogUtils.hideDialog(context);
 | 
						|
        print(res['PatientDoctorAppointmentResultList']);
 | 
						|
        if (res['PatientDoctorAppointmentResultList'].length != 0) {
 | 
						|
          getCallRequestType();
 | 
						|
        } else {
 | 
						|
          AppToast.showErrorToast(message: TranslationBase.of(context).askDocNotAllowed, localContext: context);
 | 
						|
        }
 | 
						|
      }).catchError((err) {
 | 
						|
        GifLoaderDialogUtils.hideDialog(context);
 | 
						|
        print(err);
 | 
						|
        AppToast.showErrorToast(message: err);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getCallRequestType() {
 | 
						|
    int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
    service.getCallRequestType(languageID, context).then((res) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      List<AskDocRequestType> requestData = [];
 | 
						|
      res['ListReqTypes'].forEach((element) {
 | 
						|
        requestData.add(new AskDocRequestType.fromJson(element));
 | 
						|
      });
 | 
						|
      Future.delayed(const Duration(milliseconds: 400), () {
 | 
						|
        showAskDocRequestDialog(requestData);
 | 
						|
      });
 | 
						|
    }).catchError((err) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      print(err);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  showAskDocRequestDialog(List<AskDocRequestType> requestData) {
 | 
						|
    showGeneralDialog(
 | 
						|
        barrierColor: Colors.black.withOpacity(0.5),
 | 
						|
        transitionBuilder: (context, a1, a2, widget) {
 | 
						|
          final curvedValue = Curves.easeInOutBack.transform(a1.value) - 1.0;
 | 
						|
          return Transform(
 | 
						|
            transform: Matrix4.translationValues(0.0, curvedValue * 200, 0.0),
 | 
						|
            child: Opacity(
 | 
						|
              opacity: a1.value,
 | 
						|
              child: AskDocDialog(requestData: requestData),
 | 
						|
            ),
 | 
						|
          );
 | 
						|
        },
 | 
						|
        transitionDuration: Duration(milliseconds: 500),
 | 
						|
        barrierDismissible: true,
 | 
						|
        barrierLabel: '',
 | 
						|
        context: context,
 | 
						|
        pageBuilder: (context, animation1, animation2) => SizedBox()).then((value) {
 | 
						|
      print("Dialog Closed");
 | 
						|
      print(value);
 | 
						|
      if (value != null) {
 | 
						|
        sendAskDocRequest(value as int);
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  sendAskDocRequest(int requestType) {
 | 
						|
    int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
 | 
						|
    service.sendAskDocCallRequest(widget.appo, requestType.toString(), languageID, context).then((res) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      if (res['MessageStatus'] == 1) {
 | 
						|
        AppToast.showSuccessToast(message: "Request Sent Successfully");
 | 
						|
      } else {
 | 
						|
        AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
 | 
						|
      }
 | 
						|
    }).catchError((err) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      print(err);
 | 
						|
      AppToast.showErrorToast(message: err);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  // confirmAppointment() {
 | 
						|
  //   GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
  //   DoctorsListService service = new DoctorsListService();
 | 
						|
  //   service.confirmAppointment(widget.appo.appointmentNo, widget.appo.clinicID, widget.appo.projectID, widget.appo.isLiveCareAppointment, context).then((res) {
 | 
						|
  //     GifLoaderDialogUtils.hideDialog(context);
 | 
						|
  //     if (res['MessageStatus'] == 1) {
 | 
						|
  //       AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
 | 
						|
  //       Navigator.of(context).pop();
 | 
						|
  //     } else {
 | 
						|
  //       AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
 | 
						|
  //     }
 | 
						|
  //   }).catchError((err) {
 | 
						|
  //     GifLoaderDialogUtils.hideDialog(context);
 | 
						|
  //     print(err);
 | 
						|
  //   });
 | 
						|
  // }
 | 
						|
 | 
						|
  navigateToInsuranceApprovals(int appoNo) {
 | 
						|
    Navigator.push(context, FadePage(page: InsuranceApproval(appointmentNo: appoNo)));
 | 
						|
  }
 | 
						|
 | 
						|
  navigateToVitalSigns(int appoNo, int projectID) {
 | 
						|
    Navigator.push(
 | 
						|
        context,
 | 
						|
        FadePage(
 | 
						|
            page: VitalSignDetailsScreen(
 | 
						|
          appointmentNo: appoNo,
 | 
						|
          projectID: projectID,
 | 
						|
          isNotOneAppointment: false,
 | 
						|
        )));
 | 
						|
  }
 | 
						|
 | 
						|
  navigateToInsertComplaint() {
 | 
						|
    Navigator.push(
 | 
						|
        context,
 | 
						|
        FadePage(
 | 
						|
            page: FeedbackHomePage(
 | 
						|
          messageType: MessageType.ComplaintOnAnAppointment,
 | 
						|
          appointment: widget.appo,
 | 
						|
        )));
 | 
						|
  }
 | 
						|
 | 
						|
  navigateToToDoPage(BuildContext context, ToDoCountProviderModel model) {
 | 
						|
    if (widget.projectViewModel!.isLogin) {
 | 
						|
      // if (model.count != 0) {
 | 
						|
      getPatientAppointmentHistoryWithAppo();
 | 
						|
    }
 | 
						|
    // else {
 | 
						|
    //     AppToast.showErrorToast(message: TranslationBase.of(context).upcomingEmpty);
 | 
						|
    //   }
 | 
						|
    else {
 | 
						|
      Navigator.push(
 | 
						|
          context,
 | 
						|
          FadePage(
 | 
						|
              page: ToDo(
 | 
						|
            isShowAppBar: true,
 | 
						|
            isFromMyAppointments: true,
 | 
						|
            appointment: widget.appo,
 | 
						|
          )));
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getPatientAppointmentHistoryWithAppo() {
 | 
						|
    GifLoaderDialogUtils.showMyDialog(context);
 | 
						|
    DoctorsListService service = new DoctorsListService();
 | 
						|
    int languageID = Provider.of<ProjectViewModel>(context, listen: false).isArabic ? 1 : 2;
 | 
						|
    service.getPatientAppointmentHistoryWithAppoNo(widget.appo.appointmentNo, languageID).then((res) {
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      if (res['MessageStatus'] == 1) {
 | 
						|
        AppoitmentAllHistoryResultList appo = new AppoitmentAllHistoryResultList.fromJson(res['AppoimentAllHistoryResultList'][0]);
 | 
						|
        Navigator.push(
 | 
						|
          context,
 | 
						|
          FadePage(
 | 
						|
            page: ToDo(
 | 
						|
              isShowAppBar: true,
 | 
						|
              isFromMyAppointments: true,
 | 
						|
              appointment: appo,
 | 
						|
            ),
 | 
						|
          ),
 | 
						|
        );
 | 
						|
      } else {
 | 
						|
        AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
 | 
						|
      }
 | 
						|
    }).catchError((err) {
 | 
						|
      print(err);
 | 
						|
      GifLoaderDialogUtils.hideDialog(context);
 | 
						|
      err != null ?? AppToast.showErrorToast(message: err);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  rateAppointment() {
 | 
						|
    widget.browser = new MyInAppBrowser(onExitCallback: () {});
 | 
						|
    var url = 'http://hmg.com/SitePages/pso.aspx?p=' + widget.appo.projectID.toString() + '.' + widget.appo.appointmentNo.toString() + '&c=1';
 | 
						|
    print(url);
 | 
						|
    launch(url);
 | 
						|
  }
 | 
						|
}
 |