diff --git a/assets/images/drSchedul.png b/assets/images/drSchedul.png new file mode 100644 index 00000000..4bb95607 Binary files /dev/null and b/assets/images/drSchedul.png differ diff --git a/assets/images/new-design/doctor_white.png b/assets/images/new-design/doctor_white.png new file mode 100644 index 00000000..bb5944cb Binary files /dev/null and b/assets/images/new-design/doctor_white.png differ diff --git a/lib/config/config.dart b/lib/config/config.dart index 8a77fd5e..1f8102e7 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -33,7 +33,8 @@ const GET_GEO_ZONES = 'Services/Patients.svc/REST/GeoF_GetAllPoints'; const LOG_GEO_ZONES = 'Services/Patients.svc/REST/GeoF_InsertPatientFileInfo'; // Delivery Driver -const DRIVER_LOCATION = 'Services/Patients.svc/REST/PatientER_GetDriverLocation'; +const DRIVER_LOCATION = + 'Services/Patients.svc/REST/PatientER_GetDriverLocation'; //weather const WEATHER_INDICATOR = 'Services/Weather.svc/REST/GetCityInfo'; @@ -41,37 +42,54 @@ const WEATHER_INDICATOR = 'Services/Weather.svc/REST/GetCityInfo'; const GET_PRIVILEGE = 'Services/Patients.svc/REST/Service_Privilege'; // Wifi Credentials -const WIFI_CREDENTIALS = "Services/Patients.svc/Hmg_SMS_Get_By_ProjectID_And_PatientID"; +const WIFI_CREDENTIALS = + "Services/Patients.svc/Hmg_SMS_Get_By_ProjectID_And_PatientID"; ///Doctor -const GET_MY_DOCTOR = 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; +const GET_MY_DOCTOR = + 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; const GET_DOCTOR_PROFILE = 'Services/Doctors.svc/REST/GetDocProfiles'; -const GET_DOCTOR_PRE_POST_IMAGES = 'Services/Doctors.svc/REST/GetDoctorPrePostImages'; -const GET_DOCTOR_RATING_NOTES = 'Services/Doctors.svc/REST/dr_GetNotesDoctorRating'; -const GET_DOCTOR_RATING_DETAILS = 'Services/Doctors.svc/REST/dr_GetDoctorRatingDetails'; +const GET_DOCTOR_PRE_POST_IMAGES = + 'Services/Doctors.svc/REST/GetDoctorPrePostImages'; +const GET_DOCTOR_RATING_NOTES = + 'Services/Doctors.svc/REST/dr_GetNotesDoctorRating'; +const GET_DOCTOR_RATING_DETAILS = + 'Services/Doctors.svc/REST/dr_GetDoctorRatingDetails'; + const GET_DOCTOR_RATING = 'Services/Doctors.svc/REST/dr_GetAvgDoctorRating'; ///Prescriptions const PRESCRIPTIONS = 'Services/Patients.svc/REST/GetPrescriptionApptList'; -const GET_PRESCRIPTIONS_ALL_ORDERS = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; -const GET_PRESCRIPTION_REPORT = 'Services/Patients.svc/REST/INP_GetPrescriptionReport'; -const SEND_PRESCRIPTION_EMAIL = 'Services/Notifications.svc/REST/SendPrescriptionEmail'; -const GET_PRESCRIPTION_REPORT_ENH = 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; +const GET_PRESCRIPTIONS_ALL_ORDERS = + 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; +const GET_PRESCRIPTION_REPORT = + 'Services/Patients.svc/REST/INP_GetPrescriptionReport'; +const SEND_PRESCRIPTION_EMAIL = + 'Services/Notifications.svc/REST/SendPrescriptionEmail'; +const GET_PRESCRIPTION_REPORT_ENH = + 'Services/Patients.svc/REST/GetPrescriptionReport_enh'; ///Lab Order const GET_Patient_LAB_ORDERS = 'Services/Patients.svc/REST/GetPatientLabOrders'; -const GET_Patient_LAB_SPECIAL_RESULT = 'Services/Patients.svc/REST/GetPatientLabSpecialResults'; -const SEND_LAB_RESULT_EMAIL = 'Services/Notifications.svc/REST/SendLabReportEmail'; -const GET_Patient_LAB_RESULT = 'Services/Patients.svc/REST/GetPatientLabResults'; -const GET_Patient_LAB_ORDERS_RESULT = 'Services/Patients.svc/REST/GetPatientLabOrdersResults'; +const GET_Patient_LAB_SPECIAL_RESULT = + 'Services/Patients.svc/REST/GetPatientLabSpecialResults'; +const SEND_LAB_RESULT_EMAIL = + 'Services/Notifications.svc/REST/SendLabReportEmail'; +const GET_Patient_LAB_RESULT = + 'Services/Patients.svc/REST/GetPatientLabResults'; +const GET_Patient_LAB_ORDERS_RESULT = + 'Services/Patients.svc/REST/GetPatientLabOrdersResults'; /// const GET_PATIENT_ORDERS = 'Services/Patients.svc/REST/GetPatientRadOrders'; -const GET_PATIENT_LAB_ORDERS_BY_APPOINTMENT = 'Services/Patients.svc/REST/GetPatientLabResultsByAppointmentNo'; +const GET_PATIENT_LAB_ORDERS_BY_APPOINTMENT = + 'Services/Patients.svc/REST/GetPatientLabResultsByAppointmentNo'; -const GET_PATIENT_ORDERS_DETAILS = 'Services/Patients.svc/REST/Rad_UpdatePatientRadOrdersToRead'; +const GET_PATIENT_ORDERS_DETAILS = + 'Services/Patients.svc/REST/Rad_UpdatePatientRadOrdersToRead'; const GET_RAD_IMAGE_URL = 'Services/Patients.svc/Rest/GetRadImageURL'; -const SEND_RAD_REPORT_EMAIL = 'Services/Notifications.svc/REST/SendRadReportEmail'; +const SEND_RAD_REPORT_EMAIL = + 'Services/Notifications.svc/REST/SendRadReportEmail'; ///Feedback const SEND_FEEDBACK = 'Services/COCWS.svc/REST/InsertCOCItemInSPList'; @@ -80,28 +98,39 @@ const GET_PATIENT_AppointmentHistory = 'Services' '/Doctors.svc/REST/PateintHasAppoimentHistory'; ///VITAL SIGN -const GET_PATIENT_VITAL_SIGN = 'Services/Doctors.svc/REST/Doctor_GetPatientVitalSign'; +const GET_PATIENT_VITAL_SIGN = + 'Services/Doctors.svc/REST/Doctor_GetPatientVitalSign'; ///Er Nearest -const GET_NEAREST_HOSPITAL = 'Services/Patients.svc/REST/Patient_GetProjectAvgERWaitingTime'; +const GET_NEAREST_HOSPITAL = + 'Services/Patients.svc/REST/Patient_GetProjectAvgERWaitingTime'; ///ED Online -const ER_GET_VISUAL_TRIAGE_QUESTIONS = "services/Doctors.svc/REST/ER_GetVisualTriageQuestions"; -const ER_SAVE_TRIAGE_INFORMATION = "services/Doctors.svc/REST/ER_SaveTriageInformation"; +const ER_GET_VISUAL_TRIAGE_QUESTIONS = + "services/Doctors.svc/REST/ER_GetVisualTriageQuestions"; +const ER_SAVE_TRIAGE_INFORMATION = + "services/Doctors.svc/REST/ER_SaveTriageInformation"; const ER_GetPatientPaymentInformationForERClinic = "services/Doctors.svc/REST/ER_GetPatientPaymentInformationForERClinic"; ///Er Nearest -const GET_AMBULANCE_REQUEST = 'Services/Patients.svc/REST/PatientER_RRT_GetAllTransportationMethod'; -const GET_PATIENT_ALL_PRES_ORDERS = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; -const GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID = 'Services/Patients.svc/REST/PatientER_RRT_GetPickUpRequestByPresOrderID'; -const UPDATE_PRESS_ORDER = 'Services/Patients.svc/REST/PatientER_UpdatePresOrder'; -const INSERT_ER_INERT_PRES_ORDER = 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; +const GET_AMBULANCE_REQUEST = + 'Services/Patients.svc/REST/PatientER_RRT_GetAllTransportationMethod'; +const GET_PATIENT_ALL_PRES_ORDERS = + 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; +const GET_PICK_UP_REQUEST_BY_PRES_ORDER_ID = + 'Services/Patients.svc/REST/PatientER_RRT_GetPickUpRequestByPresOrderID'; +const UPDATE_PRESS_ORDER = + 'Services/Patients.svc/REST/PatientER_UpdatePresOrder'; +const INSERT_ER_INERT_PRES_ORDER = + 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; /// ER RRT const GET_ALL_RC_TRANSPORTATION = 'rc/api/Transportation/getalltransportation'; -const GET_ALL_RRT_QUESTIONS = 'Services/Patients.svc/REST/PatientER_RRT_GetAllQuestions'; -const GET_RRT_SERVICE_PRICE = 'Services/Patients.svc/REST/PatientE_RealRRT_GetServicePrice'; +const GET_ALL_RRT_QUESTIONS = + 'Services/Patients.svc/REST/PatientER_RRT_GetAllQuestions'; +const GET_RRT_SERVICE_PRICE = + 'Services/Patients.svc/REST/PatientE_RealRRT_GetServicePrice'; ///FindUs const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations'; @@ -110,13 +139,15 @@ const GET_FINDUS_REQUEST = 'Services/Lists.svc/REST/Get_HMG_Locations'; const GET_LIVECHAT_REQUEST = 'Services/Patients.svc/REST/GetPatientICProjects'; ///babyInformation -const GET_BABYINFORMATION_REQUEST = 'Services/Community.svc/REST/GetBabyByUserID'; +const GET_BABYINFORMATION_REQUEST = + 'Services/Community.svc/REST/GetBabyByUserID'; ///Get Baby By User ID const GET_BABY_BY_USER_ID = 'Services/Community.svc/REST/GetBabyByUserID'; ///userInformation -const GET_USERINFORMATION_REQUEST = 'Services/Community.svc/REST/GetUserInformation_New'; +const GET_USERINFORMATION_REQUEST = + 'Services/Community.svc/REST/GetUserInformation_New'; ///Update email const UPDATE_PATENT_EMAIL = 'Services/Patients.svc/REST/UpdatePateintEmail'; @@ -138,21 +169,29 @@ const GET_TABLE_REQUEST = 'Services/Community.svc/REST/CreateVaccinationTable'; const GET_CITIES_REQUEST = 'Services/Lists.svc/REST/GetAllCities'; ///BloodDetails -const GET_BLOOD_REQUEST = 'services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails'; +const GET_BLOOD_REQUEST = + 'services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails'; -const SAVE_BLOOD_REQUEST = 'Services/PatientVarification.svc/REST/BloodDonation_RegisterBloodType'; +const SAVE_BLOOD_REQUEST = + 'Services/PatientVarification.svc/REST/BloodDonation_RegisterBloodType'; -const GET_BLOOD_AGREEMENT = 'Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation'; -const SAVE_BLOOD_AGREEMENT = 'Services/PatientVarification.svc/REST/AddUserAgreementForBloodDonation'; +const GET_BLOOD_AGREEMENT = + 'Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation'; +const SAVE_BLOOD_AGREEMENT = + 'Services/PatientVarification.svc/REST/AddUserAgreementForBloodDonation'; ///Reports const REPORTS = 'Services/Doctors.svc/REST/GetPatientMedicalReportStatusInfo'; -const INSERT_REQUEST_FOR_MEDICAL_REPORT = 'Services/Doctors.svc/REST/InsertRequestForMedicalReport'; -const SEND_MEDICAL_REPORT_EMAIL = 'Services/Notifications.svc/REST/SendMedicalReportEmail'; +const INSERT_REQUEST_FOR_MEDICAL_REPORT = + 'Services/Doctors.svc/REST/InsertRequestForMedicalReport'; +const SEND_MEDICAL_REPORT_EMAIL = + 'Services/Notifications.svc/REST/SendMedicalReportEmail'; ///Rate -const IS_LAST_APPOITMENT_RATED = 'Services/Doctors.svc/REST/IsLastAppoitmentRated'; -const GET_APPOINTMENT_DETAILS_BY_NO = 'Services/MobileNotifications.svc/REST/GetAppointmentDetailsByApptNo'; +const IS_LAST_APPOITMENT_RATED = + 'Services/Doctors.svc/REST/IsLastAppoitmentRated'; +const GET_APPOINTMENT_DETAILS_BY_NO = + 'Services/MobileNotifications.svc/REST/GetAppointmentDetailsByApptNo'; const GET_QR_PARKING = 'Services/SWP.svc/REST/GetQRParkingByID'; @@ -164,7 +203,8 @@ const GET_QR_PARKING = 'Services/SWP.svc/REST/GetQRParkingByID'; const GET_CLINICS_LIST_URL = "Services/lists.svc/REST/GetClinicCentralized"; //URL to get active appointment list -const GET_ACTIVE_APPOINTMENTS_LIST_URL = "Services/Doctors.svc/Rest/Dr_GetAppointmentActiveNumber"; +const GET_ACTIVE_APPOINTMENTS_LIST_URL = + "Services/Doctors.svc/Rest/Dr_GetAppointmentActiveNumber"; //URL to get projects list const GET_PROJECTS_LIST = 'Services/Lists.svc/REST/GetProject'; @@ -173,87 +213,121 @@ const GET_PROJECTS_LIST = 'Services/Lists.svc/REST/GetProject'; const GET_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/SearchDoctorsByTime"; //URL to dental doctors list -const GET_DENTAL_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; +const GET_DENTAL_DOCTORS_LIST_URL = + "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; //URL to get doctor free slots const GET_DOCTOR_FREE_SLOTS = "Services/Doctors.svc/REST/GetDoctorFreeSlots"; //URL to insert appointment -const INSERT_SPECIFIC_APPOINTMENT = "Services/Doctors.svc/REST/InsertSpecificAppointment"; +const INSERT_SPECIFIC_APPOINTMENT = + "Services/Doctors.svc/REST/InsertSpecificAppointment"; //URL to get patient share -const GET_PATIENT_SHARE = "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNO"; +const GET_PATIENT_SHARE = + "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNO"; //URL to get patient appointment history -const GET_PATIENT_APPOINTMENT_HISTORY = "Services/Doctors.svc/REST/PateintHasAppoimentHistory"; +const GET_PATIENT_APPOINTMENT_HISTORY = + "Services/Doctors.svc/REST/PateintHasAppoimentHistory"; + +const DOCTOR_SCHEDULE_URL = + 'Services/Doctors.svc/REST/GetDoctorWorkingHoursTable'; -const SEND_REPORT_EYE_EMAIL = "Services/Notifications.svc/REST/SendGlassesPrescriptionEmail"; +const SEND_REPORT_EYE_EMAIL = + "Services/Notifications.svc/REST/SendGlassesPrescriptionEmail"; -const SEND_CONTACT_LENS_PRESCRIPTION_EMAIL = "Services/Notifications.svc/REST/SendContactLensPrescriptionEmail"; +const SEND_CONTACT_LENS_PRESCRIPTION_EMAIL = + "Services/Notifications.svc/REST/SendContactLensPrescriptionEmail"; //URL to get patient appointment curfew history -const GET_PATIENT_APPOINTMENT_CURFEW_HISTORY = "Services/Doctors.svc/REST/AppoimentHistoryForCurfew"; +const GET_PATIENT_APPOINTMENT_CURFEW_HISTORY = + "Services/Doctors.svc/REST/AppoimentHistoryForCurfew"; //URL to confirm appointment -const CONFIRM_APPOINTMENT = "Services/MobileNotifications.svc/REST/ConfirmAppointment"; +const CONFIRM_APPOINTMENT = + "Services/MobileNotifications.svc/REST/ConfirmAppointment"; -const INSERT_VIDA_REQUEST = "Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart"; +const INSERT_VIDA_REQUEST = + "Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart"; //URL to cancel appointment const CANCEL_APPOINTMENT = "Services/Doctors.svc/REST/CancelAppointment"; //URL get appointment QR -const GENERATE_QR_APPOINTMENT = "Services/Doctors.svc/REST/GenerateQRAppointmentNo"; +const GENERATE_QR_APPOINTMENT = + "Services/Doctors.svc/REST/GenerateQRAppointmentNo"; //URL send email appointment QR -const EMAIL_QR_APPOINTMENT = "Services/Notifications.svc/REST/sendEmailForOnLineCheckin"; +const EMAIL_QR_APPOINTMENT = + "Services/Notifications.svc/REST/sendEmailForOnLineCheckin"; //URL check payment status -const CHECK_PAYMENT_STATUS = "Services/PayFort_Serv.svc/REST/GetRequestStatusByRequestID"; +const CHECK_PAYMENT_STATUS = + "Services/PayFort_Serv.svc/REST/GetRequestStatusByRequestID"; //URL create advance payment const CREATE_ADVANCE_PAYMENT = "Services/Doctors.svc/REST/CreateAdvancePayment"; -const HIS_CREATE_ADVANCE_PAYMENT = "Services/Patients.svc/REST/HIS_CreateAdvancePayment"; +const HIS_CREATE_ADVANCE_PAYMENT = + "Services/Patients.svc/REST/HIS_CreateAdvancePayment"; -const ADD_ADVANCE_NUMBER_REQUEST = 'Services/PayFort_Serv.svc/REST/AddAdvancedNumberRequest'; +const ADD_ADVANCE_NUMBER_REQUEST = + 'Services/PayFort_Serv.svc/REST/AddAdvancedNumberRequest'; -const IS_ALLOW_ASK_DOCTOR = 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; -const GET_CALL_REQUEST_TYPE = 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; -const ADD_VIDA_REQUEST = 'Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart'; +const IS_ALLOW_ASK_DOCTOR = + 'Services/Doctors.svc/REST/GetPatientDoctorAppointmentResult'; +const GET_CALL_REQUEST_TYPE = + 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; +const ADD_VIDA_REQUEST = + 'Services/ER_VirtualCall.svc/REST/PatientER_VidaRequestInseart'; const SEND_CALL_REQUEST = 'Services/Doctors.svc/REST/InsertCallInfo'; -const GET_LIVECARE_CLINICS = 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinics'; +const GET_LIVECARE_CLINICS = + 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinics'; -const GET_LIVECARE_SCHEDULE_CLINICS = 'Services/Doctors.svc/REST/PatientER_GetClinicsHaveSchedule'; +const GET_LIVECARE_SCHEDULE_CLINICS = + 'Services/Doctors.svc/REST/PatientER_GetClinicsHaveSchedule'; -const GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST = 'Services/Doctors.svc/REST/PatientER_GetDoctorByClinicID'; +const GET_LIVECARE_SCHEDULE_CLINIC_DOCTOR_LIST = + 'Services/Doctors.svc/REST/PatientER_GetDoctorByClinicID'; -const GET_LIVECARE_SCHEDULE_DOCTOR_TIME_SLOTS = 'Services/Doctors.svc/REST/PatientER_GetDoctorFreeSlots'; +const GET_LIVECARE_SCHEDULE_DOCTOR_TIME_SLOTS = + 'Services/Doctors.svc/REST/PatientER_GetDoctorFreeSlots'; -const INSERT_LIVECARE_SCHEDULE_APPOINTMENT = 'Services/Doctors.svc/REST/InsertSpecificAppoitmentForSchedule'; +const INSERT_LIVECARE_SCHEDULE_APPOINTMENT = + 'Services/Doctors.svc/REST/InsertSpecificAppoitmentForSchedule'; const GET_PATIENT_SHARE_LIVECARE = "Services/Doctors.svc/REST/GetCheckinScreenAppointmentDetailsByAppointmentNOForLiveCare"; -const GET_LIVECARE_CLINIC_TIMING = 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinicsServiceTimingsSchedule'; +const GET_LIVECARE_CLINIC_TIMING = + 'Services/ER_VirtualCall.svc/REST/PatientER_GetClinicsServiceTimingsSchedule'; -const GET_ER_APPOINTMENT_FEES = 'Services/DoctorApplication.svc/REST/GetERAppointmentFees'; +const GET_ER_APPOINTMENT_FEES = + 'Services/DoctorApplication.svc/REST/GetERAppointmentFees'; const GET_ER_APPOINTMENT_TIME = 'Services/ER_VirtualCall.svc/REST/GetRestTime'; -const ADD_NEW_CALL_FOR_PATIENT_ER = 'Services/DoctorApplication.svc/REST/NewCallForPatientER'; +const ADD_NEW_CALL_FOR_PATIENT_ER = + 'Services/DoctorApplication.svc/REST/NewCallForPatientER'; -const GET_LIVECARE_HISTORY = 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtualHistory'; -const CANCEL_LIVECARE_REQUEST = 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; -const SEND_LIVECARE_INVOICE_EMAIL = 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; +const GET_LIVECARE_HISTORY = + 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtualHistory'; +const CANCEL_LIVECARE_REQUEST = + 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; +const SEND_LIVECARE_INVOICE_EMAIL = + 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; const GET_USER_TERMS = 'Services/Patients.svc/REST/GetUserTermsAndConditions'; -const UPDATE_HEALTH_TERMS = 'services/Patients.svc/REST/UpdatePateintHealthSummaryReport'; +const UPDATE_HEALTH_TERMS = + 'services/Patients.svc/REST/UpdatePateintHealthSummaryReport'; -const GET_PATIENT_HEALTH_STATS = 'Services/Patients.svc/REST/Med_GetTransactionsSts'; +const GET_PATIENT_HEALTH_STATS = + 'Services/Patients.svc/REST/Med_GetTransactionsSts'; -const SEND_CHECK_IN_NFC_REQUEST = 'Services/Patients.svc/REST/Patient_CheckAppointmentValidation_ForNFC'; +const SEND_CHECK_IN_NFC_REQUEST = + 'Services/Patients.svc/REST/Patient_CheckAppointmentValidation_ForNFC'; //URL to get medicine and pharmacies list const CHANNEL = 3; @@ -274,16 +348,21 @@ var DeviceTypeID = Platform.isIOS ? 1 : 2; const LANGUAGE_ID = 2; const GET_PHARMCY_ITEMS = "Services/Lists.svc/REST/GetPharmcyItems_Region"; const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList"; -const GET_PAtIENTS_INSURANCE = "Services/Patients.svc/REST/Get_PatientInsuranceDetails"; -const GET_PAtIENTS_INSURANCE_UPDATED = "Services/Patients.svc/REST/PatientER_GetPatientInsuranceCardUpdateHistory"; +const GET_PAtIENTS_INSURANCE = + "Services/Patients.svc/REST/Get_PatientInsuranceDetails"; +const GET_PAtIENTS_INSURANCE_UPDATED = + "Services/Patients.svc/REST/PatientER_GetPatientInsuranceCardUpdateHistory"; const INSURANCE_DETAILS = "Services/Patients.svc/REST/Get_InsuranceCheckList"; -const GET_PATIENT_INSURANCE_DETAILS = "Services/Patients.svc/REST/PatientER_GetPatientInsuranceDetails"; -const UPLOAD_INSURANCE_CARD = 'Services/Patients.svc/REST/PatientER_PatientInfoForInsuranceCardUpdate'; +const GET_PATIENT_INSURANCE_DETAILS = + "Services/Patients.svc/REST/PatientER_GetPatientInsuranceDetails"; +const UPLOAD_INSURANCE_CARD = + 'Services/Patients.svc/REST/PatientER_PatientInfoForInsuranceCardUpdate'; const GET_VACCINES = "Services/Patients.svc/REST/GetDoneVaccinesByPatientID"; const GET_VACCINES_EMAIL = "Services/Notifications.svc/REST/SendVaccinesEmail"; -const GET_PAtIENTS_INSURANCE_APPROVALS = "Services/Patients.svc/REST/GetApprovalStatus_DWH"; +const GET_PAtIENTS_INSURANCE_APPROVALS = + "Services/Patients.svc/REST/GetApprovalStatus_DWH"; const SEARCH_BOT = 'HabibiChatBotApi/BotInterface/GetVoiceCommandResponse'; const GET_VACCINATIONS_ITEMS = "/Services/ERP.svc/REST/GET_VACCINATIONS_ITEMS"; @@ -293,56 +372,84 @@ const GET_PATIENT_SICK_LEAVE = 'Services/Patients.svc/REST/GetPatientSickLeave'; const SendSickLeaveEmail = 'Services/Notifications.svc/REST/SendSickLeaveEmail'; -const GET_PATIENT_AdVANCE_BALANCE_AMOUNT = 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; -const GET_PATIENT_INFO_BY_ID = 'Services/Doctors.svc/REST/GetPatientInfoByPatientID'; +const GET_PATIENT_AdVANCE_BALANCE_AMOUNT = + 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; +const GET_PATIENT_INFO_BY_ID = + 'Services/Doctors.svc/REST/GetPatientInfoByPatientID'; const GET_PATIENT_INFO_BY_ID_AND_MOBILE_NUMBER = 'Services/Patients.svc/REST/AP_GetPatientInfoByPatientIDandMobileNumber'; -const SEND_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/SendActivationCodeForAdvancePayment'; +const SEND_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = + 'Services/Authentication.svc/REST/SendActivationCodeForAdvancePayment'; const CHECK_ACTIVATION_CODE_FOR_ADVANCE_PAYMENT = 'Services/Authentication.svc/REST/CheckActivationCodeForAdvancePayment'; -const GET_COVID_DRIVETHRU_PROJECT_LIST = 'Services/Doctors.svc/REST/COVID19_ProjectDriveThroughTestingCenter'; +const GET_COVID_DRIVETHRU_PROJECT_LIST = + 'Services/Doctors.svc/REST/COVID19_ProjectDriveThroughTestingCenter'; -const GET_COVID_DRIVETHRU_PAYMENT_INFO = 'Services/Doctors.svc/REST/COVID19_GetPatientPaymentInormation'; +const GET_COVID_DRIVETHRU_PAYMENT_INFO = + 'Services/Doctors.svc/REST/COVID19_GetPatientPaymentInormation'; -const GET_COVID_DRIVETHRU_FREE_SLOTS = 'Services/Doctors.svc/REST/COVID19_GetFreeSlots'; +const GET_COVID_DRIVETHRU_FREE_SLOTS = + 'Services/Doctors.svc/REST/COVID19_GetFreeSlots'; -const GET_COVID_DRIVETHRU_PROCEDURES_LIST = 'Services/Doctors.svc/REST/COVID19_GetTestProcedures'; +const GET_COVID_DRIVETHRU_PROCEDURES_LIST = + 'Services/Doctors.svc/REST/COVID19_GetTestProcedures'; ///Smartwatch Integration Services -const GET_PATIENT_LAST_RECORD = 'Services/Patients.svc/REST/Med_GetPatientLastRecord'; +const GET_PATIENT_LAST_RECORD = + 'Services/Patients.svc/REST/Med_GetPatientLastRecord'; ///My Trackers -const GET_DIABETIC_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetDiabeticResultAverage'; -const GET_DIABTEC_RESULT = 'Services/Patients.svc/REST/Patient_GetDiabtecResults'; -const ADD_DIABTEC_RESULT = 'Services/Patients.svc/REST/Patient_AddDiabtecResult'; - -const GET_BLOOD_PRESSURE_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetBloodPressureResultAverage'; -const GET_BLOOD_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_GetBloodPressureResult'; -const ADD_BLOOD_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_AddBloodPressureResult'; - -const GET_WEIGHT_PRESSURE_RESULT_AVERAGE = 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResultAverage'; -const GET_WEIGHT_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResult'; -const ADD_WEIGHT_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_AddWeightMeasurementResult'; +const GET_DIABETIC_RESULT_AVERAGE = + 'Services/Patients.svc/REST/Patient_GetDiabeticResultAverage'; +const GET_DIABTEC_RESULT = + 'Services/Patients.svc/REST/Patient_GetDiabtecResults'; +const ADD_DIABTEC_RESULT = + 'Services/Patients.svc/REST/Patient_AddDiabtecResult'; + +const GET_BLOOD_PRESSURE_RESULT_AVERAGE = + 'Services/Patients.svc/REST/Patient_GetBloodPressureResultAverage'; +const GET_BLOOD_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_GetBloodPressureResult'; +const ADD_BLOOD_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_AddBloodPressureResult'; + +const GET_WEIGHT_PRESSURE_RESULT_AVERAGE = + 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResultAverage'; +const GET_WEIGHT_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_GetWeightMeasurementResult'; +const ADD_WEIGHT_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_AddWeightMeasurementResult'; const ADD_ACTIVE_PRESCRIPTIONS_REPORT_BY_PATIENT_ID = 'Services/Patients.svc/Rest/GetActivePrescriptionReportByPatientID'; -const GET_CALL_INFO_HOURS_RESULT = 'Services/Doctors.svc/REST/GetCallInfoHoursResult'; -const GET_CALL_REQUEST_TYPE_LOV = 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; - -const UPDATE_DIABETIC_RESULT = 'Services/Patients.svc/REST/Patient_UpdateDiabeticResult'; - -const SEND_AVERAGE_BLOOD_SUGAR_REPORT = 'Services/Notifications.svc/REST/SendAverageBloodSugarReport'; -const DEACTIVATE_DIABETIC_STATUS = 'services/Patients.svc/REST/Patient_DeactivateDiabeticStatus'; -const DEACTIVATE_BLOOD_PRESSURES_STATUS = 'services/Patients.svc/REST/Patient_DeactivateBloodPressureStatus'; - -const UPDATE_BLOOD_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_UpdateBloodPressureResult'; -const SEND_AVERAGE_BLOOD_WEIGHT_REPORT = 'Services/Notifications.svc/REST/SendAverageBodyWeightReport'; -const SEND_AVERAGE_BLOOD_PRESSURE_REPORT = 'Services/Notifications.svc/REST/SendAverageBloodPressureReport'; - -const UPDATE_WEIGHT_PRESSURE_RESULT = 'Services/Patients.svc/REST/Patient_UpdateWeightMeasurementResult'; -const DEACTIVATE_WEIGHT_PRESSURE_RESULT = 'services/Patients.svc/REST/Patient_DeactivateWeightMeasurementStatus'; +const GET_CALL_INFO_HOURS_RESULT = + 'Services/Doctors.svc/REST/GetCallInfoHoursResult'; +const GET_CALL_REQUEST_TYPE_LOV = + 'Services/Doctors.svc/REST/GetCallRequestType_LOV'; + +const UPDATE_DIABETIC_RESULT = + 'Services/Patients.svc/REST/Patient_UpdateDiabeticResult'; + +const SEND_AVERAGE_BLOOD_SUGAR_REPORT = + 'Services/Notifications.svc/REST/SendAverageBloodSugarReport'; +const DEACTIVATE_DIABETIC_STATUS = + 'services/Patients.svc/REST/Patient_DeactivateDiabeticStatus'; +const DEACTIVATE_BLOOD_PRESSURES_STATUS = + 'services/Patients.svc/REST/Patient_DeactivateBloodPressureStatus'; + +const UPDATE_BLOOD_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_UpdateBloodPressureResult'; +const SEND_AVERAGE_BLOOD_WEIGHT_REPORT = + 'Services/Notifications.svc/REST/SendAverageBodyWeightReport'; +const SEND_AVERAGE_BLOOD_PRESSURE_REPORT = + 'Services/Notifications.svc/REST/SendAverageBloodPressureReport'; + +const UPDATE_WEIGHT_PRESSURE_RESULT = + 'Services/Patients.svc/REST/Patient_UpdateWeightMeasurementResult'; +const DEACTIVATE_WEIGHT_PRESSURE_RESULT = + 'services/Patients.svc/REST/Patient_DeactivateWeightMeasurementStatus'; const GET_DOCTOR_RESPONSE = 'Services/Patients.svc/REST/GetDoctorResponse'; const UPDATE_READ_STATUS = 'Services/Patients.svc/REST/UpdateReadStatus'; const INSERT_CALL_INFO = 'Services/Doctors.svc/REST/InsertCallInfo'; @@ -350,25 +457,35 @@ const INSERT_CALL_INFO = 'Services/Doctors.svc/REST/InsertCallInfo'; const GET_PATIENT_ALLERGIES = 'Services/Patients.svc/REST/GetPatientAllergies'; // H2O -const H2O_GET_USER_PROGRESS = "Services/H2ORemainder.svc/REST/H2O_GetUserProgress"; -const H2O_INSERT_USER_ACTIVITY = "Services/H2ORemainder.svc/REST/H2O_InsertUserActivity"; -const H2O_GET_USER_DETAIL = "Services/H2ORemainder.svc/REST/H2O_GetUserDetails_New"; -const H2O_UPDATE_USER_DETAIL = "Services/H2ORemainder.svc/REST/H2O_UpdateUserDetails_New"; -const H2O_UNDO_USER_ACTIVITY = "Services/H2ORemainder.svc/REST/H2o_UndoUserActivity"; +const H2O_GET_USER_PROGRESS = + "Services/H2ORemainder.svc/REST/H2O_GetUserProgress"; +const H2O_INSERT_USER_ACTIVITY = + "Services/H2ORemainder.svc/REST/H2O_InsertUserActivity"; +const H2O_GET_USER_DETAIL = + "Services/H2ORemainder.svc/REST/H2O_GetUserDetails_New"; +const H2O_UPDATE_USER_DETAIL = + "Services/H2ORemainder.svc/REST/H2O_UpdateUserDetails_New"; +const H2O_UNDO_USER_ACTIVITY = + "Services/H2ORemainder.svc/REST/H2o_UndoUserActivity"; //E_Referral Services -const GET_ALL_RELATIONSHIP_TYPES = "Services/Patients.svc/REST/GetAllRelationshipTypes"; -const SEND_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/SendActivationCodeForEReferral'; -const CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral'; +const GET_ALL_RELATIONSHIP_TYPES = + "Services/Patients.svc/REST/GetAllRelationshipTypes"; +const SEND_ACTIVATION_CODE_FOR_E_REFERRAL = + 'Services/Authentication.svc/REST/SendActivationCodeForEReferral'; +const CHECK_ACTIVATION_CODE_FOR_E_REFERRAL = + 'Services/Authentication.svc/REST/CheckActivationCodeForEReferral'; const GET_ALL_CITIES = 'services/Lists.svc/rest/GetAllCities'; const CREATE_E_REFERRAL = "Services/Patients.svc/REST/CreateEReferral"; const GET_E_REFERRALS = "Services/Patients.svc/REST/GetEReferrals"; // Encillary Orders -const GET_ANCILLARY_ORDERS = 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderList'; +const GET_ANCILLARY_ORDERS = + 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderList'; -const GET_ANCILLARY_ORDERS_DETAILS = 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderProcList'; +const GET_ANCILLARY_ORDERS_DETAILS = + 'Services/Doctors.svc/REST/GetOnlineAncillaryOrderProcList'; //Pharmacy wishlist // const GET_WISHLIST = "http://swd-pharapp-01:7200/api/shopping_cart_items/"; @@ -400,34 +517,50 @@ const GET_SHIPPING_OPTIONS = "get_shipping_option/"; const DELETE_SHOPPING_CART = "delete_shopping_cart_items/"; const DELETE_SHOPPING_CART_ALL = "delete_shopping_cart_item_by_customer/"; const ORDER_SHOPPING_CART = "orders"; -const GET_LACUM_ACCOUNT_INFORMATION = "Services/Patients.svc/REST/GetLakumAccountInformation"; -const GET_LACUM_GROUP_INFORMATION = "Services/Patients.svc/REST/GetlakumInQueryInfoGrouping"; -const LACUM_ACCOUNT_ACTIVATE = "Services/Patients.svc/REST/LakumAccountActivation"; -const LACUM_ACCOUNT_DEACTIVATE = "Services/Patients.svc/REST/LakumAccountDeactivation"; -const CREATE_LAKUM_ACCOUNT = "Services/Patients.svc/REST/PHR_CreateLakumAccount"; -const TRANSFER_YAHALA_LOYALITY_POINTS = "Services/Patients.svc/REST/TransferYaHalaLoyaltyPoints"; -const LAKUM_GET_USER_TERMS_AND_CONDITIONS = "Services/ERP.svc/REST/GetUserTermsAndConditionsForEPharmcy"; +const GET_LACUM_ACCOUNT_INFORMATION = + "Services/Patients.svc/REST/GetLakumAccountInformation"; +const GET_LACUM_GROUP_INFORMATION = + "Services/Patients.svc/REST/GetlakumInQueryInfoGrouping"; +const LACUM_ACCOUNT_ACTIVATE = + "Services/Patients.svc/REST/LakumAccountActivation"; +const LACUM_ACCOUNT_DEACTIVATE = + "Services/Patients.svc/REST/LakumAccountDeactivation"; +const CREATE_LAKUM_ACCOUNT = + "Services/Patients.svc/REST/PHR_CreateLakumAccount"; +const TRANSFER_YAHALA_LOYALITY_POINTS = + "Services/Patients.svc/REST/TransferYaHalaLoyaltyPoints"; +const LAKUM_GET_USER_TERMS_AND_CONDITIONS = + "Services/ERP.svc/REST/GetUserTermsAndConditionsForEPharmcy"; const PRESCRIPTION = 'Services/Patients.svc/REST/GetPrescriptionApptList'; const GET_RECOMMENDED_PRODUCT = 'alsoProduct/'; const GET_MOST_VIEWED_PRODUCTS = "mostview?"; const GET_NEW_PRODUCTS = "newproducts?"; // Home Health Care -const HHC_GET_ALL_SERVICES = "Services/Patients.svc/REST/PatientER_HHC_GetAllServices"; -const HHC_GET_ALL_CMC_SERVICES = "Services/Patients.svc/REST/PatientER_CMC_GetAllServices"; -const PATIENT_ER_UPDATE_PRES_ORDER = "Services/Patients.svc/REST/PatientER_UpdatePresOrder"; -const GET_ORDER_DETAIL_BY_ID = "Services/Patients.svc/REST/PatientER_HHC_GetTransactionsForOrder"; -const GET_CMC_ORDER_DETAIL_BY_ID = "Services/Patients.svc/REST/PatientER_CMC_GetTransactionsForOrder"; +const HHC_GET_ALL_SERVICES = + "Services/Patients.svc/REST/PatientER_HHC_GetAllServices"; +const HHC_GET_ALL_CMC_SERVICES = + "Services/Patients.svc/REST/PatientER_CMC_GetAllServices"; +const PATIENT_ER_UPDATE_PRES_ORDER = + "Services/Patients.svc/REST/PatientER_UpdatePresOrder"; +const GET_ORDER_DETAIL_BY_ID = + "Services/Patients.svc/REST/PatientER_HHC_GetTransactionsForOrder"; +const GET_CMC_ORDER_DETAIL_BY_ID = + "Services/Patients.svc/REST/PatientER_CMC_GetTransactionsForOrder"; const GET_CHECK_UP_ITEMS = "Services/Patients.svc/REST/GetCheckUpItems"; const PUSH_NOTIFICATION_GET_ALL_NOTIFICATIONS = 'Services/MobileNotifications.svc/REST/PushNotification_GetAllNotifications'; const PUSH_NOTIFICATION_SET_MESSAGES_FROM_POOL_AS_READ = 'Services/MobileNotifications.svc/REST/PushNotification_SetMessagesFromPoolAsRead'; -const GET_PATIENT_ALL_PRES_ORD = 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; -const PATIENT_ER_INSERT_PRES_ORDER = 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; +const GET_PATIENT_ALL_PRES_ORD = + 'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders'; +const PATIENT_ER_INSERT_PRES_ORDER = + 'Services/Patients.svc/REST/PatientER_InsertPresOrder'; const PHARMACY_MAKE_REVIEW = 'epharmacy/api/insertreviews'; -const BLOOD_DONATION_REGISTER_BLOOD_TYPE = 'Services/PatientVarification.svc/REST/BloodDonation_RegisterBloodType'; -const ADD_USER_AGREEMENT_FOR_BLOOD_DONATION = 'Services/PatientVarification.svc/REST/AddUserAgreementForBloodDonation'; +const BLOOD_DONATION_REGISTER_BLOOD_TYPE = + 'Services/PatientVarification.svc/REST/BloodDonation_RegisterBloodType'; +const ADD_USER_AGREEMENT_FOR_BLOOD_DONATION = + 'Services/PatientVarification.svc/REST/AddUserAgreementForBloodDonation'; //Pharmacy wishlist const GET_WISHLIST = "shopping_cart_items/"; @@ -460,7 +593,8 @@ const GET_SUB_PRODUCTS = 'products?categoryid='; const GET_FINAL_PRODUCTS = 'products?fields=id,reviews,discount_ids,name,namen,localized_names,display_order,short_description,full_description,full_descriptionn,sku,order_minimum_quantity,order_maximum_quantity,price,old_price,images,is_rx,rx_message,rx_messagen,discount_name,discount_namen,approved_rating_sum,approved_total_reviews,allow_back_in_stock_subscriptions,stock_quantity,stock_availability,stock_availabilityn,discount_percentage&CategoryId='; const GET_CLINIC_CATEGORY = 'Services/Doctors.svc/REST/DP_GetClinicCategory'; -const GET_DISEASE_BY_CLINIC_ID = 'Services/Doctors.svc/REST/DP_GetDiseasesByClinicID'; +const GET_DISEASE_BY_CLINIC_ID = + 'Services/Doctors.svc/REST/DP_GetDiseasesByClinicID'; const SEARCH_DOCTOR_BY_TIME = 'Services/Doctors.svc/REST/SearchDoctorsByTime'; const TIMER_MIN = 10; @@ -476,13 +610,17 @@ const SCAN_QR_CODE = 'productbysku/'; const FILTERED_PRODUCTS = 'products?categoryids='; -const GET_DOCTOR_LIST_CALCULATION = "Services/Doctors.svc/REST/GetCallculationDoctors"; +const GET_DOCTOR_LIST_CALCULATION = + "Services/Doctors.svc/REST/GetCallculationDoctors"; -const GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC = "Services/Patients.svc/REST/GetDentalAppointments"; +const GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC = + "Services/Patients.svc/REST/GetDentalAppointments"; -const GET_DENTAL_APPOINTMENT_INVOICE = "Services/Patients.svc/REST/HIS_eInvoiceForDentalByAppointmentNo"; +const GET_DENTAL_APPOINTMENT_INVOICE = + "Services/Patients.svc/REST/HIS_eInvoiceForDentalByAppointmentNo"; -const SEND_DENTAL_APPOINTMENT_INVOICE_EMAIL = "Services/Notifications.svc/REST/SendInvoiceForDental"; +const SEND_DENTAL_APPOINTMENT_INVOICE_EMAIL = + "Services/Notifications.svc/REST/SendInvoiceForDental"; class AppGlobal { static var context; diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 51615216..7642e863 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -184,14 +184,8 @@ const Map localizedValues = { 'scanQRHospital': {'en': 'Scan above QR Code to Check-In on the Machine in Hospital', 'ar': 'مسح فوق رمز الاستجابة السريعة للتحقق في الجهاز في المستشفى'}, "sendEmail": {"en": "Send Email", "ar": "ارسال نسخة"}, "success": {"en": "Done successfully", "ar": "تم تنفذ الطلب بنجاح"}, - "EmailSentSuccessfully": { - "en": "Email Sent Successfully", - "ar": "تم إرسال البريد الإلكتروني بنجاح" - }, - "EmailSentError": { - "en": "Error Sending Email", - "ar": "خطأ في إرسال البريد الإلكتروني" - }, + "EmailSentSuccessfully": {"en": "Email Sent Successfully", "ar": "تم إرسال البريد الإلكتروني بنجاح"}, + "EmailSentError": {"en": "Error Sending Email", "ar": "خطأ في إرسال البريد الإلكتروني"}, "close": {"en": "Close", "ar": "مغلق"}, "booked": {"en": "Booked", "ar": "محجوز"}, "confirmed": {"en": "Confirmed", "ar": "مؤكد"}, @@ -1400,4 +1394,34 @@ const Map localizedValues = { "en": "This Clinic is Accepting livecare services", "ar": "هذه العيادة تقدم خدمة لايف كير" }, + "schedule": {"en": "Schedule", "ar": "جدول الحضور"}, + "livecare-point-2": { + "en": "A Specialized doctor will contact you", + "ar": "سوف يقوم بخدمتك طبيب متخصص" + }, + "livecare-point-3": { + "en": "A Doctor will be able to see your full medical file history", + "ar": "سوف يتمكن الطبيب من الاطلاع على ملفك الطبي كاملا" + }, + "livecare-point-4": { + "en": "Free Medicine delivery Available", + "ar": "خدمة توصيل الادوية مجانا" + }, + "livecare-point-5": { + "en": "No need to visit the service is in your place", + "ar": "لا داعي للحضور سوف تحصل على الخدمة في مكانك" + }, + "book-immediate-livecare": { + "en": "I accept to get the service immediately", + "ar": "موافق اريد الحصول على الخدمة فورا" + }, + "book-video-livecare-2": { + "en": "I don't need to visit the clinic", + "ar": "اتصال فيديو لا احتاج الحضور الى العيادة" + }, + "no-thankyou": {"en": "No Thanks", "ar": "لا شكرا"}, + "visit-clinic": { + "en": "Schedule appointment with the doctor", + "ar": "ارغب في حجز موعد مجدول مع الطبيب" + }, }; diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 703f5e3c..4f83e7eb 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -31,3 +31,4 @@ const PHARMACY_SELECTED_ADDRESS = 'selected-address'; const PHARMACY_AUTORZIE_TOKEN = 'PHARMACY_AUTORZIE_TOKEN'; const H2O_UNIT = 'H2O_UNIT'; const H2O_REMINDER = 'H2O_REMINDER'; +const LIVECARE_CLINIC_DATA = 'LIVECARE_CLINIC_DATA'; diff --git a/lib/core/model/feedback/request_insert_coc_item.dart b/lib/core/model/feedback/request_insert_coc_item.dart index e8b6fce5..4bb397e6 100644 --- a/lib/core/model/feedback/request_insert_coc_item.dart +++ b/lib/core/model/feedback/request_insert_coc_item.dart @@ -29,38 +29,39 @@ class RequestInsertCOCItem { int deviceTypeID; int patientType; double appVersion; - + bool forDemo; RequestInsertCOCItem( {this.isUserLoggedIn, - this.mobileNo, - this.identificationNo, - this.patientID, - this.patientOutSA, - this.patientTypeID, - this.tokenID, - this.patientName, - this.projectID, - this.fileName, - this.attachment, - this.uILanguage, - this.browserInfo, - this.cOCTypeName, - this.formTypeID, - this.details, - this.deviceInfo, - this.deviceType, - this.title, - this.resolution, - this.versionID, - this.channel, - this.languageID, - this.iPAdress, - this.generalid, - this.sessionID, - this.isDentalAllowedBackend, - this.deviceTypeID, - this.patientType, - this.appVersion}); + this.mobileNo, + this.identificationNo, + this.patientID, + this.patientOutSA, + this.patientTypeID, + this.tokenID, + this.patientName, + this.projectID, + this.fileName, + this.attachment, + this.uILanguage, + this.browserInfo, + this.cOCTypeName, + this.formTypeID, + this.details, + this.deviceInfo, + this.deviceType, + this.title, + this.resolution, + this.versionID, + this.channel, + this.languageID, + this.iPAdress, + this.generalid, + this.sessionID, + this.isDentalAllowedBackend, + this.deviceTypeID, + this.patientType, + this.appVersion, + this.forDemo}); RequestInsertCOCItem.fromJson(Map json) { isUserLoggedIn = json['IsUserLoggedIn']; @@ -93,6 +94,7 @@ class RequestInsertCOCItem { deviceTypeID = json['DeviceTypeID']; patientType = json['PatientType']; appVersion = json['AppVersion']; + forDemo = json['ForDemo']; } Map toJson() { @@ -127,6 +129,8 @@ class RequestInsertCOCItem { data['DeviceTypeID'] = this.deviceTypeID; data['PatientType'] = this.patientType; data['AppVersion'] = this.appVersion; + data['ForDemo'] = this.forDemo; + return data; } } diff --git a/lib/core/service/ancillary_orders_service.dart b/lib/core/service/ancillary_orders_service.dart index 8d9d3b31..27ff2694 100644 --- a/lib/core/service/ancillary_orders_service.dart +++ b/lib/core/service/ancillary_orders_service.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/models/anicllary-orders/ancillary_order_list_model.dart'; import 'package:diplomaticquarterapp/models/anicllary-orders/ancillary_order_proc_model.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; class AncillaryOrdersService extends BaseService { List _ancillaryLists = List(); @@ -38,7 +39,7 @@ class AncillaryOrdersService extends BaseService { hasError = false; await baseAppClient.post(GET_ANCILLARY_ORDERS_DETAILS, onSuccess: (dynamic response, int statusCode) { - _ancillaryProcLists = []; + _ancillaryProcLists = []; response['AncillaryOrderProcList'].forEach((item) { ancillaryProcLists.add(AncillaryOrdersListProcListModel.fromJson(item)); @@ -47,7 +48,7 @@ class AncillaryOrdersService extends BaseService { print("Test data"); print(response); }); - //Future.value(_ancillaryProcLists); + //Future.value(_ancillaryProcLists); }, onFailure: (String error, int statusCode) { hasError = true; super.error = error; diff --git a/lib/core/service/feedback/feedback_service.dart b/lib/core/service/feedback/feedback_service.dart index 51537ef7..bd5bfa42 100644 --- a/lib/core/service/feedback/feedback_service.dart +++ b/lib/core/service/feedback/feedback_service.dart @@ -19,29 +19,34 @@ class FeedbackService extends BaseService { String details, String cOCTypeName, String attachment, - AppoitmentAllHistoryResultList appointHistory}) async { + AppoitmentAllHistoryResultList appointHistory}) async { hasError = false; - var languageID = await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + var languageID = + await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); _requestInsertCOCItem.attachment = attachment; _requestInsertCOCItem.title = title; _requestInsertCOCItem.details = details; _requestInsertCOCItem.cOCTypeName = cOCTypeName; _requestInsertCOCItem.formTypeID = cOCTypeName; - _requestInsertCOCItem.mobileNo = "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber); + _requestInsertCOCItem.mobileNo = + "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber); _requestInsertCOCItem.isUserLoggedIn = true; _requestInsertCOCItem.projectID = user.projectID; _requestInsertCOCItem.patientName = user.firstName + " " + user.lastName; _requestInsertCOCItem.fileName = ""; _requestInsertCOCItem.appVersion = VERSION_ID; - _requestInsertCOCItem.uILanguage = languageID; //TODO Change it to be dynamic + _requestInsertCOCItem.uILanguage = + languageID; //TODO Change it to be dynamic _requestInsertCOCItem.browserInfo = Platform.localHostname; _requestInsertCOCItem.deviceInfo = Platform.localHostname; _requestInsertCOCItem.resolution = "400x847"; _requestInsertCOCItem.projectID = 0; _requestInsertCOCItem.identificationNo = int.parse(user.patientIdentificationNo); - + if (BASE_URL.contains('uat')) { + _requestInsertCOCItem.forDemo = true; + } final Map body = _requestInsertCOCItem.toJson(); if (appointHistory != null) { @@ -66,9 +71,13 @@ class FeedbackService extends BaseService { hasError = false; Map body = new Map(); body['IdentificationNo'] = user.patientIdentificationNo; - body['MobileNo'] = "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber); + body['MobileNo'] = + "966" + Utils.getPhoneNumberWithoutZero(user.mobileNumber); body['Searching_type'] = '1'; + if (BASE_URL.contains('uat')) { + body['ForDemo'] = true; + } await baseAppClient.post(GET_STATUS_FOR_COCO, onSuccess: (dynamic response, int statusCode) { cOCItemList = []; @@ -89,7 +98,8 @@ class FeedbackService extends BaseService { onSuccess: (dynamic response, int statusCode) { appointHistoryList = []; response['AppoimentAllHistoryResultList'].forEach((appoint) { - appointHistoryList.add(AppoitmentAllHistoryResultList.fromJson(appoint)); + appointHistoryList + .add(AppoitmentAllHistoryResultList.fromJson(appoint)); }); }, onFailure: (String error, int statusCode) { hasError = true; diff --git a/lib/core/service/medical/medical_service.dart b/lib/core/service/medical/medical_service.dart index f90280cf..a23519fa 100644 --- a/lib/core/service/medical/medical_service.dart +++ b/lib/core/service/medical/medical_service.dart @@ -3,15 +3,17 @@ import 'package:diplomaticquarterapp/core/model/er/PatientER.dart'; import 'package:diplomaticquarterapp/core/service/base_service.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:flutter/cupertino.dart'; +import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/models/DoctorScheduleResponse.dart'; class MedicalService extends BaseService { List appoitmentAllHistoryResultList = List(); - + List doctorScheduleResponse = List(); getAppointmentHistory({bool isActiveAppointment = false}) async { hasError = false; super.error = ""; Map body = Map(); - if(isActiveAppointment) { + if (isActiveAppointment) { body['IsActiveAppointment'] = true; body['isDentalAllowedBackend'] = false; } @@ -37,12 +39,30 @@ class MedicalService extends BaseService { body['RequesterMobileNo'] = user.mobileNumber; body['RequesterIsOutSA'] = user.outSA; await baseAppClient.post(GET_PATIENT_APPOINTMENT_HISTORY, - onSuccess: (response, statusCode) async { + onSuccess: (response, statusCode) async {}, + onFailure: (String error, int statusCode) { + hasError = true; + super.error = error; + }, body: body); + } + Future getSchedule(DoctorList doctorRequest) async { + Map request; + request = { + 'DoctorID': doctorRequest.doctorID, + 'ProjectID': doctorRequest.projectID, + 'ClinicID': doctorRequest.clinicID, + 'DoctorWorkingHoursDays': 7 + }; + dynamic localRes; + await baseAppClient.post(DOCTOR_SCHEDULE_URL, + onSuccess: (response, statusCode) async { + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); - }, onFailure: (String error, int statusCode) { - hasError = true; - super.error = error; - }, body: body); + localRes['List_DoctorWorkingHoursTable'].forEach((item) => + {doctorScheduleResponse.add(DoctorScheduleResponse.fromJson(item))}); } } diff --git a/lib/core/viewModels/medical/EyeViewModel.dart b/lib/core/viewModels/medical/EyeViewModel.dart index ab76b94f..3c10dc48 100644 --- a/lib/core/viewModels/medical/EyeViewModel.dart +++ b/lib/core/viewModels/medical/EyeViewModel.dart @@ -4,6 +4,7 @@ import 'package:diplomaticquarterapp/core/model/eye/AppointmentFilter.dart'; import 'package:diplomaticquarterapp/core/service/medical/EyeService.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; class EyeViewModel extends BaseViewModel { EyeService _eyeService = locator(); @@ -20,31 +21,35 @@ class EyeViewModel extends BaseViewModel { error = _eyeService.error; setState(ViewState.Error); } else { - _eyeService.appoimentAllHistoryResultList.forEach((element) { - List _appointmentFilter = appointmentFilter - .where( - (elementFilter) => - elementFilter.filterName == element.projectName, - ) - .toList(); - - if (_appointmentFilter.length != 0) { - appointmentFilter[appointmentFilter.indexOf(_appointmentFilter[0])] - .appointmentAllHistoryResultList - .add(element); - } else { - appointmentFilter.add(AppointmentFilter( - element, - element.projectName, - )); - } - }); + if (_eyeService.appoimentAllHistoryResultList.length == 0) { + new AppToast().backWithEmpty(); + } else { + _eyeService.appoimentAllHistoryResultList.forEach((element) { + List _appointmentFilter = appointmentFilter + .where( + (elementFilter) => + elementFilter.filterName == element.projectName, + ) + .toList(); + if (_appointmentFilter.length != 0) { + appointmentFilter[appointmentFilter.indexOf(_appointmentFilter[0])] + .appointmentAllHistoryResultList + .add(element); + } else { + appointmentFilter.add(AppointmentFilter( + element, + element.projectName, + )); + } + }); + } setState(ViewState.Idle); } } - sendGlassesPrescriptionEmail({int appointmentNo, String projectName, int projectID}) async { + sendGlassesPrescriptionEmail( + {int appointmentNo, String projectName, int projectID}) async { setState(ViewState.Busy); await _eyeService.sendGlassesPrescriptionEmail( appointmentNo: appointmentNo, @@ -58,7 +63,8 @@ class EyeViewModel extends BaseViewModel { } } - sendContactLensPrescriptionEmail({int appointmentNo, String projectName, int projectID}) async { + sendContactLensPrescriptionEmail( + {int appointmentNo, String projectName, int projectID}) async { setState(ViewState.Busy); await _eyeService.sendContactLensPrescriptionEmail( appointmentNo: appointmentNo, @@ -71,6 +77,4 @@ class EyeViewModel extends BaseViewModel { setState(ViewState.Idle); } } - - } diff --git a/lib/core/viewModels/medical/medical_view_model.dart b/lib/core/viewModels/medical/medical_view_model.dart index 52fd221a..b73e6a5f 100644 --- a/lib/core/viewModels/medical/medical_view_model.dart +++ b/lib/core/viewModels/medical/medical_view_model.dart @@ -4,17 +4,33 @@ import 'package:diplomaticquarterapp/core/service/medical/medical_service.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/locator.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; +import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/models/DoctorScheduleResponse.dart'; class MedicalViewModel extends BaseViewModel { MedicalService _medicalService = locator(); List get appoitmentAllHistoryResultList => _medicalService.appoitmentAllHistoryResultList; + List get getDoctorScheduleList => + _medicalService.doctorScheduleResponse; getAppointmentHistory() async { - if (authenticatedUserObject.isLogin) { + if (authenticatedUserObject.isLogin) { setState(ViewState.Busy); - await _medicalService.getAppointmentHistory(); + await _medicalService.getAppointmentHistory(); + if (_medicalService.hasError) { + error = _medicalService.error; + setState(ViewState.Error); + } else + setState(ViewState.Idle); + } + } + + getDoctorSchedule(DoctorList doctorRequest) async { + if (authenticatedUserObject.isLogin) { + setState(ViewState.Busy); + await _medicalService.getSchedule(doctorRequest); if (_medicalService.hasError) { error = _medicalService.error; setState(ViewState.Error); diff --git a/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart index 494bbe15..cb10f68c 100644 --- a/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart +++ b/lib/pages/AlHabibMedicalService/ancillary-orders/ancillaryOrdersDetails.dart @@ -33,7 +33,8 @@ class _AnicllaryOrdersState extends State with SingleTic @override Widget build(BuildContext context) { return BaseView( - onModelReady: (model) => model.getOrdersDetails(widget.appoNo, widget.orderNo, widget.projectID), + onModelReady: (model) => model.getOrdersDetails( + widget.appoNo, widget.orderNo, widget.projectID), builder: (_, model, widget) => AppScaffold( isShowAppBar: true, baseViewModel: model, @@ -154,7 +155,10 @@ class _AnicllaryOrdersState extends State with SingleTic // ), Texts(" : "), Texts( - DateUtil.getFormattedDate(DateUtil.convertStringToDate(model.ancillaryListsDetails[0].appointmentDate), "MMM dd,yyyy"), + DateUtil.getDayMonthYearDateFormatted( + DateUtil.convertStringToDate( + model.ancillaryListsDetails[0].appointmentDate), + ), ) ], ), @@ -223,25 +227,27 @@ class _AnicllaryOrdersState extends State with SingleTic Row( children: [], ), - Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Texts( - TranslationBase.of(context).price, - color: Colors.grey[500], - fontSize: 14, - ), - SizedBox(width: 15), - Texts( - TranslationBase.of(context).vat, - color: Colors.grey[500], - fontSize: 14, - ), - SizedBox(width: 15), - Texts( - TranslationBase.of(context).total, - color: Colors.grey[500], - fontSize: 14, - ), - ]), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Texts( + TranslationBase.of(context).price, + color: Colors.grey[500], + fontSize: 14, + ), + SizedBox(width: 15), + Texts( + TranslationBase.of(context).vat, + color: Colors.grey[500], + fontSize: 14, + ), + SizedBox(width: 15), + Texts( + TranslationBase.of(context).total, + color: Colors.grey[500], + fontSize: 14, + ), + ]), ], ), Divider( @@ -252,7 +258,9 @@ class _AnicllaryOrdersState extends State with SingleTic } Widget getAncillaryDetails(model) { - Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcDetailsList, (obj) => obj.procedureCategoryName); + Map newMap = groupBy( + model.ancillaryListsDetails[0].ancillaryOrderProcDetailsList, + (obj) => obj.procedureCategoryName); print(newMap); return Padding(padding: EdgeInsets.only(top: 10, bottom: 10), child: getHeaderDetails(newMap)); diff --git a/lib/pages/BookAppointment/DoctorProfile.dart b/lib/pages/BookAppointment/DoctorProfile.dart index 949f2c44..9c52adef 100644 --- a/lib/pages/BookAppointment/DoctorProfile.dart +++ b/lib/pages/BookAppointment/DoctorProfile.dart @@ -103,14 +103,26 @@ class _DoctorProfileState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - margin: EdgeInsets.only(top: 20.0), - alignment: Alignment.center, - child: ClipRRect( - borderRadius: BorderRadius.circular(100.0), - child: Image.network(widget.doctor.doctorImageURL, - fit: BoxFit.fill, height: 120.0, width: 120.0), - ), + Row( + children: [ + Container( + margin: EdgeInsets.only(top: 20.0), + alignment: Alignment.center, + child: ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.network(widget.doctor.doctorImageURL, + fit: BoxFit.fill, height: 120.0, width: 120.0), + ), + ), + Container( + margin: EdgeInsets.only(top: 20.0), + alignment: Alignment.center, + child: ClipRRect( + borderRadius: BorderRadius.circular(100.0), + child: Image.asset('assets/images/drSchedul.png'), + ), + ) + ], ), Container( margin: EdgeInsets.only(top: 10.0), @@ -178,14 +190,11 @@ class _DoctorProfileState extends State )), ), ), - - if(widget.docProfileList.isDoctorHasPrePostImages == true) + if (widget.docProfileList.isDoctorHasPrePostImages == true) Container( height: 50, alignment: Alignment.center, - child: prePostImagesButton(context) - ), - + child: prePostImagesButton(context)), Container( child: Divider( color: Colors.grey[500], @@ -234,7 +243,7 @@ class _DoctorProfileState extends State ); } - Widget prePostImagesButton(BuildContext context){ + Widget prePostImagesButton(BuildContext context) { return Padding( padding: const EdgeInsets.all(10), child: MaterialButton( @@ -242,7 +251,10 @@ class _DoctorProfileState extends State color: Theme.of(context).appBarTheme.color, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), onPressed: () => openDoctorPrePostImages(), - child: Text(TranslationBase.of(context).beforeAfterImages, style: TextStyle(color: Colors.white, fontSize: 15, letterSpacing: 1),), + child: Text( + TranslationBase.of(context).beforeAfterImages, + style: TextStyle(color: Colors.white, fontSize: 15, letterSpacing: 1), + ), ), ); } @@ -287,23 +299,24 @@ class _DoctorProfileState extends State }); } - openDoctorPrePostImages(){ + openDoctorPrePostImages() { GifLoaderDialogUtils.showMyDialog(context); - DoctorsListService().getDoctorPrePostImages(widget.docProfileList, context).then((images) { + DoctorsListService() + .getDoctorPrePostImages(widget.docProfileList, context) + .then((images) { GifLoaderDialogUtils.hideDialog(context); showDialog( - context: context, barrierDismissible: true, - builder: (ctx){ + context: context, + barrierDismissible: true, + builder: (ctx) { return DoctorPostPreImagesContent(doctorPrePostImages: images); - } - ); + }); // Navigator.push( // context, // FadePage( // page: DoctorPostPreImagesPage(doctorPrePostImages: images,) // ) // ); - }).catchError((err) { GifLoaderDialogUtils.hideDialog(context); AppToast.showErrorToast(message: err); @@ -612,6 +625,4 @@ class _DoctorProfileState extends State selectedDate: DocAvailableAppointments.selectedDate, selectedTime: DocAvailableAppointments.selectedTime))); } - - } diff --git a/lib/pages/BookAppointment/components/LiveCareBookAppointment.dart b/lib/pages/BookAppointment/components/LiveCareBookAppointment.dart index 4f64aa58..ee3e7b4a 100644 --- a/lib/pages/BookAppointment/components/LiveCareBookAppointment.dart +++ b/lib/pages/BookAppointment/components/LiveCareBookAppointment.dart @@ -1,14 +1,26 @@ +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class LiveCareBookAppointment extends StatefulWidget { + final dynamic clinicName; + final dynamic liveCareClinicID; + final dynamic liveCareServiceID; + + LiveCareBookAppointment( + {this.clinicName, this.liveCareClinicID, this.liveCareServiceID}); + @override _LiveCareBookAppointmentState createState() => _LiveCareBookAppointmentState(); } class _LiveCareBookAppointmentState extends State { + AppSharedPreferences sharedPref = AppSharedPreferences(); + @override Widget build(BuildContext context) { return AppScaffold( @@ -34,7 +46,7 @@ class _LiveCareBookAppointmentState extends State { margin: EdgeInsets.all(15.0), padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0), decoration: BoxDecoration( - color: Colors.green, + color: Color(0xff20bc44), borderRadius: BorderRadius.all(Radius.circular(8.0))), child: Text(TranslationBase.of(context).livecareModalTop, textAlign: TextAlign.center, @@ -44,6 +56,297 @@ class _LiveCareBookAppointmentState extends State { fontWeight: FontWeight.w600, letterSpacing: 0.5)), ), + Container( + margin: EdgeInsets.all(15.0), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/liveCare_mobile_care.svg", + width: 150.0), + ), + Container( + margin: EdgeInsets.only(left: 10.0, right: 10.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(bottom: 7.0), + child: Text( + TranslationBase.of(context).whyLivecare, + style: TextStyle( + fontSize: 20.0, + fontWeight: FontWeight.w600, + letterSpacing: 1.0, + color: Colors.black)), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/ionic-ios-checkmark-circle.svg"), + ), + Container( + width: + MediaQuery.of(context).size.width * 0.4, + margin: EdgeInsets.only( + left: 5.0, right: 5.0, bottom: 10.0), + child: Text( + TranslationBase.of(context) + .livecarePoint1, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/ionic-ios-checkmark-circle.svg"), + ), + Container( + width: + MediaQuery.of(context).size.width * 0.4, + margin: EdgeInsets.only( + left: 5.0, right: 5.0, bottom: 10.0), + child: Text( + TranslationBase.of(context) + .livecarePoint5, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/ionic-ios-checkmark-circle.svg"), + ), + Container( + width: + MediaQuery.of(context).size.width * 0.4, + margin: EdgeInsets.only( + left: 5.0, right: 5.0, bottom: 10.0), + child: Text( + TranslationBase.of(context) + .livecarePoint2, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/ionic-ios-checkmark-circle.svg"), + ), + Container( + width: + MediaQuery.of(context).size.width * 0.4, + margin: EdgeInsets.only( + left: 5.0, right: 5.0, bottom: 10.0), + child: Text( + TranslationBase.of(context) + .livecarePoint3, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + ], + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: SvgPicture.asset( + "assets/images/new-design/ionic-ios-checkmark-circle.svg"), + ), + Container( + width: + MediaQuery.of(context).size.width * 0.4, + margin: + EdgeInsets.only(left: 5.0, right: 5.0), + child: Text( + TranslationBase.of(context) + .livecarePoint4, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + ], + ), + ], + ), + ) + ], + ), + ), + Container( + child: Text(TranslationBase.of(context).livecareSummary, + overflow: TextOverflow.clip, + style: TextStyle( + fontSize: 12.0, + letterSpacing: 0.5, + color: Colors.black)), + ), + Container( + child: InkWell( + onTap: () { + sharedPref.setString( + LIVECARE_CLINIC_DATA, + widget.clinicName + + "-" + + widget.liveCareClinicID + + "-" + + widget.liveCareServiceID); + Navigator.pop(context, "livecare"); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.grey[700], + borderRadius: + BorderRadius.all(Radius.circular(10.0))), + margin: EdgeInsets.only(top: 10.0), + padding: EdgeInsets.all(10.0), + child: Row( + children: [ + Container( + margin: EdgeInsets.only(left: 10.0, right: 10.0), + child: SvgPicture.asset( + "assets/images/new-design/liveCare_logo_icon_white.svg", + width: 70), + ), + Container( + width: MediaQuery.of(context).size.width * 0.58, + margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.fromLTRB( + 10.0, 0.0, 10.0, 0.0), + child: Text( + TranslationBase.of(context) + .bookImmediateLivecare, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w500, + fontSize: 16.0, + letterSpacing: 0.7, + color: Colors.white)), + ), + Container( + margin: + EdgeInsets.only(top: 5.0, left: 10.0), + child: Text( + TranslationBase.of(context) + .bookVideoLivecare2, + textAlign: TextAlign.start, + style: TextStyle( + fontSize: 13.0, + color: Colors.white)), + ) + ], + ), + ), + ], + )), + ), + ), + Container( + child: InkWell( + onTap: () { + Navigator.pop(context, "schedule"); + }, + child: Container( + decoration: BoxDecoration( + color: Colors.grey[700], + borderRadius: + BorderRadius.all(Radius.circular(10.0))), + margin: EdgeInsets.only(top: 10.0), + padding: EdgeInsets.all(10.0), + child: Row( + children: [ + Container( + margin: EdgeInsets.only(left: 10.0, right: 10.0), + child: Image.asset( + "assets/images/new-design/doctor_white.png", + width: 50), + ), + Container( + width: MediaQuery.of(context).size.width * 0.58, + margin: EdgeInsets.fromLTRB(0.0, 5.0, 0.0, 0.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.fromLTRB( + 28.0, 0.0, 28.0, 0.0), + child: Text( + TranslationBase.of(context).noThankyou, + overflow: TextOverflow.clip, + style: TextStyle( + fontWeight: FontWeight.w500, + fontSize: 16.0, + letterSpacing: 0.7, + color: Colors.white)), + ), + Container( + margin: EdgeInsets.only( + top: 5.0, left: 28.0, right: 28.0), + child: Text( + TranslationBase.of(context).visitClinic, + textAlign: TextAlign.start, + style: TextStyle( + fontSize: 13.0, + color: Colors.white)), + ) + ], + ), + ), + ], + )), + ), + ), + Container( + margin: EdgeInsets.only(top: 10.0), + child: InkWell( + onTap: () { + Navigator.pop(context, "false"); + }, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text(TranslationBase.of(context).cancel, + style: TextStyle( + fontSize: 16.0, + letterSpacing: 0.5, + color: Color(0xffc5272d))), + ], + ), + ), + ), ], ), ), diff --git a/lib/pages/BookAppointment/components/SearchByClinic.dart b/lib/pages/BookAppointment/components/SearchByClinic.dart index 1b6172b0..cf562ece 100644 --- a/lib/pages/BookAppointment/components/SearchByClinic.dart +++ b/lib/pages/BookAppointment/components/SearchByClinic.dart @@ -7,6 +7,7 @@ import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.da import 'package:diplomaticquarterapp/models/Clinics/ClinicListResponse.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/DentalComplaints.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart'; +import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/clinic_services/get_clinic_service.dart'; @@ -243,92 +244,105 @@ class _SearchByClinicState extends State { // TODO Mosa_REMARk to come back later getDoctorsList(BuildContext context) { - GifLoaderDialogUtils.showMyDialog(context); SearchInfo searchInfo = new SearchInfo(); if (dropdownValue == "17") { searchInfo.ProjectID = int.parse(projectDropdownValue); searchInfo.ClinicID = int.parse(dropdownValue); searchInfo.date = DateTime.now(); - GifLoaderDialogUtils.hideDialog(context); navigateToDentalComplaints(context, searchInfo); } else if (dropdownValue.split("-")[1] == "true" - // && - // authProvider.isLogin && + // && authProvider.isLogin && // authUser.patientType == 1 - ) { + ) { Navigator.push( context, FadePage( - page: LiveCareBookAppointment(), + page: LiveCareBookAppointment( + clinicName: "Family Medicine", + liveCareClinicID: dropdownValue.split("-")[2], + liveCareServiceID: dropdownValue.split("-")[3]), ), - ); + ).then((value) { + print(value); + if (value == "false") dropdownValue = ""; + if (value == "livecare") { + Navigator.push(context, FadePage(page: LiveCareHome())); + } + if (value == "schedule") { + callDoctorsSearchAPI(); + } + }); } else { - List doctorsList = []; - List arr = []; - List arrDistance = []; - List result; - int numAll; - List _patientDoctorAppointmentListHospital = - List(); + callDoctorsSearchAPI(); + } + } - DoctorsListService service = new DoctorsListService(); - service - .getDoctorsList( - int.parse(dropdownValue.split("-")[0]), - projectDropdownValue != "" ? int.parse(projectDropdownValue) : 0, - nearestAppo, - context) - .then((res) { - GifLoaderDialogUtils.hideDialog(context); - if (res['MessageStatus'] == 1) { - setState(() { - if (res['DoctorList'].length != 0) { - // print(res['DoctorList']); - doctorsList.clear(); - res['DoctorList'].forEach((v) { - doctorsList.add(new DoctorList.fromJson(v)); - }); - doctorsList.forEach((element) { - List doctorByHospital = - _patientDoctorAppointmentListHospital - .where( - (elementClinic) => - elementClinic.filterName == element.projectName, - ) - .toList(); + callDoctorsSearchAPI() { + GifLoaderDialogUtils.showMyDialog(context); + List doctorsList = []; + List arr = []; + List arrDistance = []; + List result; + int numAll; + List _patientDoctorAppointmentListHospital = + List(); - if (doctorByHospital.length != 0) { - _patientDoctorAppointmentListHospital[ - _patientDoctorAppointmentListHospital - .indexOf(doctorByHospital[0])] - .patientDoctorAppointmentList - .add(element); - } else { - _patientDoctorAppointmentListHospital.add( - PatientDoctorAppointmentList( - filterName: element.projectName, - distanceInKMs: - element.projectDistanceInKiloMeters.toString(), - patientDoctorAppointment: element)); - } - }); - } else {} - }); + DoctorsListService service = new DoctorsListService(); + service + .getDoctorsList( + int.parse(dropdownValue.split("-")[0]), + projectDropdownValue != "" ? int.parse(projectDropdownValue) : 0, + nearestAppo, + context) + .then((res) { + GifLoaderDialogUtils.hideDialog(context); + if (res['MessageStatus'] == 1) { + setState(() { + if (res['DoctorList'].length != 0) { + doctorsList.clear(); + res['DoctorList'].forEach((v) { + doctorsList.add(new DoctorList.fromJson(v)); + }); + doctorsList.forEach((element) { + List doctorByHospital = + _patientDoctorAppointmentListHospital + .where( + (elementClinic) => + elementClinic.filterName == element.projectName, + ) + .toList(); - result = LinkedHashSet.from(arr).toList(); - numAll = result.length; - navigateToSearchResults( - context, doctorsList, _patientDoctorAppointmentListHospital); - } else { - AppToast.showErrorToast(message: res['ErrorEndUserMessage']); - } - }).catchError((err) { - GifLoaderDialogUtils.hideDialog(context); - print(err); - AppToast.showErrorToast(message: err); - }); - } + if (doctorByHospital.length != 0) { + _patientDoctorAppointmentListHospital[ + _patientDoctorAppointmentListHospital + .indexOf(doctorByHospital[0])] + .patientDoctorAppointmentList + .add(element); + } else { + _patientDoctorAppointmentListHospital.add( + PatientDoctorAppointmentList( + filterName: element.projectName, + distanceInKMs: + element.projectDistanceInKiloMeters.toString(), + patientDoctorAppointment: element)); + } + }); + } else {} + }); + + result = LinkedHashSet.from(arr).toList(); + numAll = result.length; + navigateToSearchResults( + context, doctorsList, _patientDoctorAppointmentListHospital); + } else { + AppToast.showErrorToast(message: res['ErrorEndUserMessage']); + } + }).catchError((err) { + GifLoaderDialogUtils.hideDialog(context); + print(err); + AppToast.showErrorToast(message: err); + }); } Future navigateToDentalComplaints( diff --git a/lib/pages/MyAppointments/AppointmentDetails.dart b/lib/pages/MyAppointments/AppointmentDetails.dart index 1eef56c5..625d8a1a 100644 --- a/lib/pages/MyAppointments/AppointmentDetails.dart +++ b/lib/pages/MyAppointments/AppointmentDetails.dart @@ -13,6 +13,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/new_design/doctor_header.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/SchedulePage.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; @@ -493,4 +494,8 @@ class _AppointmentDetailsState extends State with SingleTick docObj.doctorImageURL = widget.appo.doctorImageURL; return docObj; } + + void openSchedule() { + Navigator.push(context, FadePage(page: SchedulePage(getDoctorObject()))); + } } diff --git a/lib/pages/MyAppointments/SchedulePage.dart b/lib/pages/MyAppointments/SchedulePage.dart new file mode 100644 index 00000000..e83e8408 --- /dev/null +++ b/lib/pages/MyAppointments/SchedulePage.dart @@ -0,0 +1,163 @@ +import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; + +import 'package:diplomaticquarterapp/pages/MyAppointments/models/DoctorScheduleResponse.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/indicator.dart'; +import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/core/viewModels/medical/medical_view_model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; + +class SchedulePage extends StatefulWidget { + final DoctorList doctorList; + + SchedulePage(this.doctorList); + @override + _SchedulePageState createState() => _SchedulePageState(); +} + +class _SchedulePageState extends State { + DoctorsListService service; + PageController _pageController = PageController(); + double currentPage = 0; + int selectedindex = 0; + bool isLoading = true; + List doctorScheduleResponse = []; + final List introWidgetsList = [ + Text('Hello'), + Text('Hi'), + Text('hey') + ]; + + @override + void initState() { + //getSchedule(widget.doctorList, context); + // _pageController.addListener(() { + // setState(() { + // currentPage = _pageController.page; + // }); + // }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return BaseView( + onModelReady: (model) => model.getDoctorSchedule(widget.doctorList), + builder: (_, model, widget) => AppScaffold( + appBarTitle: TranslationBase.of(context).schedule, + isShowAppBar: true, + baseViewModel: model, + body: SizedBox( + height: MediaQuery.of(context).size.height, + child: Stack( + children: [ + Container( + child: PageView.builder( + controller: _pageController, + itemCount: 3, + onPageChanged: (index) { + setState(() { + this.currentPage = index.toDouble(); + }); + }, + itemBuilder: (context, index) { + return Container( + child: ListView.builder( + itemCount: model.getDoctorScheduleList.length, + itemBuilder: (context, index) => ClipRRect( + borderRadius: const BorderRadius.all( + Radius.circular(20.0)), + child: Container( + padding: EdgeInsets.only( + left: 10, + right: 10, + top: 20, + bottom: 20), + margin: EdgeInsets.only( + left: 20, + right: 20, + top: 7, + bottom: 7), + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.green, + offset: Offset(-10, 0)), + ], + borderRadius: + const BorderRadius.all( + Radius.circular(10.0)), + color: Colors.white), + child: Row( + children: [ + Expanded( + child: Row(children: [ + Column( + children: [ + Texts( + model + .getDoctorScheduleList[ + index] + .dayName, + color: + HexColor('#0bb690'), + ), + Texts( + DateUtil + .getDayMonthYearDateFormatted( + DateUtil + .convertStringToDate( + model + .getDoctorScheduleList[ + index] + .date, + ), + ), + color: + HexColor('#0bb690'), + ) + ], + ) + ]), + ), + Expanded( + child: Texts( + model + .getDoctorScheduleList[ + index] + .workingHours, + color: HexColor('#0bb690'), + ), + ) + ], + ))))); + }, + )), + PageViewIndicator( + isActive: true, + currentPage: this.currentPage, + length: introWidgetsList.length, + ) + ], + )))); + } + + //getSchedule(DoctorList doctor, BuildContext context) { + //GifLoaderDialogUtils.showMyDialog(context); + //service = new DoctorsListService(); + // service.getSchedule(doctor).then((value) { + // doctorScheduleResponse.clear(); + // setState(() { + // value['List_DoctorWorkingHoursTable'].forEach((item) => { + // doctorScheduleResponse.add(DoctorScheduleResponse.fromJson(item)) + // }); + // GifLoaderDialogUtils.hideDialog(context); + // }); + // }); + // } +} diff --git a/lib/pages/MyAppointments/models/DoctorScheduleResponse.dart b/lib/pages/MyAppointments/models/DoctorScheduleResponse.dart new file mode 100644 index 00000000..2131d5da --- /dev/null +++ b/lib/pages/MyAppointments/models/DoctorScheduleResponse.dart @@ -0,0 +1,32 @@ +class DoctorScheduleResponse { + String clinicName; + String date; + String dayName; + String projectName; + String workingHours; + + DoctorScheduleResponse( + {this.clinicName, + this.date, + this.dayName, + this.projectName, + this.workingHours}); + + DoctorScheduleResponse.fromJson(Map json) { + clinicName = json['ClinicName']; + date = json['Date']; + dayName = json['DayName']; + projectName = json['ProjectName']; + workingHours = json['WorkingHours']; + } + + Map toJson() { + final Map data = new Map(); + data['ClinicName'] = this.clinicName; + data['Date'] = this.date; + data['DayName'] = this.dayName; + data['ProjectName'] = this.projectName; + data['WorkingHours'] = this.workingHours; + return data; + } +} diff --git a/lib/pages/MyAppointments/widgets/custom_radio.dart b/lib/pages/MyAppointments/widgets/custom_radio.dart index b21e34ec..b3c16afb 100644 --- a/lib/pages/MyAppointments/widgets/custom_radio.dart +++ b/lib/pages/MyAppointments/widgets/custom_radio.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/pages/MyAppointments/models/AskDocRequestTypeModel.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/askDocDialog.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog_prescription.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; @@ -25,18 +26,13 @@ class CustomRadioState extends State { WidgetsBinding.instance.addPostFrameCallback((_) { if (widget.requestData != null) { widget.requestData.forEach((element) { - sampleData.add(new RadioModel( - false, element.description, element.parameterCode)); + sampleData.add(new RadioModel(false, element.description, element.parameterCode)); }); } else { - sampleData.add(new RadioModel( - false, TranslationBase.of(context).appoReminder30, 30)); - sampleData.add(new RadioModel( - false, TranslationBase.of(context).appoReminder60, 60)); - sampleData.add(new RadioModel( - false, TranslationBase.of(context).appoReminder90, 90)); - sampleData.add(new RadioModel( - false, TranslationBase.of(context).appoReminder120, 120)); + sampleData.add(new RadioModel(false, TranslationBase.of(context).appoReminder30, 30)); + sampleData.add(new RadioModel(false, TranslationBase.of(context).appoReminder60, 60)); + sampleData.add(new RadioModel(false, TranslationBase.of(context).appoReminder90, 90)); + sampleData.add(new RadioModel(false, TranslationBase.of(context).appoReminder120, 120)); } }); } @@ -57,12 +53,11 @@ class CustomRadioState extends State { sampleData.forEach((element) => element.isSelected = false); sampleData[index].isSelected = true; if (widget.requestData != null) { - AskDocDialog.selectedParameterCode = - sampleData[index].duration; + AskDocDialog.selectedParameterCode = sampleData[index].duration; print(AskDocDialog.selectedParameterCode); } else { - ReminderDialog.selectedDuration = - sampleData[index].duration * 60000; + ReminderDialog.selectedDuration = sampleData[index].duration * 60000; + PrescriptionReminderDialog.selectedDuration = sampleData[index].duration * 60000; } }); }, @@ -91,14 +86,11 @@ class RadioItem extends StatelessWidget { height: 30.0, width: 30.0, child: new Center( - child: Image.asset("assets/images/new-design/check_icon.png", - width: 15.0, height: 15.0), + child: Image.asset("assets/images/new-design/check_icon.png", width: 15.0, height: 15.0), ), decoration: new BoxDecoration( color: _item.isSelected ? Colors.blue : Colors.transparent, - border: new Border.all( - width: 1.0, - color: _item.isSelected ? Colors.blue : Colors.grey), + border: new Border.all(width: 1.0, color: _item.isSelected ? Colors.blue : Colors.grey), borderRadius: const BorderRadius.all(const Radius.circular(50.0)), ), ), diff --git a/lib/pages/MyAppointments/widgets/indicator.dart b/lib/pages/MyAppointments/widgets/indicator.dart new file mode 100644 index 00000000..a19993cf --- /dev/null +++ b/lib/pages/MyAppointments/widgets/indicator.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; + +class PageViewIndicator extends StatelessWidget { + final bool isActive; + final int length; + final double currentPage; + PageViewIndicator({ + @required this.isActive, + @required this.length, + @required this.currentPage, + }); + + @override + Widget build(BuildContext context) { + return _indicator(this.isActive); + } + + Widget _indicator(bool isActive) { + return Positioned( + bottom: 10, + left: 0, + right: 0, + child: Container( + margin: EdgeInsets.only(bottom: 35), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + for (int i = 0; i < length; i++) + if (i == currentPage) ...[circleBar(true)] else circleBar(false), + ], + ), + ), + ); + } + + Widget circleBar(bool isActive) { + return AnimatedContainer( + duration: Duration(milliseconds: 150), + margin: EdgeInsets.symmetric(horizontal: 8), + height: isActive ? 12 : 8, + width: isActive ? 12 : 8, + decoration: BoxDecoration( + color: isActive ? Colors.red : Colors.grey, + borderRadius: BorderRadius.all(Radius.circular(12))), + ); + } +} diff --git a/lib/pages/MyAppointments/widgets/reminder_dialog.dart b/lib/pages/MyAppointments/widgets/reminder_dialog.dart index 0db8cda4..bc44770e 100644 --- a/lib/pages/MyAppointments/widgets/reminder_dialog.dart +++ b/lib/pages/MyAppointments/widgets/reminder_dialog.dart @@ -1,5 +1,6 @@ import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/custom_radio.dart'; +import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; @@ -16,7 +17,13 @@ class ReminderDialog extends StatefulWidget { final String endDate; final String location; - ReminderDialog({@required this.eventId, @required this.title, @required this.description, @required this.startDate, @required this.endDate, @required this.location}); + ReminderDialog( + {@required this.eventId, + @required this.title, + @required this.description, + @required this.startDate, + @required this.endDate, + @required this.location}); @override _ReminderDialogState createState() => _ReminderDialogState(); @@ -29,65 +36,54 @@ class _ReminderDialogState extends State { Widget build(BuildContext context) { return Container( child: Dialog( - shape: - RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), child: Container( // height: MediaQuery.of(context).size.height * 0.57, width: 450.0, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Container( - margin: EdgeInsets.all(20.0), - child: Text(TranslationBase.of(context).setReminder, - style: TextStyle( - fontSize: 20.0, - fontWeight: FontWeight.bold)), - ), - Container( - transform: Matrix4.translationValues(0.0, -30.0, 0.0), - child: CustomRadio(), - ), - Container( - width: MediaQuery.of(context).size.width, - height: 40.0, - margin: EdgeInsets.only(left: 30.0, top: 0.0, right: 30.0), - child: RaisedButton( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - side: BorderSide(color: Colors.blue)), - color: Colors.blue, - onPressed: () { - print(ReminderDialog.selectedDuration); - createCalendarEvent(); - }, - child: Text(TranslationBase.of(context).confirm, - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold)), - ), - ), - Container( - width: MediaQuery.of(context).size.width, - margin: EdgeInsets.only(left: 100.0, top: 20.0, right: 100.0, bottom: 20.0), - child: OutlineButton( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0)), - color: Colors.red, - borderSide: BorderSide(color: Colors.red), - highlightColor: Colors.red, - highlightedBorderColor: Colors.red, - onPressed: () { - Navigator.of(context).pop(); - }, - child: Text(TranslationBase.of(context).cancel_nocaps, - style: TextStyle( - color: Colors.red, - fontWeight: FontWeight.bold)), - ), - ), - ]), + child: + Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ + Container( + margin: EdgeInsets.all(20.0), + child: Text(TranslationBase.of(context).setReminder, + style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), + ), + Container( + transform: Matrix4.translationValues(0.0, -30.0, 0.0), + child: CustomRadio(), + ), + Container( + width: MediaQuery.of(context).size.width, + height: 40.0, + margin: EdgeInsets.only(left: 30.0, top: 0.0, right: 30.0), + child: RaisedButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), side: BorderSide(color: Colors.blue)), + color: Colors.blue, + onPressed: () { + print(ReminderDialog.selectedDuration); + createCalendarEvent(); + }, + child: Text(TranslationBase.of(context).confirm, + style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + ), + ), + Container( + width: MediaQuery.of(context).size.width, + margin: EdgeInsets.only(left: 100.0, top: 20.0, right: 100.0, bottom: 20.0), + child: OutlineButton( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)), + color: Colors.red, + borderSide: BorderSide(color: Colors.red), + highlightColor: Colors.red, + highlightedBorderColor: Colors.red, + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text(TranslationBase.of(context).cancel_nocaps, + style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold)), + ), + ), + ]), ), ), ); @@ -107,17 +103,14 @@ class _ReminderDialogState extends State { title: widget.title, description: widget.description, startDate: DateUtil.convertStringToDate(widget.startDate) - .subtract( - new Duration(microseconds: ReminderDialog.selectedDuration)), + .subtract(new Duration(microseconds: ReminderDialog.selectedDuration)), endDate: DateUtil.convertStringToDate(widget.endDate), location: widget.location, duration: new Duration(minutes: 15).inMinutes, isAllDay: false, hasAlarm: true); - _myPlugin - .createEvent(calendarId: "207749556", event: calendarEvent) - .then((value) { + _myPlugin.createEvent(calendarId: "207749556", event: calendarEvent).then((value) { print("Cal event"); print(value); if (int.parse(value) == int.parse(widget.eventId)) { diff --git a/lib/pages/MyAppointments/widgets/reminder_dialog_prescription.dart b/lib/pages/MyAppointments/widgets/reminder_dialog_prescription.dart new file mode 100644 index 00000000..db21d662 --- /dev/null +++ b/lib/pages/MyAppointments/widgets/reminder_dialog_prescription.dart @@ -0,0 +1,127 @@ +import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/custom_radio.dart'; +import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; +import 'package:diplomaticquarterapp/uitl/app_toast.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:flutter/material.dart'; +import 'package:manage_calendar_events/manage_calendar_events.dart'; + +class PrescriptionReminderDialog extends StatefulWidget { + static var selectedDuration; + + final String eventId; + final String title; + final String description; + final DateTime startDate; + final DateTime endDate; + final String location; + final int days; + + List _scheduleList = List(); + + PrescriptionReminderDialog({ + @required this.eventId, + @required this.title, + @required this.description, + @required this.startDate, + @required this.endDate, + @required this.location, + @required this.days, + }); + + @override + _ReminderDialogState createState() => _ReminderDialogState(); +} + +class _ReminderDialogState extends State { + final CalendarPlugin _myPlugin = CalendarPlugin(); + + @override + Widget build(BuildContext context) { + return Container( + child: Dialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), + child: Container( + // height: MediaQuery.of(context).size.height * 0.57, + width: 450.0, + child: + Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ + Container( + margin: EdgeInsets.all(20.0), + child: Text(TranslationBase.of(context).setReminder, + style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold)), + ), + Container( + transform: Matrix4.translationValues(0.0, -30.0, 0.0), + child: CustomRadio(), + ), + Container( + width: MediaQuery.of(context).size.width, + height: 40.0, + margin: EdgeInsets.only(left: 30.0, top: 0.0, right: 30.0), + child: RaisedButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), side: BorderSide(color: Colors.blue)), + color: Colors.blue, + onPressed: () { + createOrUpdateEvents(); + }, + child: Text(TranslationBase.of(context).confirm, + style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), + ), + ), + Container( + width: MediaQuery.of(context).size.width, + margin: EdgeInsets.only(left: 100.0, top: 20.0, right: 100.0, bottom: 20.0), + child: OutlineButton( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)), + color: Colors.red, + borderSide: BorderSide(color: Colors.red), + highlightColor: Colors.red, + highlightedBorderColor: Colors.red, + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text(TranslationBase.of(context).cancel_nocaps, + style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold)), + ), + ), + ]), + ), + ), + ); + } + + createOrUpdateEvents() async { + Navigator.pop(context); + + for (int count = 0; count < widget.days; count++) { + widget._scheduleList.add(DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)); + } + + List scheduleDateTime = calculateDaysInterval( + widget.startDate.subtract(new Duration(microseconds: PrescriptionReminderDialog.selectedDuration)), + widget.endDate); + + CalendarUtils calendarUtils = await CalendarUtils.getInstance(); + + calendarUtils.createOrUpdateEvents( + scheduleList: widget._scheduleList, + description: widget.description, + title: widget.title, + scheduleDateTime: scheduleDateTime); + + AppToast.showSuccessToast(message: TranslationBase.of(context).reminderSuccess); + } + + List calculateDaysInterval(DateTime startDate, DateTime endDate) { + List days = []; + for (int i = 0; i <= endDate.difference(startDate).inDays; i++) { + widget._scheduleList.forEach((element) { + days.add(startDate.add(Duration(days: i, hours: element.hour, minutes: element.minute))); + }); + } + return days; + } +} diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index dc28a50a..c84d5422 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -223,8 +223,14 @@ class _LandingPageState extends State with WidgetsBindingObserver { pageController = PageController(keepPage: true); _firebaseMessaging.setAutoInitEnabled(true); - locationUtils = new LocationUtils(isShowConfirmDialog: false, context: context); - WidgetsBinding.instance.addPostFrameCallback((_) => locationUtils.getCurrentLocation()); + locationUtils = + new LocationUtils(isShowConfirmDialog: false, context: context); + WidgetsBinding.instance.addPostFrameCallback((_) { + locationUtils.getCurrentLocation(); + if (projectViewModel.isLogin) { + familyFileProvider.getSharedRecordByStatus(); + } + }); // HMG (Guest/Internet) Wifi Access [Zohaib Kambrani] HMGNetworkConnectivity(context, () { GifLoaderDialogUtils.showMyDialog(context); @@ -236,7 +242,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { } requestPermissions().then((results) { - registerGeofences(); + // registerGeofences(); if (results[Permission.notification].isGranted) _firebaseMessaging.getToken().then((String token) { @@ -497,8 +503,6 @@ class _LandingPageState extends State with WidgetsBindingObserver { }) } }); - - // familyFileProvider.getSharedRecordByStatus(); } } } @@ -507,6 +511,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { Widget build(BuildContext context) { projectViewModel = Provider.of(context); model = Provider.of(context); + return Scaffold( appBar: PreferredSize( preferredSize: Size.fromHeight(currentTab == 0 ? 45 : 0.0), diff --git a/lib/pages/livecare/widgets/clinic_list.dart b/lib/pages/livecare/widgets/clinic_list.dart index 0e8c64f1..0b4150aa 100644 --- a/lib/pages/livecare/widgets/clinic_list.dart +++ b/lib/pages/livecare/widgets/clinic_list.dart @@ -57,6 +57,8 @@ class _clinic_listState extends State { bool isLiveCareTypeSelected = false; + String liveCareClinicIDs; + @override void initState() { liveCareClinicsListResponse = new LiveCareClinicsListResponse(); @@ -64,7 +66,9 @@ class _clinic_listState extends State { new LiveCareScheduleClinicsListResponse(); WidgetsBinding.instance.addPostFrameCallback((_) { - if (!isLiveCareTypeSelected) openLiveCareSelectionDialog(); + if (!isLiveCareTypeSelected) { + openLiveCareSelectionDialog(); + } }); getLanguageID(); @@ -420,33 +424,43 @@ class _clinic_listState extends State { }); } - openLiveCareSelectionDialog() { - Navigator.of(context) - .push(new MaterialPageRoute( - builder: (BuildContext context) { - return LiveCareTypeSelect(); - }, - fullscreenDialog: true)) - .then((value) { - if (value == null) { - Navigator.pop(context); - } else { - print(value); - isLiveCareTypeSelected = true; - if (value == "immediate") { - setState(() { - currentSelectedLiveCareType = "immediate"; - }); - getLiveCareClinicsList(); - } - if (value == "schedule") { - setState(() { - currentSelectedLiveCareType = "schedule"; - }); - getLiveCareScheduleClinicsList(); + openLiveCareSelectionDialog() async { + liveCareClinicIDs = await sharedPref.getString(LIVECARE_CLINIC_DATA); + if (liveCareClinicIDs != null) { + selectedClinicID = int.parse(liveCareClinicIDs.split("-")[2]); + setState(() { + currentSelectedLiveCareType = "immediate"; + }); + getLiveCareClinicsList(); + startLiveCare(); + } else { + Navigator.of(context) + .push(new MaterialPageRoute( + builder: (BuildContext context) { + return LiveCareTypeSelect(); + }, + fullscreenDialog: true)) + .then((value) { + if (value == null) { + Navigator.pop(context); + } else { + print(value); + isLiveCareTypeSelected = true; + if (value == "immediate") { + setState(() { + currentSelectedLiveCareType = "immediate"; + }); + getLiveCareClinicsList(); + } + if (value == "schedule") { + setState(() { + currentSelectedLiveCareType = "schedule"; + }); + getLiveCareScheduleClinicsList(); + } } - } - }); + }); + } } Widget getLiveCareScheduleClinicList() { @@ -555,12 +569,14 @@ class _clinic_listState extends State { itemBuilder: (context, index) { return InkWell( onTap: () { - if(liveCareClinicsListResponse - .patientERGetClinicsList[index].isOnline == 1) { + if (liveCareClinicsListResponse + .patientERGetClinicsList[index].isOnline == + 1) { updateSelectedIndex(liveCareClinicsListResponse .patientERGetClinicsList[index]); } else { - AppToast.showErrorToast(message: "Clinic is offline"); + AppToast.showErrorToast( + message: "Clinic is offline"); } }, child: ClinicCard( diff --git a/lib/pages/medical/medical_profile_page.dart b/lib/pages/medical/medical_profile_page.dart index 6d691805..3c426a3d 100644 --- a/lib/pages/medical/medical_profile_page.dart +++ b/lib/pages/medical/medical_profile_page.dart @@ -6,47 +6,16 @@ import 'package:diplomaticquarterapp/core/service/medical/vital_sign_service.dar import 'package:diplomaticquarterapp/core/viewModels/medical/medical_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/models/Appointments/toDoCountProviderModel.dart'; -import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_card_screen.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; -import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/reports/monthly_reports.dart'; -import 'package:diplomaticquarterapp/pages/medical/smart_watch_health_data/smart_watch_instructions.dart'; -import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart'; -import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart'; -import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; -import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.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/data_display/medical/time_line_widget.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; -import 'package:diplomaticquarterapp/widgets/dialogs/alert_dialog.dart'; -import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; -import 'package:diplomaticquarterapp/widgets/others/sliver_app_bar_delegate.dart'; -import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_card_screen.dart'; import 'package:provider/provider.dart'; -import '../../locator.dart'; -import '../../uitl/gif_loader_dialog_utils.dart'; -import 'active_medications/ActiveMedicationsPage.dart'; -import 'allergies_page.dart'; -import 'ask_doctor/ask_doctor_home_page.dart'; -import 'balance/my_balance_page.dart'; -import 'doctor/doctor_home_page.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; -import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; -import 'eye/EyeHomePage.dart'; -import 'eye/EyeMeasurementsPage.dart'; -import 'labs/labs_home_page.dart'; -import 'my_trackers/my_trackers.dart'; class MedicalProfilePage extends StatefulWidget { @override diff --git a/lib/pages/medical/prescriptions/prescription_details_page.dart b/lib/pages/medical/prescriptions/prescription_details_page.dart index fefa6918..02be8fdb 100644 --- a/lib/pages/medical/prescriptions/prescription_details_page.dart +++ b/lib/pages/medical/prescriptions/prescription_details_page.dart @@ -1,6 +1,7 @@ import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog.dart'; +import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/reminder_dialog_prescription.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/pharmacy_for_prescriptions_page.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; @@ -223,14 +224,15 @@ class PrescriptionDetailsPage extends StatelessWidget { transform: Matrix4.translationValues(0.0, curvedValue * 200, 0.0), child: Opacity( opacity: a1.value, - child: ReminderDialog( + child: PrescriptionReminderDialog( eventId: prescriptionReport.itemID.toString(), - title: "Prescription Reminder", + title: "${prescriptionReport.itemDescriptionN} Prescription Reminder", description: "${prescriptionReport.itemDescriptionN} ${prescriptionReport.frequencyN} ${prescriptionReport.routeN} ", - startDate: "/Date(${startDate.millisecondsSinceEpoch}+0300)/", - endDate: "/Date(${endDate.millisecondsSinceEpoch}+0300)/", + startDate: startDate, + endDate: endDate, location: prescriptionReport.remarks, + days: 1, ), ), ); diff --git a/lib/services/appointment_services/GetDoctorsList.dart b/lib/services/appointment_services/GetDoctorsList.dart index dbac5716..bf45c8b5 100644 --- a/lib/services/appointment_services/GetDoctorsList.dart +++ b/lib/services/appointment_services/GetDoctorsList.dart @@ -15,6 +15,7 @@ import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:flutter/cupertino.dart'; + class DoctorsListService extends BaseService { AppSharedPreferences sharedPref = AppSharedPreferences(); AppGlobal appGlobal = new AppGlobal(); @@ -159,7 +160,7 @@ class DoctorsListService extends BaseService { "VersionID": req.VersionID, "Channel": req.Channel, "generalid": 'Cs2020@2016\$2958', - "PatientOutSA": authUser.outSA ?? false, + "PatientOutSA": authUser.outSA ?? false, "TokenID": "", "DeviceTypeID": req.DeviceTypeID, "SessionID": null, @@ -186,7 +187,7 @@ class DoctorsListService extends BaseService { Future getDoctorsRating(int docID, context) async { Map request; var languageID = - await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); + await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar'); Request req = appGlobal.getPublicRequest(); request = { "LanguageID": languageID == 'ar' ? 1 : 2, @@ -209,37 +210,38 @@ class DoctorsListService extends BaseService { await baseAppClient.post(GET_DOCTOR_RATING_NOTES, onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } - Future getDoctorPrePostImages(DoctorProfileList doctorProfile, context) async { + Future getDoctorPrePostImages( + DoctorProfileList doctorProfile, context) async { Map request; request = { - "PatientOutSA": authUser.outSA ?? 0, + "PatientOutSA": authUser.outSA ?? 0, "isDentalAllowedBackend": false, - "DoctorID" : doctorProfile.doctorID, - "ClinicID":doctorProfile.clinicID, - "ProjectID":doctorProfile.projectID + "DoctorID": doctorProfile.doctorID, + "ClinicID": doctorProfile.clinicID, + "ProjectID": doctorProfile.projectID }; var images = DoctorPrePostImages(); await baseAppClient.post(GET_DOCTOR_PRE_POST_IMAGES, onSuccess: (response, statusCode) async { - var list = response['DoctorPrePostImagesList']; - if (list is List && list.length > 0){ - list.forEach((j) { - var image = DoctorPrePostImageModel.fromJson(j); - if(image.imageType == 1) images.pre = image; - if(image.imageType == 2) images.post = image; - }); - } - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + var list = response['DoctorPrePostImagesList']; + if (list is List && list.length > 0) { + list.forEach((j) { + var image = DoctorPrePostImageModel.fromJson(j); + if (image.imageType == 1) images.pre = image; + if (image.imageType == 2) images.post = image; + }); + } + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(images); } @@ -350,7 +352,8 @@ class DoctorsListService extends BaseService { } Future insertAppointment(int docID, int clinicID, int projectID, - String selectedTime, String selectedDate, BuildContext context, [String procedureID]) async { + String selectedTime, String selectedDate, BuildContext context, + [String procedureID]) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { @@ -967,8 +970,8 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future addVIDARequest(String advanceNumber, - String paymentReference, dynamic apptData, BuildContext context) async { + Future addVIDARequest(String advanceNumber, String paymentReference, + dynamic apptData, BuildContext context) async { Map request; if (await this.sharedPref.getObject(USER_PROFILE) != null) { var data = AuthenticatedUser.fromJson( @@ -1478,23 +1481,23 @@ class DoctorsListService extends BaseService { return Future.value(localRes); } - Future sendCheckinNfcRequest( - int appointmentNo, String nfcCode,int projectId, BuildContext context) async { + Future sendCheckinNfcRequest(int appointmentNo, String nfcCode, + int projectId, BuildContext context) async { Map request; Request req = appGlobal.getPublicRequest(); request = { - "AppointmentNo":appointmentNo, + "AppointmentNo": appointmentNo, "NFC_Code": nfcCode, "ProjectID": projectId, }; dynamic localRes; await baseAppClient.post(SEND_CHECK_IN_NFC_REQUEST, onSuccess: (response, statusCode) async { - localRes = response; - }, onFailure: (String error, int statusCode) { - throw error; - }, body: request); + localRes = response; + }, onFailure: (String error, int statusCode) { + throw error; + }, body: request); return Future.value(localRes); } } diff --git a/lib/uitl/app_toast.dart b/lib/uitl/app_toast.dart index 5c917009..cfac3b97 100644 --- a/lib/uitl/app_toast.dart +++ b/lib/uitl/app_toast.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_flexible_toast/flutter_flexible_toast.dart'; +import 'package:diplomaticquarterapp/config/config.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; class AppToast { - /// show long toast message /// [message] to show for user /// [timeInSeconds] how many second the toast will appear to the user @@ -64,7 +65,7 @@ class AppToast { FlutterFlexibleToast.showToast( message: message, toastLength: toastLength, - timeInSeconds: timeInSeconds=2, + timeInSeconds: timeInSeconds = 2, fontSize: fontSize, toastGravity: toastGravity, backgroundColor: Colors.green, @@ -87,7 +88,7 @@ class AppToast { static void showErrorToast({ @required String message, Toast toastLength = Toast.LENGTH_LONG, - int timeInSeconds=2, + int timeInSeconds = 2, double fontSize = 16, ToastGravity toastGravity = ToastGravity.TOP, Color textColor = Colors.white, @@ -113,4 +114,14 @@ class AppToast { void cancelToast() { FlutterFlexibleToast.cancel(); } + + void backWithEmpty() { + AppToast.showErrorToast( + message: TranslationBase.of(AppGlobal.context).empty); + Navigator.of(AppGlobal.context).pop(); + } + + void back() { + Navigator.of(AppGlobal.context).pop(); + } } diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 0767ac4d..2036b3b4 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -1922,7 +1922,27 @@ class TranslationBase { String get clinicAcceptLivecare => localizedValues["clinic-accept-livecare"][locale.languageCode]; - String get livecareModalTop => localizedValues["livecareModal-top"][locale.languageCode]; + String get livecareModalTop => + localizedValues["livecareModal-top"][locale.languageCode]; + String get empty => localizedValues["empty"][locale.languageCode]; + + String get schedule => localizedValues["schedule"][locale.languageCode]; + + String get livecarePoint2 => + localizedValues["livecare-point-2"][locale.languageCode]; + String get livecarePoint3 => + localizedValues["livecare-point-3"][locale.languageCode]; + String get livecarePoint4 => + localizedValues["livecare-point-4"][locale.languageCode]; + String get livecarePoint5 => + localizedValues["livecare-point-5"][locale.languageCode]; + String get bookImmediateLivecare => + localizedValues["book-immediate-livecare"][locale.languageCode]; + String get bookVideoLivecare2 => + localizedValues["book-video-livecare-2"][locale.languageCode]; + String get noThankyou => localizedValues["no-thankyou"][locale.languageCode]; + String get visitClinic => + localizedValues["visit-clinic"][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate {