import 'package:diplomaticquarterapp/core/model/hospitals/hospitals_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/DentalChiefComplaintsModel.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Clinics/ClinicListResponse.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import '../google-analytics.dart'; class Appointment { final GALogger logger; Appointment(this.logger); // R015 book_appointment() { logger('book_appointment'); } // R016.1, R017.2 book_appointment_by_clinic() { logger('book_appointment_by_clinic'); } // R016.2, R018.2 book_appointment_by_doctor() { logger('book_appointment_by_doctor'); } // R017.1 book_appointment_doctor_search({required String query}) { // doctor_search_query : value logger('book_appointment_doctor_search', parameters: {'doctor_search_query': query}); } // R018.1 book_appointment_select_clinic({required String appointment_type, clinic}) { // appointment_type: regular | livecare // clinic_type : $clinic_type logger('book_appointment_select_clinic', parameters: {'appointment_type': appointment_type, 'clinic_type': clinic}); } // R019.1 book_appointment_livecare_accept() { logger('book_appointment_livecare_accept'); } // R019.2 book_appointment_livecare_decline() { logger('book_appointment_livecare_decline'); } // R020 book_appointment_chief_complaints({ required String appointment_type, ListClinicCentralized? clinic, HospitalsModel? hospital, ListDentalChiefComplain? treatment, }) { GAnalytics.TREATMENT_TYPE = treatment!.name; logger('book_appointment_chief_complaints', parameters: { 'appointment_type': appointment_type, 'clinic_type': clinic!.clinicDescription, 'hospital_name':hospital!=null ? hospital!.name :"", 'treatment_type': treatment.name, }); } // R021 book_appointment_select_doctor({required String appointment_type, required DoctorList doctor}) { // appointment_type, clinic_type, hospital_name, treatment_type, doctor_name, doctor_nationality, doctor_gender logger('book_appointment_select_doctor', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, }); } // R022 book_appointment_schedule({required String appointment_type, required DoctorList doctor}) { // appointment_type, clinic_type, hospital_name, treatment_type, doctor_name, doctor_nationality, doctor_gender logger('book_appointment_schedule', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, }); } // R023 book_appointment_date_selection({required String appointment_type, required day, required DoctorList doctor}) { logger('book_appointment_date_selection', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, 'appointment_day': day }); } // R024.1 book_appointment_time_selection({required String appointment_type, required DateTime? dateTime, required DoctorList doctor}) { final day = DateUtil.getWeekDay(dateTime!.weekday); final hour = DateFormat('HH').format(dateTime); logger('book_appointment_time_selection', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, 'appointment_day': day, 'appointment_hour': hour }); } // R024.2 book_appointment_review({required String appointment_type, required DateTime dateTime, required DoctorList doctor}) { final day = DateUtil.getWeekDay(dateTime.weekday); final hour = DateFormat('HH').format(dateTime); logger('book_appointment_review', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, 'appointment_day': day, 'appointment_hour': hour }); } // R025 book_appointment_click_confirm({required String appointment_type, required DateTime dateTime, required DoctorList doctor}) { final day = DateUtil.getWeekDay(dateTime.weekday); final hour = DateFormat('HH').format(dateTime); logger('book_appointment_click_confirm', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, 'appointment_day': day, 'appointment_hour': hour // '5-6' }); } // R026 book_appointment_confirmation_success({required String appointment_type, required DateTime dateTime, required DoctorList doctor}) { final day = DateUtil.getWeekDay(dateTime.weekday); final hour = DateFormat('HH').format(dateTime); logger('book_appointment_confirmation_success', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctor.clinicName, 'hospital_name': doctor.projectName, 'treatment_type': GAnalytics.TREATMENT_TYPE ?? '', 'doctor_name': doctor.name, 'doctor_nationality': doctor.nationalityName, 'doctor_gender': doctor.genderDescription, 'appointment_day': day, 'appointment_hour': hour }); } // R049.1 // should be for appointment flow appointment_actions(AppoitmentAllHistoryResultList appointment, String action) { logger('appointment_actions', parameters: { 'action_type': action, 'flow_type': GAnalytics.APPOINTMENT_DETAIL_FLOW_TYPE, 'appointment_type': appointment.appointmentType, 'clinic_type_online': appointment.clinicName, 'hospital_name': appointment.projectName, 'doctor_name': (appointment.doctorName == null || appointment.doctorName == '') ? appointment.doctorNameObj : appointment.doctorName, 'payment_type': 'appointment', }); } // R027 appointment_reminder(bool value) { logger('appointment_reminder', parameters: {'reminder': value ? 'yes' : 'no'}); } // R028 appointment_reminder_time({required String reminde_before}) { logger('appointment_reminder_time', parameters: {'reminder_before': reminde_before}); } // R053 // Note : - Payment flow beyond this step are same as listed under ‘Advance Payment’ section of this document pay_now_for_appointment({required String appointment_type, required DoctorList doctorDetail, bool payNow = true}) { logger('pay_now_for_appointment', parameters: { 'appointment_type': appointment_type, 'clinic_type': doctorDetail.clinicName, 'hospital_name': doctorDetail.projectName, 'doctor_name': doctorDetail.name, 'payment_type': 'appointment' }); } // R033 payment_method({required String appointment_type, clinic, payment_method, payment_type}) { logger('payment_method', parameters: {'appointment_type': appointment_type, 'clinic_type': clinic, 'payment_method': payment_method, 'payment_type': payment_type}); } // R036 payment_success({required String appointment_type, clinic, hospital, payment_method, payment_type, txn_number, txn_amount, txn_currency}) { logger('payment_success', parameters: { 'appointment_type': appointment_type, 'payment_method': payment_method, 'payment_type': payment_type, 'hospital_name': hospital, 'clinic_type_online': clinic, 'transaction_number': txn_number, 'transaction_amount': txn_amount, 'transaction_currency': txn_currency, }); } payment_fail({required String appointment_type, clinic, hospital, payment_method, payment_type, txn_amount, txn_currency, error_type}) { logger('payment_fail', parameters: { 'appointment_type': appointment_type, 'payment_method': payment_method, 'payment_type': payment_type, 'hospital_name': hospital, 'clinic_type_online': clinic, 'transaction_amount': txn_amount, 'transaction_currency': txn_currency, 'error_type': error_type }); } // Note : - Payment flow beyond this step are same as listed under ‘Advance Payment’ section of this document appointment_detail_action({required AppoitmentAllHistoryResultList appointment, required String action}) { logger('appointment_detail_action', parameters: { 'action_type': action, 'flow_type': GAnalytics.APPOINTMENT_DETAIL_FLOW_TYPE, }); } // Note : - Payment flow beyond this step are same as listed under ‘Advance Payment’ section of this document appointment_details_confirm({required AppoitmentAllHistoryResultList appointment}) { logger('appointment_details_confirm', parameters: {}); } // R053 // Note : - Payment flow beyond this step are same as listed under ‘Advance Payment’ section of this document appointment_details_cancel({required AppoitmentAllHistoryResultList appointment, appointment_type}) { logger('cancel_appointment', parameters: { 'flow_type': GAnalytics.APPOINTMENT_DETAIL_FLOW_TYPE, 'appointment_type': appointment_type, 'clinic_type_online': appointment.clinicName, 'hospital_name': appointment.projectName, 'doctor_name': (appointment.doctorName == null || appointment.doctorName == '') ? appointment.doctorNameObj : appointment.doctorName }); } }