Afspraakplanner

Leuk dat je wilt kennismaken. Kies hieronder een datum en tijd die jou goed uitkomt.

{{ is_error_msg }}

Wat wil je afspreken?
Selecteer:
{{ service_details.bookingpress_service_name }}

Duur: {{ service_details.bookingpress_service_duration_val }} {{ service_details.bookingpress_service_duration_label }}

Prijs excl btw: {{ service_details.bookingpress_service_price }}

Er is geen service beschikbaar voor boeking
{{service_extra_title}}

{{ extra_service_error_msg }}

{{ service_extra_details.bookingpress_extra_service_name }}
{{ service_extra_details.bookingpress_extra_formatted_price }}
{{ service_extra_details.bookingpress_extra_service_duration }} {{ service_extra_details.bookingpress_extra_service_duration_unit }}
{{ n }}
{{ service_extra_details.bookingpress_service_description }}
Meer laden
Laad minder
{{bring_anyone_title}}
{{ n }} {{number_of_person_title}}

{{ is_error_msg }}

Datum & tijd
Selecteer hier je voorkeursdatum en tijdstip
{{custom_service_duration_title}}
{{custom_service_description_title}}
{{custom_price_title}}
{{appointment_step_form_data.selected_service_price}}
{{custom_service_duration_title}}
{{custom_service_description_title}}
{{custom_price_title}}
{{appointment_step_form_data.selected_service_price}}
Tijdstip
Er zijn geen tijdslots beschikbaar
Ochtend
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Middag
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Avond
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Nacht
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}} +1 dag
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}} +1 dag
Datum & tijd
Selecteer hier je voorkeursdatum en tijdstip
{{custom_service_duration_title}}
{{custom_service_description_title}}
{{custom_price_title}}
{{appointment_step_form_data.selected_service_price}}
{{custom_service_duration_title}}
{{custom_service_description_title}}
{{custom_duration_title}}
{{custom_price_title}}
{{appointment_step_form_data.selected_service_price}}
Tijdstip
Er zijn geen tijdslots beschikbaar
Ochtend
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Middag
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Avond
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
Nacht
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}} +1 dag
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}}
{{time_details.formatted_start_end_time}} {{ time_details.max_capacity }} {{slot_left_text}} +1 dag

{{ is_error_msg }}

Jouw gegevens
{{customer_form_fields_data.label}}

{{ is_error_msg }}

Overzicht

Jouw afspraak gegevens

Controleer hieronder of alles klopt
Naam
{{appointment_step_form_data.form_fields.customer_name }}
{{ appointment_step_form_data.form_fields.customer_firstname }} {{ appointment_step_form_data.form_fields.customer_lastname }}
{{ appointment_step_form_data.form_fields.customer_email }}
Wat heb je afgesproken
{{ appointment_step_form_data.selected_service_name}}
{{ cart_details.bookingpress_service_name}}
{{extras_details.bookingpress_extra_name }}
{{extras_details.bookingpress_extra_price}} {{extras_details.bookingpress_extra_duration}}
{{extras_details.bookingpress_selected_qty}}
{{appointment_step_form_data.bookingpress_selected_extra_service_count}} Extras
Datum & tijd
{{ appointment_step_form_data.customer_selected_end_date | bookingpress_format_date }}, {{appointment_step_form_data.selected_formatted_start_end_time}}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}, {{appointment_step_form_data.selected_formatted_start_end_time}}
{{ appointment_step_form_data.customer_selected_end_date || bookingpress_format_date }}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }} - {{appointment_step_form_data.selected_end_date | bookingpress_format_date}}
Afspraakdetails
{{ appointment_step_form_data.selected_service_name}}
{{extras_details.bookingpress_extra_name }}
{{extras_details.bookingpress_extra_price}} {{extras_details.bookingpress_extra_duration}}
{{extras_details.bookingpress_selected_qty}}
{{appointment_step_form_data.bookingpress_selected_extra_service_count}} Extras
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}, {{ appointment_step_form_data.selected_formatted_start_end_time }}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }}
{{ appointment_step_form_data.selected_date | bookingpress_format_date }} - {{ appointment_step_form_data.selected_end_date | bookingpress_format_date }}
{{ cart_details.bookingpress_service_name}}
{{ cart_details.bookingpress_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_end_time }}
{{ cart_details.customer_selected_end_date | bookingpress_format_date }}, {{cart_details.formatted_start_end_time}}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}, {{ cart_details.formatted_start_end_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }} - {{ cart_details.bookingpress_selected_end_date | bookingpress_format_date }}
{{ cart_details.bookingpress_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} to {{ cart_details.formatted_end_time }}
{{ cart_details.customer_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} to {{ cart_details.formatted_end_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} to {{ cart_details.formatted_end_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}
{{ cart_details.bookingpress_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} - {{ cart_details.formatted_end_time }}
{{ cart_details.customer_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} - {{ cart_details.formatted_end_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }} - {{ cart_details.formatted_end_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}
{{ cart_details.bookingpress_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }}
{{ cart_details.customer_selected_end_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}, {{ cart_details.formatted_start_time }}
{{ cart_details.bookingpress_selected_date | bookingpress_format_date }}
{{subtotal_text}}
{{ appointment_step_form_data.bookingpress_temp_subtotal_with_currency }}
{{ appointment_step_form_data.selected_service_price }}
{{tax_title}}
Belasting
+{{ appointment_step_form_data.tax_amount }}
{{couon_applied_title}} {{ appointment_step_form_data.coupon_code }}
-{{ appointment_step_form_data.coupon_discount_amount_with_currecny }}
{{coupon_code_title}}

{{ coupon_code_msg }}

{{ coupon_code_msg }}

{{coupon_apply_button_label}} Toegepast
{{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.total_payable_amount_with_currency }}
{{ appointment_step_form_data.selected_service_price }}
{{deposit_heading_title}}
{{deposit_title}} {{full_payment_title}}
{{deposit_paying_amount_title}}
{{ appointment_step_form_data.bookingpress_deposit_amt }}
{{ appointment_step_form_data.deposit_payment_amount_percentage }}% ( {{ appointment_step_form_data.bookingpress_deposit_amt }} )
{{deposit_remaining_amount_title}} {{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.bookingpress_deposit_due_amt }}
{{ appointment_step_form_data.total_payable_amount_with_currency }}
{{subtotal_text}}
{{ appointment_step_form_data.bookingpress_temp_subtotal_with_currency }}
{{ appointment_step_form_data.bookingpress_cart_total_with_currency }}
{{tax_title}}
Belasting
+{{ appointment_step_form_data.tax_amount }}
{{couon_applied_title}} {{ appointment_step_form_data.coupon_code }}
-{{ appointment_step_form_data.coupon_discount_amount_with_currecny }}
{{coupon_code_title}}

{{ coupon_code_msg }}

{{ coupon_code_msg }}

{{coupon_apply_button_label}} Toegepast
{{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.total_payable_amount_with_currency }}
{{deposit_heading_title}}
{{deposit_title}} {{full_payment_title}}
{{deposit_paying_amount_title}}
{{ appointment_step_form_data.bookingpress_deposit_total_with_currency }}
( {{ appointment_step_form_data.bookingpress_deposit_total_with_currency }} )
{{deposit_remaining_amount_title}} {{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.included_tax_label }}
{{ appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency }}
{{ appointment_step_form_data.total_payable_amount_with_currency }}
{{ appointment_step_form_data.total_payable_amount_with_currency }}
Er is geen betaalmethode beschikbaar.
Selecteer betaalmethode

Factuur per e-mail

PayPal

{{card_details_text}}

{{ is_error_msg }}

{{staffmember_heading_title}}
{{any_staff_title}}
{{ staffmember_details.bookingpress_staffmember_firstname }} {{ staffmember_details.bookingpress_staffmember_lastname }}

{{ staffmember_details.bookingpress_staffmember_email }}

{{ staffmember_details.bookingpress_staffmember_phone }}

Er is geen medewerker beschikbaar voor boeking
Geen categorieën en services toegevoegd!
","bookingpress_staffmember_status":"1","bookingpress_staffmember_firstname":"Jennifer","bookingpress_staffmember_lastname":"Slot-Stip","bookingpress_staffmember_email":"","bookingpress_staffmember_phone":"","bookingpress_staffmember_country_phone":"NL","bookingpress_staffmember_country_dial_code":"31","bookingpress_staffmember_created":"2025-02-20 12:10:39","assigned_service_details":["4","3","1"],"assigned_service_price_details":{"4":{"assigned_service_id":"4","assigned_service_price":"150","assigned_service_formatted_price":"\u20ac150.00","assigned_service_capacity":"2","assigned_service_min_capacity":"1"},"3":{"assigned_service_id":"3","assigned_service_price":"0","assigned_service_formatted_price":"\u20ac0.00","assigned_service_capacity":"1","assigned_service_min_capacity":"1"},"1":{"assigned_service_id":"1","assigned_service_price":"0","assigned_service_formatted_price":"\u20ac0.00","assigned_service_capacity":"1","assigned_service_min_capacity":"1"}},"staffmember_visibility":"public","staffmember_avatar_url":"","staffmember_information_rule":2,"is_display_staff":true,"is_display_staff_with_flag":true},{"bookingpress_staffmember_id":"2","bookingpress_wpuser_id":"4","bookingpress_staffmember_position":"1","bookingpress_staffmember_login":"","bookingpress_staffmember_status":"1","bookingpress_staffmember_firstname":"Jennifer","bookingpress_staffmember_lastname":"Design Sprint","bookingpress_staffmember_email":"","bookingpress_staffmember_phone":"","bookingpress_staffmember_country_phone":"NL","bookingpress_staffmember_country_dial_code":"31","bookingpress_staffmember_created":"2025-03-14 10:59:21","assigned_service_details":[],"assigned_service_price_details":[],"staffmember_visibility":"private","staffmember_avatar_url":"","staffmember_information_rule":2,"is_display_staff":false,"is_display_staff_with_flag":false}],"bpa_all_staff_details":[{"bookingpress_staffmember_id":"1","bookingpress_wpuser_id":"2","bookingpress_staffmember_position":"0","bookingpress_staffmember_login":"","bookingpress_staffmember_status":"1","bookingpress_staffmember_firstname":"Jennifer","bookingpress_staffmember_lastname":"Slot-Stip","bookingpress_staffmember_email":"","bookingpress_staffmember_phone":"","bookingpress_staffmember_country_phone":"NL","bookingpress_staffmember_country_dial_code":"31","bookingpress_staffmember_created":"2025-02-20 12:10:39","assigned_service_details":["4","3","1"],"assigned_service_price_details":{"4":{"assigned_service_id":"4","assigned_service_price":"150","assigned_service_formatted_price":"\u20ac150.00","assigned_service_capacity":"2","assigned_service_min_capacity":"1"},"3":{"assigned_service_id":"3","assigned_service_price":"0","assigned_service_formatted_price":"\u20ac0.00","assigned_service_capacity":"1","assigned_service_min_capacity":"1"},"1":{"assigned_service_id":"1","assigned_service_price":"0","assigned_service_formatted_price":"\u20ac0.00","assigned_service_capacity":"1","assigned_service_min_capacity":"1"}},"staffmember_visibility":"public","staffmember_avatar_url":"","staffmember_information_rule":2,"is_display_staff":true,"is_display_staff_with_flag":true},{"bookingpress_staffmember_id":"2","bookingpress_wpuser_id":"4","bookingpress_staffmember_position":"1","bookingpress_staffmember_login":"","bookingpress_staffmember_status":"1","bookingpress_staffmember_firstname":"Jennifer","bookingpress_staffmember_lastname":"Design Sprint","bookingpress_staffmember_email":"","bookingpress_staffmember_phone":"","bookingpress_staffmember_country_phone":"NL","bookingpress_staffmember_country_dial_code":"31","bookingpress_staffmember_created":"2025-03-14 10:59:21","assigned_service_details":[],"assigned_service_price_details":[],"staffmember_visibility":"private","staffmember_avatar_url":"","staffmember_information_rule":2,"is_display_staff":false,"is_display_staff_with_flag":false}],"bookingpress_open_extras_drawer":"false","bookingpress_is_staffmember_loaded":"false","service_advance_see_less":0,"load_more_extras":0,"is_load_more_extras":"0","card_details_text":"Card Details","card_name_text":"Op naam van","card_number_text":"Card Nummer","expire_month_text":"Geldig tot maand","expire_year_text":"Geldig tot jaar","cvv_text":"CVV","hide_service_duration":false,"hide_service_price":false,"hide_time_slot_grouping":false,"hide_capacity_text":true,"hide_capacity_text_flag":false,"bookigpress_time_format_for_booking_form":"5","slot_left_text":"Slots over","cancel_button_title":"Annuleren","continue_button_title":"Doorgaan","subtotal_text":"Subtotaal","is_staff_first_step":0,"inbuilt_redirection_thankyou_content":"\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <\/svg>\n
\n
Boekings ID: <\/span><\/div>\n <\/div>\n
Je afspraak is succesvol geboekt!<\/div>\n

We hebben de informatie over je afspraak naar je e-mailadres verzonden.<\/p>\n <\/div>\n

\n
\n
Dienst:<\/div>\n
<\/div><\/div>\n <\/div>\n
\n
Datum & tijd:<\/div>\n
<\/div><\/div>\n <\/div>\n
\n
Klantnaam:<\/div>\n
<\/div><\/div>\n <\/div>\n <\/div>\n
\t\n
Toevoegen aan kalender<\/div>\n
\t\t\t\t\t\t\t\t\n
\n \n \n \n \n \n \n <\/g>\n \n \n \n <\/clipPath>\n <\/defs>\n <\/svg>\n <\/span> \n {{ item.name}}\n <\/el-button> \n \n \n \n \n \n \n \n <\/svg>\n <\/span>\n {{ item.name}}\n <\/el-link> \n \n \n \n \n \n \n \n \n <\/g>\n \n \n \n <\/clipPath>\n <\/defs>\n <\/svg>\n <\/span> \n {{ item.name}}\n <\/el-button> \n \n \n \n \n \n <\/g>\n \n \n \n <\/clipPath>\n <\/defs>\n <\/svg> \n <\/span> \n {{ item.name}}\n <\/el-link> \n <\/div><\/div><\/div>\n <\/div>\n <\/div>","inbuilt_redirection_failed_content":"\n
\n

Er ging iets mis. Je betaling is mislukt.<\/h4>\n <\/div>","bkp_process_booking":false,"bkp_processing_token":false,"customer_form_fields_original":"","customer_details_rule_original":"","customer_form_temp_data":"","bookingpress_has_password_field":"","deposit_paying_amount_title":"Aanbetaling vooraf","deposit_heading_title":"Aanbetaling","deposit_remaining_amount_title":"Resterend","deposit_title":"Aanbetaling","full_payment_title":"Volledige betaling","service_extra_title":"Select Service Extras","is_display_extra_service_error":0,"extra_service_error_msg":"","bookingpress_google_calendar_version":"3.3","google_captcha_site_key":"6LfhuZkbAAAAABH5vT_KSnfZuSHl2aGYWFncFZC1","enable_google_captcha":"true","mollie_payment":1,"mollie_text":"iDeal \/ overboeking","tax_title":"21% btw","staffmember_heading_title":"Select Staff Member","any_staff_title":"Any Staff","is_custom_duration_addon":1,"is_display_custom_duration_loader":false,"is_display_custom_duration_day_loader":false,"bookingpress_custom_service_durations_slot":[],"custom_service_duration_title":"Serviceduur","custom_service_description_title":"Selecteer het juiste tijdslot.","custom_please_select_title":"Selecteer alstublieft","custom_price_title":"Prijs:","custom_duration_title":"Aangepaste duur","custom_service_duration_error_msg":"Selecteer een aangepaste serviceduurwaarde"}; bookingpress_return_data["jsCurrentDate"] = new Date("2026/01/16 14:28:54"); bookingpress_return_data["jsCurrentDateFormatted"] = new Date ("2026-01-16 00:00:00"); if( "Invalid Date" == bookingpress_return_data["jsCurrentDateFormatted"] ){ bookingpress_return_data["jsCurrentDateFormatted"] = new Date( "2026-01-16T00:00:00+00:00" ); } bookingpress_return_data["jsCurrentOnlyDate"] = bookingpress_return_data["jsCurrentDateFormatted"].toISOString().split("T")[0]; bookingpress_return_data["appointment_step_form_data"]["stime"] = 1768585055; bookingpress_return_data["appointment_step_form_data"]["spam_captcha"] = ""; bookingpress_return_data["hide_category_service"] = "0"; bookingpress_return_data["default_date_format"] = "DD-MM-YYYY"; bookingpress_return_data["customer_details_rule"] = {"customer_firstname":[{"required":true,"message":"Voer je voornaam in","trigger":"blur"}],"customer_lastname":[{"required":true,"message":"Voer je achternaam in","trigger":"blur"}],"customer_email":[{"required":true,"message":"Voer je e-mailadres in","trigger":"blur"},{"type":"email","message":"Vul alstublieft een geldig e-mailadres in","trigger":"blur"}],"customer_phone":[{"required":true,"message":"Vul je telefoonnummer in","trigger":"blur"}]}; if( "undefined" != typeof bookingpress_return_data["customer_details_rule"].customer_username && bookingpress_return_data["check_bookingpress_username_set"] == 0 ){ let rule_for_username = { "validator": bpa_check_username, "trigger": "blur" }; bookingpress_return_data["customer_details_rule"].customer_username.push( rule_for_username ); } bookingpress_return_data["customer_form_fields"] = [{"id":2,"field_name":"firstname","field_type":"Text","is_edit":false,"is_required":true,"label":"Voornaam","placeholder":"Voer je voornaam in","error_message":"Voer je voornaam in","is_hide":0,"field_position":1,"v_model_value":"customer_firstname","meta_key":"text_omeJJS","css_class":"","is_default":1,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[],"field_options":{"layout":"1col","used_for_user_information":true,"separate_value":false,"visibility":"always","minimum":0,"maximum":0,"selected_services":[],"is_customer_field":"false","attach_with_email":false},"default_value":"","is_delete":false},{"id":3,"field_name":"lastname","field_type":"Text","is_edit":false,"is_required":true,"label":"Achternaam","placeholder":"Voer je achternaam in","error_message":"Voer je achternaam in","is_hide":0,"field_position":2,"v_model_value":"customer_lastname","meta_key":"text_9tQSbr","css_class":"","is_default":1,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[],"field_options":{"layout":"1col","used_for_user_information":true,"separate_value":false,"visibility":"always","minimum":0,"maximum":0,"selected_services":[],"is_customer_field":"false","attach_with_email":false},"default_value":"","is_delete":false},{"id":4,"field_name":"email_address","field_type":"Email","is_edit":false,"is_required":true,"label":"E-mailadres","placeholder":"Voer je e-mailadres in","error_message":"Voer je e-mailadres in","is_hide":0,"field_position":3,"v_model_value":"customer_email","meta_key":"email_1c1LrX","css_class":"","is_default":1,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[],"field_options":{"layout":"1col","used_for_user_information":true,"separate_value":false,"visibility":"always","selected_services":[],"is_customer_field":"false","attach_with_email":false},"default_value":"","is_delete":false},{"id":5,"field_name":"phone_number","field_type":"Phone","is_edit":false,"is_required":true,"label":"Telefoonnummer","placeholder":"Vul je telefoonnummer in","error_message":"Vul je telefoonnummer in","is_hide":0,"field_position":4,"v_model_value":"customer_phone","meta_key":"phone_m9oHv4","css_class":"","is_default":1,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[],"field_options":{"layout":"1col","used_for_user_information":true,"separate_value":false,"visibility":"always","selected_services":[],"is_customer_field":"false","set_custom_placeholder":"false","attach_with_email":false},"default_value":"","is_delete":false},{"id":11,"field_name":"Radio","field_type":"Radio","is_edit":false,"is_required":false,"label":"Jouw voorkeur:","placeholder":"","error_message":"This field can not be blank","is_hide":0,"field_position":5,"v_model_value":"radio_QasBS","meta_key":"radio_QasBS","css_class":"","is_default":0,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[{"value":"Online (Google Meet)","label":"Online (Google Meet)"},{"value":"Op locatie (Vul hieronder adres in)","label":"Op locatie (Vul hieronder adres in)"}],"field_options":{"layout":"1col","inner_class":"1col","visibility":"services","is_customer_field":"false","selected_services":["4"],"minimum":"","maximum":"","separate_value":false,"attach_with_email":false,"used_for_user_information":false},"default_value":"","is_delete":false},{"id":9,"field_name":"Radio","field_type":"Radio","is_edit":false,"is_required":false,"label":"Voorkeur","placeholder":"","error_message":"This field can not be blank","is_hide":0,"field_position":6,"v_model_value":"radio_vaWmT","meta_key":"radio_vaWmT","css_class":"","is_default":0,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[{"value":"Telefonisch","label":"Telefonisch"},{"value":"Online (Google Meet)","label":"Online (Google Meet)"}],"field_options":{"layout":"1col","inner_class":"1col","visibility":"services","is_customer_field":"false","selected_services":["1"],"minimum":"","maximum":"","separate_value":false,"attach_with_email":false,"used_for_user_information":false},"default_value":"","is_delete":false},{"id":10,"field_name":"Radio","field_type":"Radio","is_edit":false,"is_required":false,"label":"Waar wil je afspreken","placeholder":"","error_message":"This field can not be blank","is_hide":0,"field_position":7,"v_model_value":"radio_Ypicc","meta_key":"radio_Ypicc","css_class":"","is_default":0,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[{"value":"Bij Jinx Design","label":"Bij Jinx Design"},{"value":"Ander adres (vul hieronder in)","label":"Ander adres (vul hieronder in)"}],"field_options":{"layout":"1col","inner_class":"1col","visibility":"services","is_customer_field":"false","selected_services":["3"],"minimum":"","maximum":"","separate_value":false,"attach_with_email":false,"used_for_user_information":false},"default_value":"","is_delete":false},{"id":6,"field_name":"note","field_type":"Textarea","is_edit":false,"is_required":false,"label":"Opmerking","placeholder":"Voer notitie details in","error_message":"Extra opmerkingen","is_hide":0,"field_position":8,"v_model_value":"appointment_note","meta_key":"textarea_TcTiQ7","css_class":"","is_default":1,"is_edit_values":false,"enable_preset_fields":false,"preset_field_choice":"","field_values":[],"field_options":{"layout":"1col","used_for_user_information":true,"separate_value":false,"visibility":"always","minimum":0,"maximum":0,"selected_services":[],"is_customer_field":"false","attach_with_email":false},"default_value":"","is_delete":false}]; bookingpress_return_data["is_error_msg"] = ""; bookingpress_return_data["is_display_error"] = "0"; bookingpress_return_data["is_service_loaded_from_url"] = "0"; bookingpress_return_data["booking_cal_maxdate"] = new Date( Date.now() + ( 3600 * 1000 * (24 * 365) ) ); bookingpress_return_data["is_booking_form_empty_loader"] = "1"; bookingpress_return_data["bpa_allow_modify_from_url"] = "0"; bookingpress_return_data["site_locale"] = "nl"; bookingpress_return_data["appointment_step_form_data"]["bookingpress_uniq_id"] = "696a3d1670fdf"; var bookingpress_captcha_key = "bookingpress_captcha_696a3d1670fdf"; bookingpress_return_data["appointment_step_form_data"][bookingpress_captcha_key] = ""; bookingpress_return_data["first_day_of_week"] = "2"; bookingpress_return_data["filter_pickerOptions"] = { "firstDayOfWeek": 1, }; bookingpress_return_data["appointment_step_form_data"]["base_price_without_currency"] = 0; bookingpress_return_data["use_base_price_for_calculation"] = true; bookingpress_return_data["modelConfig"] = { "type": "string", "mask": "YYYY-MM-DD", }; return bookingpress_return_data; }, filters: { bookingpress_format_date: function(value){ var default_date_format = "DD-MM-YYYY"; return moment(String(value)).locale("nl_NL").format(default_date_format) }, bookingpress_format_time: function(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("nl_NL").format(default_time_format) } }, beforeCreate(){ this.is_booking_form_empty_loader = "1"; }, created(){ this.bookingpress_load_booking_form(); }, mounted(){ const vm_onload = this; if( "undefined" != typeof window.location.href && /post\.php/.test( window.location.href ) ){ return; } vm_onload.bpa_check_browser(); vm_onload.bpa_check_browser_version(); let selected_category = vm_onload.appointment_step_form_data.selected_category; vm_onload.bpa_select_category( selected_category ); this.loadSpamProtection(); const vm = this;this.expirationDate(); /** Signature Canvas code */ this.$nextTick(() => { setTimeout(function(){ // const canvas = document.querySelector("canvas[data-metakey=\"" + metakey + "\" ]"); const allCanvases = vm.$refs.signatureCanvas; if("undefined" != typeof allCanvases && allCanvases.length){ let metakey = ""; allCanvases.forEach(function(c){ if(c){ metakey = c.getAttribute("data-metakey" ); vm.appointment_step_form_data.ctx[metakey] = c.getContext("2d"); } }) } },3000); }); /** Signature Canvas code */ document.onkeydown = function(event) { event = event || window.event; var isEscape = false; if(event.key === "Escape" || event.key === "Esc"){ if(vm.bookingpress_current_tab == "service"){ let mob_extra = document.querySelector( ".bpa-fm--service__advance-options.--bpa-is-mob" ); if( mob_extra == null ){ vm.bookingpress_close_extra_drawer(); } else { let mob_pos = mob_extra.getBoundingClientRect(); if( mob_pos.width == 0 && mob_pos.height == 0 ){ vm.bookingpress_close_extra_drawer(); } } } } }; this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); wp.hooks.addFilter( "bookingpress_modify_available_dates_with_day_service", "bookingpress_pro", function( available_dates, working_hour_details, response_data, vm ){ if( 0 == available_dates.length && "d" == vm.appointment_step_form_data.selected_service_duration_unit ){ for( let wdate in working_hour_details ){ let updated_wdate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wdate, {"store_service_date":wdate,"store_start_time":"00:00:00","store_offset":"+01:00"} ); available_dates.push( updated_wdate + " 00:00:00" ); } } return available_dates; }, 10, 4); wp.hooks.addFilter( "bookingpress_modify_first_available_date_with_day_service", "bookingpress_pro", function( firstAvailableDate, available_dates, vm ){ if( "d" == vm.appointment_step_form_data.selected_service_duration_unit && 0 < available_dates.length ){ firstAvailableDate = available_dates[0].split(" ")[0]; } return firstAvailableDate; }, 10, 3); var bpa_is_service_loaded_from_url = "0"; var bookingpress_is_staff_load_from_share_url = "0"; var bookingpress_is_staff_load_from_url_param = "0"; let is_staff_first = false; if( typeof vm.appointment_step_form_data.form_sequence == "object" ){ if( vm.appointment_step_form_data.form_sequence[0] == "staff_selection" ){ is_staff_first = true; } } else { if( vm.appointment_step_form_data.form_sequence == "staff_selection" ){ is_staff_first = true; } } if( "undefined" == typeof vm.is_staff_member_set_from_url ){ vm.is_staff_member_set_from_url = false; } if( vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && true == is_staff_first && vm.is_staff_member_set_from_url == false && false == bookingpress_is_staff_load_from_share_url && false == bookingpress_is_staff_load_from_url_param ){ vm.bookingpress_select_staffmember("any_staff", 1); } if(bpa_is_service_loaded_from_url == "1"){ vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url = "0"; var bookingpress_allow_modify_false_check = ""; var bookingpress_is_extras_load_from_share_url = "0"; var bookingpress_guests_load_from_share_url = "0"; var bookingpress_selected_guest_from_url = "0"; var bookingpress_selected_extra_details = []; if( vm.is_staff_member_set_from_url == true ){ let selectedStaffmember = String(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id); if( "0" == vm.is_service_loaded_from_url || false == vm.is_service_loaded_from_url ){ vm.bookingpress_select_staffmember( selectedStaffmember, 0 ); }else if( bookingpress_is_staff_load_from_share_url == "1" ){ let selectedStaffmember = String(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id); vm.bookingpress_select_staffmember( selectedStaffmember, 0 ); } }/* else if ( false == vm.is_staff_member_set_from_url && vm.is_service_loaded_from_url ){ vm.is_service_loaded_from_url = 0; } */ if((bookingpress_is_staff_load_from_share_url == "1" || bookingpress_is_extras_load_from_share_url == "1" || bookingpress_guests_load_from_share_url == "1") && vm.appointment_step_form_data.form_sequence != "staff_selection" ){ vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url = "1"; } var bookingpress_selected_service_id = vm.appointment_step_form_data.selected_service; let selectedStaffmember = String(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id); if(bookingpress_is_staff_load_from_share_url == "1"){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = "0"; vm.appointment_step_form_data.selected_staff_member_id = "0"; } if(bookingpress_selected_service_id != ""){ var bookingpress_selected_service_name = ""; var bookingpress_selected_service_price = ""; var bookingpress_selected_service_price_without_currency = ""; var bookingpress_selected_service_duration = ""; var bookingpress_selected_service_duration_unit = ""; for( let index in vm.bookingpress_all_services_data ){ let currentValue = vm.bookingpress_all_services_data[ index ]; if(currentValue.bookingpress_service_id == bookingpress_selected_service_id){ bookingpress_selected_service_name = currentValue.bookingpress_service_name; bookingpress_selected_service_price = currentValue.bookingpress_service_price; bookingpress_selected_service_price_without_currency = currentValue.service_price_without_currency; bookingpress_selected_service_duration = currentValue.bookingpress_service_duration_val; bookingpress_selected_service_duration_unit = currentValue.bookingpress_service_duration_unit } }; /* if((bookingpress_is_staff_load_from_share_url == "0" && vm.is_bring_anyone_with_you_activated == "0" && vm.bookingpress_is_extra_enable == "0" && bookingpress_allow_modify_false_check == "") || (bookingpress_is_staff_load_from_share_url == "0" && (vm.is_bring_anyone_with_you_activated == "1" || vm.bookingpress_is_extra_enable == "1") && bookingpress_allow_modify_false_check == "") && bookingpress_is_staff_load_from_share_url == "1" ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ /* Select staff member retrieved from URL if(bookingpress_is_staff_load_from_share_url == "1" && selectedStaffmember != ""){ vm.appointment_step_form_data.is_staff_exists = "1"; vm.bookingpress_select_staffmember( selectedStaffmember, 0 ); }*/ /*Select bring anyone with you members */ if(vm.is_bring_anyone_with_you_activated == "1" && bookingpress_guests_load_from_share_url == "1" && bookingpress_selected_guest_from_url != ""){ vm.selectDate(bookingpress_selected_service_id, bookingpress_selected_service_name, bookingpress_selected_service_price, bookingpress_selected_service_price_without_currency, "true",bookingpress_selected_service_duration,bookingpress_selected_service_duration_unit); vm.appointment_step_form_data.bookingpress_selected_bring_members = parseInt(bookingpress_selected_guest_from_url); let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data(vm.appointment_step_form_data.bookingpress_selected_bring_members); } /* Select extras retrieved from url */ if(vm.bookingpress_is_extra_enable == "1"){ vm.bookingpress_service_extras.forEach(function(currentValue, index, arr){ if(currentValue.bookingpress_extra_services_id in bookingpress_selected_extra_details){ vm.appointment_step_form_data.bookingpress_selected_extra_details[currentValue.bookingpress_extra_services_id].bookingpress_is_selected = true; vm.appointment_step_form_data.bookingpress_selected_extra_details[currentValue.bookingpress_extra_services_id].bookingpress_selected_qty = parseInt(bookingpress_selected_extra_details[currentValue.bookingpress_extra_services_id]); vm.appointment_step_form_data.is_extra_service_exists = "1"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); } }); } } }else{ const myVar = Error().stack; let screen_size = "desktop"; if(window.outerWidth < 1200 && window.outerWidth >= 768){ screen_size = "tablet"; }else if(window.outerWidth < 768){ screen_size = "mobile"; } if( /mounted/.test( myVar ) && 1 == vm.bpasortedServices.length && "mobile" == screen_size && vm.bpa_hide_service_step != "true" ){ vm.appointment_step_form_data.selected_service = ""; } if( vm.appointment_step_form_data.selected_service != ""){ var bookingpress_selected_service_id = vm.appointment_step_form_data.selected_service; var bookingpress_selected_service_name = ""; var bookingpress_selected_service_price = ""; var bookingpress_selected_service_price_without_currency = ""; var bookingpress_selected_service_duration = ""; var bookingpress_selected_service_duration_unit = ""; let currentValue = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; bookingpress_selected_service_name = currentValue.bookingpress_service_name; if(vm.is_staffmember_activated == "1" || vm.is_any_staff_option_enable == "1"){ bookingpress_selected_service_price = currentValue.bookingpress_staffmember_price || currentValue.bookingpress_service_price; bookingpress_selected_service_price_without_currency = currentValue.bookingpress_staffmember_price_without_currency || currentValue.service_price_without_currency; }else{ bookingpress_selected_service_price = currentValue.bookingpress_service_price; bookingpress_selected_service_price_without_currency = currentValue.service_price_without_currency; } bookingpress_selected_service_duration = currentValue.bookingpress_service_duration_val; bookingpress_selected_service_duration_unit = currentValue.bookingpress_service_duration_unit let service_max_capacity = vm.appointment_step_form_data.service_max_capacity; if( 1 == vm.is_staffmember_activated ){ } else { service_max_capacity = vm.bookingpress_all_services_data[ bookingpress_selected_service_id ].services_meta.max_capacity; } if( vm.bookingpress_is_extra_enable == "1" || ( vm.is_bring_anyone_with_you_activated == "1" && 1 < service_max_capacity ) ){ vm.selectDate( bookingpress_selected_service_id, bookingpress_selected_service_name, bookingpress_selected_service_price, bookingpress_selected_service_price_without_currency, false ); } }else{ let selectedStaffmember; if( vm.is_staff_member_set_from_url == true || bookingpress_is_staff_load_from_share_url == "1" ){ selectedStaffmember = String(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id); if( "0" == vm.is_service_loaded_from_url || false == vm.is_service_loaded_from_url ){ vm.bookingpress_select_staffmember( selectedStaffmember, 0 ); }else if( bookingpress_is_staff_load_from_share_url == "1" ){ selectedStaffmember = String(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id); vm.bookingpress_select_staffmember( selectedStaffmember, 0 ); } } } } vm.bookingpress_close_extra_drawer_on_mouseup();this.bookingpress_onload_func();this.appointment_step_form_data.bookingpress_customer_timezone = new Date().getTimezoneOffset();this.initMap(); var bookingpress_guests_load_from_share_url = "0"; var bookingpress_selected_guest_from_url = "0"; let current_tab = this.bookingpress_current_tab; let step_data = this.bookingpress_sidebar_step_data[ current_tab ]; if( this.hide_category_service == "1" || this.is_service_loaded_from_url == "1" ){ let next_tab = this.bookingpress_sidebar_step_data["service"].next_tab_name; let bookingpress_selected_service_id = vm.appointment_step_form_data.selected_service; let bookingpress_selected_service_name = vm.appointment_step_form_data.selected_service_name; let bookingpress_selected_service_price = vm.appointment_step_form_data.selected_service_price; let bookingpress_selected_service_price_without_currency = vm.appointment_step_form_data.service_price_without_currency; let useFlag = "false"; if( "undefined" != typeof vm.is_bring_anyone_with_you_activated && 1 == vm.is_bring_anyone_with_you_activated && bookingpress_guests_load_from_share_url == "1" && bookingpress_selected_guest_from_url != "" ){ /** Do Nothing as selectDate function has already been called before */ } else { vm.selectDate( bookingpress_selected_service_id, bookingpress_selected_service_name, bookingpress_selected_service_price, bookingpress_selected_service_price_without_currency, useFlag ); } } else { if( "undefined" != typeof step_data.is_navigate_to_next && true == step_data.is_navigate_to_next ){ this.bookingpress_current_tab = step_data.next_tab_name; } } if( typeof this.bookingpress_sidebar_step_data.staffmembers != "undefined" && 1 == this.bookingpress_sidebar_step_data.staffmembers.is_display_step ){ let staff_member_tab_data = this.bookingpress_sidebar_step_data.staffmembers; let hide_staff_selection = ( this.appointment_step_form_data.hide_staff_selection != "false" ); if( !hide_staff_selection && staff_member_tab_data.next_tab_name == this.bookingpress_current_tab && staff_member_tab_data.is_display_step == 1 ){ this.bookingpress_current_tab = "staffmembers"; } if( this.bookingpress_current_tab == "staffmembers" && ( this.appointment_step_form_data.selected_staff_member_id > 0 || staff_member_tab_data.is_display_step == 0 ) ){ this.bookingpress_current_tab = staff_member_tab_data.next_tab_name; this.bookingpress_sidebar_step_data.staffmembers.is_navigate_to_next = true; } } let bpa_current_tab = this.bookingpress_current_tab; let bpa_side_bar_step_data = this.bookingpress_sidebar_step_data[bpa_current_tab]; let bpa_callback_funcs = bpa_side_bar_step_data.auto_focus_tab_callback; for( let callback in bpa_callback_funcs ){ let args = bpa_callback_funcs[callback]; this[callback].apply( callback, args ); } }, computed:{ bpasortedServices: function(){ let bookingpress_all_services_data = []; for( let i in this.bookingpress_all_services_data ){ bookingpress_all_services_data.push( this.bookingpress_all_services_data[i] ); } return bookingpress_all_services_data.sort( (a, b) =>{ return ( parseInt( a.bookingpress_service_position ) < parseInt( b.bookingpress_service_position ) ) ? -1 : 1; }); } }, methods: { bpa_check_username_validation(bpa_username){ const vm = this; if( bpa_username != ""){ vm.appointment_step_form_data.check_username_validation = true; } else { vm.appointment_step_form_data.check_username_validation = false; if( vm.appointment_step_form_data.bpa_user_email_already_exists == true && ( "undefined" != typeof vm.appointment_step_form_data.form_fields["customer_email"] && vm.appointment_step_form_data.form_fields["customer_email"] == "") ){ vm.appointment_step_form_data.bpa_password_already_exists = false; vm.customer_details_rule.customer_password[0].required = true; vm.appointment_step_form_data.bpa_user_email_already_exists = false; } ; } }, bookingpress_load_booking_form(){ const vm = this; setTimeout(function(){ vm.is_booking_form_empty_loader = "0"; setTimeout(function(){ var elms = document.querySelectorAll("#bpa-front-tabs"); for(var i = 0; i < elms.length; i++) { elms[i].style.display = "flex"; } var elms2 = document.querySelectorAll("#bpa-front-data-empty-view"); for(var i = 0; i < elms2.length; i++) { elms2[i].style.display = "flex"; } }, 500); }, 2000); }, generateSpamCaptcha(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_generate_spam_captcha", _wpnonce:bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.variant != "error" && (response.data.captcha_val != "" && response.data.captcha_val != undefined)){ vm.appointment_step_form_data.spam_captcha = response.data.captcha_val; }else{ var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch!="undefined" && bkp_wpnonce_pre_fetch!=null && response.data.updated_nonce!="") { document.getElementById("_wpnonce").value = response.data.updated_nonce; } else { vm.$notify({ title: response.data.title, message: response.data.msg, type: response.data.variant, customClass: "error_notification" }); } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, loadSpamProtection(){ const vm = this; vm.generateSpamCaptcha(); }, bookingpress_price_with_currency_symbol( price_amount, ignore_symbol = false ){ const vm = this; if( "String" == typeof price_amount ){ price_amount = parseFloat( price_amount ); } let currency_separator = vm.bookingpress_currency_separator; let decimal_points = vm.bookingpress_decimal_points; if( "comma-dot" == currency_separator ){ price_amount = vm.bookingpress_number_format( price_amount, decimal_points, ".", ",", ignore_symbol ); } else if( "dot-comma" == currency_separator ){ price_amount = vm.bookingpress_number_format( price_amount, decimal_points, ",", ".", ignore_symbol ); } else if( "space-dot" == currency_separator ){ price_amount = vm.bookingpress_number_format( price_amount, decimal_points, ".", " ", ignore_symbol ); } else if( "space-comma" == currency_separator ){ price_amount = vm.bookingpress_number_format( price_amount, decimal_points, ",", " ", ignore_symbol ); } else if( "Custom" == currency_separator){ let custom_comma_separator = vm.bookingpress_custom_comma_separator; let custom_thousand_separator = vm.bookingpress_custom_thousand_separator; price_amount = vm.bookingpress_number_format( price_amount, decimal_points, custom_comma_separator, custom_thousand_separator ); } if( true == ignore_symbol ){ return price_amount; } let currency_symbol = vm.bookingpress_currency_symbol; let currency_symbol_pos = vm.bookingpress_currency_symbol_position; if( "before" == currency_symbol_pos ){ price_amount = currency_symbol + price_amount; } else if( "before_with_space" == currency_symbol_pos ){ price_amount = currency_symbol + " " + price_amount; } else if( "after" == currency_symbol_pos ){ price_amount = price_amount + currency_symbol; } else if( "after_with_space" == currency_symbol_pos ){ price_amount = price_amount + " " + currency_symbol; } return price_amount; }, bookingpress_number_format( number, decimals, decPoint, thousandsSep, skip_separator = false ){ number = (number + "").replace(/[^0-9+\-Ee.]/g, ""); const n = !isFinite(+number) ? 0 : +number; const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals); const sep = (typeof thousandsSep === "undefined") ? "," : thousandsSep; const dec = (typeof decPoint === "undefined" || true == skip_separator ) ? "." : decPoint; let s = ""; const toFixedFix = function (n, prec) { if (("" + n).indexOf("e") === -1) { return +(Math.round(n + "e+" + prec) + "e-" + prec); } else { const arr = ("" + n).split("e"); let sig = ""; if (+arr[1] + prec > 0) { sig = "+"; } return (+(Math.round(+arr[0] + "e" + sig + (+arr[1] + prec)) + "e-" + prec)).toFixed(prec); } }; /* @todo: for IE parseFloat(0.55).toFixed(0) = 0; */ s = (prec ? toFixedFix(n, prec).toString() : "" + Math.round(n)).split("."); if( false == skip_separator ){ if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } } if ((s[1] || "").length < prec) { s[1] = s[1] || ""; s[1] += new Array(prec - s[1].length + 1).join("0"); } if( true == skip_separator ){ return parseFloat( s.join(dec) ); } else { return s.join(dec); } }, get_formatted_date(iso_date){ if( true == /(\d{2})\T/.test( iso_date ) ){ let date_time_arr = iso_date.split("T"); return date_time_arr[0]; } var __date = new Date(iso_date); var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date; }, get_formatted_datetime(iso_date) { var __date = new Date(iso_date); var hour = __date.getHours(); var minute = __date.getMinutes(); var second = __date.getSeconds(); if (minute < 10) { minute = "0" + minute; } if (second < 10) { second = "0" + second; } var formatted_time = hour + ":" + minute + ":" + second; var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date+" "+formatted_time; }, bookingpress_set_error_msg(error_msg){ const vm = this; let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } vm.is_display_error = "1"; vm.is_error_msg = error_msg; const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ window.scrollTo({ top: pos, behavior: "smooth", }); } setTimeout(function(){ vm.bookingpress_remove_error_msg(); },6000); }, bookingpress_remove_error_msg(){ const vm = this; vm.is_display_error = "0"; vm.is_error_msg = ""; }, checkBeforeBookAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_before_book_appointment",_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if(vm2.is_display_error != "1"){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_save_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; if(response.data.variant == "redirect"){ vm2.bookingpress_remove_error_msg(); vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); }else{ vm2.bookingpress_remove_error_msg(); } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } }.bind(this) ) .catch( function (error) { vm2.bookingpress_set_error_msg(error); }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, bpa_check_browser(){ const vm = this; let userAgent = navigator.userAgent; let browserName; if(userAgent.match(/edg/i)){ browserName = "edge"; } else if(userAgent.match(/opr\//i)){ browserName = "opera"; } else if(userAgent.match(/chrome|chromium|crios/i)){ browserName = "chrome"; } else if(userAgent.match(/firefox|fxios/i)) { browserName = "firefox"; } else if(userAgent.match(/safari/i)) { browserName = "safari"; } else { browserName="Unknown"; } vm.browser_details = browserName; }, bpa_check_browser_version(){ const vm = this; var objappVersion = navigator.appVersion; var browserAgent = navigator.userAgent; var browserName = navigator.appName; var browserVersion = "" + parseFloat(navigator.appVersion); var browserMajorVersion = parseInt(navigator.appVersion, 10); var Offset, OffsetVersion, ix; /* For Chrome */ if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) { browserName = "Chrome"; browserVersion = browserAgent.substring(OffsetVersion + 7); } /* For Microsoft internet explorer */ else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) { browserName = "Microsoft Internet Explorer"; browserVersion = browserAgent.substring(OffsetVersion + 5); } /* For Firefox */ else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) { browserName = "Firefox"; } /* For Safari */ else if ((OffsetVersion = browserAgent.indexOf("Safari")) != -1) { browserName = "Safari"; browserVersion = browserAgent.substring(OffsetVersion + 7); if ((OffsetVersion = browserAgent.indexOf("Version")) != -1) browserVersion = browserAgent.substring(OffsetVersion + 8); } /* For other browser "name/version" is at the end of userAgent */ else if ((Offset = browserAgent.lastIndexOf(" ") + 1) < (OffsetVersion = browserAgent.lastIndexOf("/"))) { browserName = browserAgent.substring(Offset, OffsetVersion); browserVersion = browserAgent.substring(OffsetVersion + 1); if (browserName.toLowerCase() == browserName.toUpperCase()) { browserName = navigator.appName; } } /* Trimming the fullVersion string at */ /* semicolon/space if present */ if ((ix = browserVersion.indexOf(";")) != -1) browserVersion = browserVersion.substring(0, ix); if ((ix = browserVersion.indexOf(" ")) != -1) browserVersion = browserVersion.substring(0, ix); browserMajorVersion = parseInt("" + browserVersion, 10); if (isNaN(browserMajorVersion)) { browserVersion = "" + parseFloat(navigator.appVersion); browserMajorVersion = parseInt(navigator.appVersion, 10); } vm.browser_version = browserMajorVersion; }, focusFirstService(){ if(app.current_screen_size == "desktop"){ this.$nextTick( () =>{ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); if( focusableItems.length ){ focusableItems[0].focus(); } }); } }, focusFirstDate(){ var firstDate = document.querySelectorAll(".vc-day.in-month [aria-disabled=false]"); if(firstDate){ if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); }else if(firstDate.length == 0){ firstDate = document.querySelectorAll(".vc-day.in-month .vc-day-content:not(.is-disabled)"); if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); } } } }, focusFirstTimeSlot(){ this.$nextTick( () =>{ if( this.$refs.timeSlotItems.length ){ this.$refs.timeSlotItems[0].focus(); } }); }, focustFirstCategory(){ this.$nextTick(() => { if (this.$refs.categoryItem.length) { this.$refs.categoryItem[0].focus(); } }); }, bpa_handle_service_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); // Update with your actual class let currentIndex = -1; let itemsPerRow = 2; if(window.outerWidth >= 1200){ itemsPerRow = 2; }else if(window.outerWidth < 950){ itemsPerRow = 1; } const active_container = document.querySelector(".bpa-front-module--service").offsetWidth; if(active_container && active_container.offsetWidth < 800){ itemsPerRow = 1; } // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); // bpa-fm--service__advance-options __bpa-is-active setTimeout(() => { let extraServiceFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-service-extras .el-checkbox__inner"); let recurringFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-guest-module .el-input__inner"); if(extraServiceFocus !== null){ extraServiceFocus.focus(); }else if (recurringFocus !== null){ recurringFocus.focus(); } }, 100); } else if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + itemsPerRow) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - itemsPerRow + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); this.bpaMoveFocusToPreviousElement( this.$refs.servicesGroup ); } }, bpa_handle_timeslot_keypress(index, event) { const groups = document.querySelectorAll(".bpa-front--dt__ts-body--row"); // row/groups const focusableItems = document.querySelectorAll(".bpa-front--dt__ts-body .bpa-front--dt__ts-body--item"); // Items let currentIndex = -1; let currentGroupIndex = -1; let itemIndexInGroup = -1; // Find the currently focused item and its group focusableItems.forEach((item, idx) => { if (item === document.activeElement) { currentIndex = idx; // Find which group this item belongs to for (let i = 0; i < groups.length; i++) { if (groups[i].contains(item)) { currentGroupIndex = i; // Find position within the group const groupItems = groups[i].querySelectorAll(".bpa-front--dt__ts-body--item"); for (let j = 0; j < groupItems.length; j++) { if (groupItems[j] === item) { itemIndexInGroup = j; break; } } break; } } } }); if (currentIndex === -1) return; // No focusable item is selected const itemsPerRow = 2; // Based on your screenshot showing 2 time slots per row if (event.key === "ArrowRight") { event.preventDefault(); // If at the end of the group, move to the first item of the next group if (itemIndexInGroup === groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length - 1) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Move to the next item in the same group let nextIndex = currentIndex + 1; if (nextIndex < focusableItems.length) { focusableItems[nextIndex].focus(); } } } else if (event.key === "ArrowDown") { event.preventDefault(); const itemsInCurrentGroup = groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length; const rowsInCurrentGroup = Math.ceil(itemsInCurrentGroup / itemsPerRow); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup >= rowsInCurrentGroup - 1 || currentIndex + itemsPerRow >= focusableItems.length) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group let nextIndex = currentIndex + itemsPerRow; const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if(itemsInCurrentGroup % 2 == 0 && nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); }else if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Stay in the same group, move down a row let nextIndex = currentIndex + itemsPerRow; if(currentIndex == itemsInCurrentGroup - 2 && itemsInCurrentGroup % 2 == 1 && (nextIndex + 1) < focusableItems.length){ focusableItems[nextIndex + 1].focus(); }else if(nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); } // if(nextIndex < focusableItems.length) } } else if (event.key === "ArrowLeft") { event.preventDefault(); // If at the beginning of the group, move to the last item of the previous group if (itemIndexInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { prevGroupItems[prevGroupItems.length - 1].focus(); } } } else { // Move to the previous item in the same group let prevIndex = currentIndex - 1; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if (event.key === "ArrowUp") { event.preventDefault(); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { let howMuchMinus = 1; if(itemIndexInGroup == 0 && prevGroupItems.length % 2 == 0){ howMuchMinus = 2; }else if(itemIndexInGroup == 1 && prevGroupItems.length % 2 == 0){ howMuchMinus = 1; }else{ if(itemIndexInGroup == 1 && prevGroupItems.length > 2){ howMuchMinus = 2; } } prevGroupItems[prevGroupItems.length - howMuchMinus].focus(); } } } else { // Stay in the same group, move up a row const prevIndex = currentIndex - itemsPerRow; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if ("Tab" == event.key && event.shiftKey && 0 === currentIndex) { event.preventDefault(); this.bpaMoveFocusToPreviousElement(this.$refs.timeSlotItemsGroup); } }, bpa_handle_category_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-cat-items-wrapper .bpa-front-ci-pill"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = document.querySelector(".bpa_search_service_data_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } this.bpaMoveFocusToPreviousElement( this.$refs.categoryGroup, focusElement ); } }, bpa_handle_pg_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-fm--bs__deposit-payment-module .bpa-front-form-control--radio"); if(focusElement == null){ focusElement = document.querySelector(".bpa-fm--bs-amount-item .bpa-is-tip-edit-icon svg"); if(focusElement == null){ focusElement = document.querySelectorAll(".bpa-fm--bs__coupon-module-textbox .el-button"); focusElement = focusElement[focusElement.length - 1]; if(focusElement == null){ focusElement = document.querySelector(".bpa-front-summary-content__lg .bpa--summary_service_datetime_count_name"); } } } this.bpaMoveFocusToPreviousElement( this.$refs.paymentGatewayItemsGroup, focusElement ); } }, focusFirstPaymentGateway(){ this.$nextTick( () =>{ const paymentGatewayItem = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if( paymentGatewayItem !== null ){ paymentGatewayItem.focus(); } }); }, bpaMoveFocusToPreviousElement( currentElement, focusOnElement = false ){ if(focusOnElement){ focusOnElement.focus(); return; } const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex - 1].focus(); } }, bpaMoveFocusToNextElement( currentElement ){ const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex + 1].focus(); } }, bpa_select_category( selected_cat_id, selected_cat_name, total_services, total_category){ const vm = this; let category_id = parseInt( selected_cat_id ); vm.isLoadClass = 0; if( 0 == selected_cat_id ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } else { if( vm.bookingpress_all_services_data != "" ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; let current_category = current_service.bookingpress_category_id; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = false; if( current_category == category_id ){ vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; } if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } } setTimeout(function(){ vm.isLoadClass = 1; },1); vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; }, selectStepCategory(selected_cat_id, selected_cat_name = "", total_services = 0, total_category="", display_warn = true ){ if( true == display_warn ){ console.trace("Deprecated step category function " ); console.warn("selectStepCategory function is deprecated. Please update the BookingPress lite, premium, and add-ons to the latest version"); } const vm = this; vm.isLoadClass = 0; if( 0 == selected_cat_id ){ let temp_services = []; let m = 0; for( let x in vm.bpa_services_data_from_categories ){ let service_details = vm.bpa_services_data_from_categories[x]; for( let n in service_details ){ let current_service = service_details[n]; if( "undefined" != typeof current_service.bookingpress_staffmembers ){ let selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( current_service.bookingpress_staffmembers.includes( selected_staffmember ) && selected_staffmember != ""){ var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position); temp_services[bookingpress_service_pos] = current_service; } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } m++; } } var bpa_temp_services= []; temp_services.sort(); for( let n in temp_services ){ if(temp_services[n] != "") { bpa_temp_services[n] = temp_services[n]; } } vm.services_data = bpa_temp_services.sort(); } else { vm.services_data = vm.bpa_services_data_from_categories[selected_cat_id]; if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } } vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; setTimeout(function(){ vm.isLoadClass = 1; },1); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } }, async selectDate(selected_service_id, service_name, service_price, service_price_without_currency, is_move_to_next, service_duration_val = "",service_duration_unit = ""){ const vm = this; if(typeof vm.appointment_step_form_data.cart_items == "undefined" && (selected_service_id != vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_date != "")){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date; let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } if( ("undefined" != typeof vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ) && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ vm.appointment_step_form_data.selected_date = newDate; vm.appointment_step_form_data.selected_end_date = newDate; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } } this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && 1 == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ) { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; } if( "undefined" != typeof vm.appointment_step_form_data.selected_staff_member_id && "" != vm.appointment_step_form_data.selected_staff_member_id ){ let current_selected_tab = "service"; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( "service" ); let selected_tab_pos = sidebar_keys.indexOf( "staffmembers" ); if( "undefined" == typeof vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url || vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == "0" ){ if( selected_tab_pos > current_tab_pos || sidebar_step_data.staffmembers.is_display_step == 0 ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } } } let is_drawer_opened = "false"; let use_drawer_flag = false; /* vm.appointment_step_form_data.is_extra_service_exists = "0"; if( vm.bookingpress_is_extra_enable == 1){ use_drawer_flag = true; for( let i in vm.appointment_step_form_data.bookingpress_selected_extra_details ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_selected_qty = 1; } for( let n in vm.all_services_data ){ let element = vm.all_services_data[n]; if( element.bookingpress_service_id == selected_service_id && element.extra_service_counter > 0 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; vm.isServiceLoadTimeLoader = "1"; } } } */ if( vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection == "false" && vm.appointment_step_form_data.form_sequence[0] != "staff_selection" ){ for( let index in vm.bookingpress_staffmembers_details ){ let currentValue = vm.bookingpress_staffmembers_details[index]; vm.bookingpress_staffmembers_details[index].is_display_staff = false; if("undefined" != typeof currentValue.assigned_service_price_details && "undefined" != typeof currentValue.assigned_service_price_details[selected_service_id] && "public" == vm.bookingpress_staffmembers_details[index].staffmember_visibility ){ vm.bookingpress_staffmembers_details[index].is_display_staff = true; } } if( "" == vm.appointment_step_form_data.selected_staff_member_id || 0 == vm.appointment_step_form_data.selected_staff_member_id ){ let next_tabname = vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name; if( "datetime" == next_tabname && 1 == vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate ){ vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate = 0; } } /* let is_staff_exists = 0; let total_staff = 0; let total_private_staff = 0; let deselect_staff = false; let staff_id = vm.appointment_step_form_data.selected_staff_member_id; let available_staffs = []; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(selected_service_id)){ if( currentValue.staffmember_visibility == "private" ){ total_private_staff++; } total_staff++; is_staff_exists = 1; available_staffs.push( currentValue.bookingpress_staffmember_id ); } }); if( available_staffs.length > 0 && staff_id > 0 && !available_staffs.includes( staff_id ) ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } if( 1 == is_staff_exists ){ if( total_staff == total_private_staff ){ await vm.bookingpress_select_staffmember("any_staff", 1); is_staff_exists = 0; vm.appointment_step_form_data.is_staff_exists = 0; vm.appointment_step_form_data.hide_staff_selection = "true"; } else { vm.isServiceLoadTimeLoader = "1"; is_drawer_opened = "true"; vm.appointment_step_form_data.is_staff_exists = 1; } } */ } if( ("false" == is_move_to_next && "false" == is_drawer_opened) ){ if( (vm.bookingpress_cart_addon == 1 && vm.appointment_step_form_data.hide_service_selection_step == "true" ) ){ is_move_to_next = "false"; } else { is_move_to_next = "true"; } } if( "true" == is_move_to_next && "d" == vm.appointment_step_form_data.selected_service_duration_unit ){ if( 0 == vm.bookingpress_sidebar_step_data.service.is_display_step && "datetime" == vm.bookingpress_current_tab ){ is_move_to_next = false; } } let current_selected_service = vm.appointment_step_form_data.selected_service; vm.bookingpress_remove_extra_service_error_msg(); if( "undefined" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && "" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && vm.bookingpress_sidebar_step_data.service.is_display_step == 1 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); const params = new URLSearchParams(window.location.search); if (params.get("book_again") == 1 && vm.is_staffmember_activated == 1) { document.body.classList.remove("--bpa-open-advance-drawer"); } vm.isServiceLoadTimeLoader = "0"; vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; is_move_to_next = false; } else { vm.appointment_step_form_data.is_extra_service_exists = "0"; } if( selected_service_id != "" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ){ let sidebar_step_data = vm.bookingpress_sidebar_step_data; /** Check if staff member is enabled, visible and after service step */ if( vm.is_staffmember_activated == 1){ if( sidebar_step_data.staffmembers.is_first_step == 0 ){ let max_capacity = 1; let min_capacity = 1; let staffmember_details = vm.bookingpress_staffmembers_details; let staff_capacities = []; let staff_min_capacities = []; staffmember_details.forEach( (element,index) =>{ if( "undefined" == typeof element.assigned_service_price_details[ selected_service_id ] ){ return true; } let staff_services = element.assigned_service_price_details[ selected_service_id ]; let staff_capacity = staff_services.assigned_service_capacity; staff_capacities.push( parseInt(staff_capacity) ); if( vm.is_bring_anyone_with_you_activated == 1 ){ let staff_min_capacity = staff_services.assigned_service_min_capacity; staff_min_capacities.push( parseInt(staff_min_capacity) ); } }); max_capacity = Math.max.apply(null, staff_capacities); vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ min_capacity = Math.min.apply(null, staff_min_capacities); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } else { let staff_id = vm.appointment_step_form_data.selected_staff_member_id; if( "" != staff_id ){ let staff_details; vm.bookingpress_staffmembers_details.forEach( (element,index) => { if( element.bookingpress_staffmember_id == staff_id ){ staff_details = element; return false; } }); if( staff_details != "" ){ let staff_service_data = staff_details.assigned_service_price_details[ selected_service_id ]; let staff_service_capacity = staff_service_data.assigned_service_capacity; let staff_service_min_capacity = staff_service_data.assigned_service_min_capacity; vm.appointment_step_form_data.service_max_capacity = parseInt(staff_service_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(staff_service_min_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } } } } else if( 1 != vm.is_staffmember_activated ){ /* vm.all_services_data.forEach( (element, index) => { if( "" == element.service_max_capacity ){ element.service_max_capacity = 1; } if( element.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.service_max_capacity = parseInt( element.service_max_capacity ); return false; } }); */ vm.appointment_step_form_data.service_max_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.max_capacity; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.service_min_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.min_capacity; vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } /** Check if service max capacity > 1 and quantity feature is enabled */ if( vm.is_bring_anyone_with_you_activated == 1 && 1 < vm.appointment_step_form_data.service_max_capacity /*&& this.is_service_loaded_from_url != "1" /* && "true" == is_move_to_next */ ){ is_move_to_next = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "1"; } } if( typeof vm.appointment_step_form_data.cart_items == "undefined" ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { if( 0 > vm.appointment_step_form_data.cart_item_edit_index ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { /** Reputelog - need to check custom service duration with cart add-on while edit appointment from cart */ let cart_edit_index_id = vm.appointment_step_form_data.cart_item_edit_index; let cart_item = vm.appointment_step_form_data.cart_items[ cart_edit_index_id ]; let bookingpress_edit_cart_service_id = typeof cart_item.bookingpress_service_id != "undefined" ?cart_item.bookingpress_service_id:0; if(bookingpress_edit_cart_service_id != selected_service_id){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.cart_items[cart_edit_index_id].enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); }else{ vm.appointment_step_form_data.enable_custom_service_duration = typeof cart_item.enable_custom_service_duration != "undefined" ? cart_item.enable_custom_service_duration : false; vm.appointment_step_form_data.custom_service_duration_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_duration_real_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_real_price = parseFloat( cart_item.custom_service_real_price ); } } } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ vm.bpa_skip_loading_csd_slot = false; } vm.appointment_step_form_data.selected_service = selected_service_id; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; /* vm.appointment_step_form_data.base_price = service_price; */ vm.appointment_step_form_data.base_price_without_currency = service_price_without_currency; if( "" == service_duration_val ){ service_duration_val = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_val; } if( "" == service_duration_unit ){ service_duration_unit = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_unit; } vm.appointment_step_form_data.selected_service_duration = service_duration_val; vm.appointment_step_form_data.selected_service_duration_unit = service_duration_unit; if(vm.previous_selected_tab_id === 1 || vm.previous_selected_tab_id === 2 || vm.current_selected_tab_id === 1){ vm.displayResponsiveCalendar = "1"; } vm.v_calendar_disable_dates = []; vm.bpa_current_selected_date = ""; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); if( "undefined" != typeof vm.is_staffmember_activated && vm.is_staffmember_activated == 1) { if( ( vm.is_staffmember_activated == 1 && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers" ) ) ){ //vm.appointment_step_form_data.bpa_datetime_after_staff_selection_flag = 1; //vm.hide_capacity_text_flag = true; //alert( "inside this 45 "); vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; vm.appointment_step_form_data.bpa_datetime_before_staffselection = 1; } vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ if( (vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection != "true" ) || ( (vm.appointment_step_form_data.hide_service_selection_step == "true" || vm.appointment_step_form_data.hide_service_selection_step == true ) && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 )){ //vm.appointment_step_form_data.bpa_available_staff_member.push(currentValue.bookingpress_staffmember_id); const staffId = currentValue.bookingpress_staffmember_id; if (!vm.appointment_step_form_data.bpa_available_staff_member.includes(staffId)) { vm.appointment_step_form_data.bpa_available_staff_member.push(staffId); } } } }); if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; } } } vm.appointment_step_form_data.store_selected_date = ""; vm.appointment_step_form_data.store_selected_end_date = ""; vm.appointment_step_form_data.store_selected_time = ""; vm.appointment_step_form_data.store_selected_end_time = ""; vm.appointment_step_form_data.store_start_time = ""; vm.appointment_step_form_data.store_end_time = ""; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_end_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; vm.appointment_step_form_data.customer_selected_date = ""; vm.appointment_step_form_data.customer_selected_end_date = ""; vm.appointment_step_form_data.customer_selected_time = ""; vm.appointment_step_form_data.customer_selected_end_time = ""; if(is_move_to_next === "true"){ if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ if( vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name == "cart" ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } var selected_date = vm.appointment_step_form_data.selected_date; var formatted_date = vm.get_formatted_date(selected_date); vm.bookingpress_remove_error_msg(); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }, dayClickedResponsive( day ){ const vm = this; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "1"; vm.isLoadDateTimeCalendar = "1"; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; } else { vm.service_timing = "-1"; } } vm.dayClicked(day); }, dayClicked(day){ const vm = this; let available_dates = vm.v_calendar_available_dates; let dayId = day.id; let dayString = dayId + " 00:00:00"; if( "undefined" == typeof dayString || "undefined" == typeof available_dates || 0 > available_dates.indexOf( dayString ) || vm.bpa_current_selected_date == dayId || ("undefined" != typeof vm.v_calendar_blocked_dates && vm.v_calendar_blocked_dates.includes( day.id ) ) ){ return false; } vm.service_timing = "-2"; vm.appointment_step_form_data.selected_date = dayId; vm.bpa_current_selected_date = dayId; vm.no_timeslot_available = false; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } setTimeout(function(){ vm.service_timing = vm.bookingpress_categories_timeslots( vm.v_calendar_timeslots_data[ dayId ] ); vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; },10); }, onDayKeyPressed(event){ const vm = this; if(event.event.key == "Enter"){ vm.dayClicked(event); setTimeout(function(){ if(typeof vm.$refs.timeSlotItems !== 'undefined'){ vm.$refs.timeSlotItems[0].focus(); } },11); } let page = {month: event.month, year: event.year}; vm.bpaMoveMonth(page); }, onWholeDayKeyPressed(event, day){ const currentDate = new Date(day.id); let newDate; const vm = this; if(event.key == "Enter"){ event.preventDefault(); vm.dayClicked_v2(day); return; } let page = {month: day.month, year: day.year}; vm.bpaMoveMonth(page); switch(event.key) { case 'ArrowRight': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowLeft': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowUp': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 7); vm.moveFocusToDate(newDate, day); break; case 'ArrowDown': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 7); vm.moveFocusToDate(newDate, day); break; } }, moveFocusToDate(date, day) { const vm = this; // Format date to match your day.id format (YYYY-MM-DD) const dateString = date.toISOString().split('T')[0]; // Find the element for this date this.$nextTick(() => { let vc_day_content = document.querySelectorAll(".vc-day .vc-day-content"); vc_day_content.forEach((elm) => { elm.setAttribute("tabindex", "-1"); }); const dateElement = document.getElementsByClassName(`id-${dateString}`); // console.log(dateElement); if (dateElement) { if (vm.$refs.bkp_front_calendar) { vm.$refs.bkp_front_calendar.move(dateString); // vm.$refs.bkp_front_calendar.focusDate(day); } if(dateElement[0]){ setTimeout(() => { let date_span = dateElement[0].querySelector(".bpa_day-select span"); if(date_span){ date_span.setAttribute("tabindex", "0"); date_span.focus(); } }, 200); } } }); }, dayClicked_legacy(day) { const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.get_formatted_date( vm.booking_cal_maxdate ); if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_available_date < day.id || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.get_date_timings( day.id ); }, get_date_timings(current_selected_date = ""){ const vm = this; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; }else{ vm.service_timing = "-2"; } if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if( null == vm.appointment_step_form_data.selected_date ){ vm.appointment_step_form_data.selected_date = new Date("2026-01-16 14:28:54"); } if( current_selected_date == "") { current_selected_date = vm.appointment_step_form_data.selected_date; } vm.appointment_step_form_data.selected_date = current_selected_date; var selected_date = vm.appointment_step_form_data.selected_date; if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(current_selected_date); } let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( selected_date ) ){ let sel_month = selected_date.getMonth() + 1; let sel_year = selected_date.getFullYear(); let sel_date = selected_date.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } selected_date = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = selected_date; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; var selected_service_id = vm.appointment_step_form_data.selected_service; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_get_timings", service_id: selected_service_id, selected_date: selected_date, _wpnonce:bkp_wpnonce_pre_fetch, }; postData.bookingpress_timezone = vm.bookingpress_timezone;postData.bookingpress_selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details;postData.service_extra_details = JSON.stringify( vm.appointment_step_form_data.bookingpress_selected_extra_details );postData.enable_custom_service_duration = vm.appointment_step_form_data.enable_custom_service_duration;postData.custom_service_duration_value = vm.appointment_step_form_data.custom_service_duration_value; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ postData.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.no_timeslot_available = false; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { var set_waiting_time_limit = 1500; if(typeof postData.enable_custom_service_duration != "undefined"){ if(postData.enable_custom_service_duration == true || postData.enable_custom_service_duration == "true"){ set_waiting_time_limit = 0; } } setTimeout(function(){ vm.service_timing = response.data; if( response.data.morning_time.length <= 0 && response.data.afternoon_time.length <= 0 && response.data.evening_time.length <= 0 && response.data.night_time.length <= 0 ){ vm.no_timeslot_available = true; } vm.isLoadTimeLoader = "0"; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if(response.data == ""){ vm.service_timing = null; } }, set_waiting_time_limit); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }.bind(this) ) .catch( function (error) { console.log(error); }); }, selectDisableTiming(time_details){ }, selectTiming(selected_start_time, selected_end_time, store_start_time = "", store_end_time = "", store_selected_date = "" ,formated_start_time = "",formated_end_time = "",time_details = ""){ const vm = this; vm.appointment_step_form_data.selected_start_time = selected_start_time; vm.appointment_step_form_data.selected_end_time = selected_end_time; if( "" != formated_end_time && "" != formated_start_time ) { vm.appointment_step_form_data.selected_formatted_start_time = formated_start_time; vm.appointment_step_form_data.selected_formatted_end_time = formated_end_time; } if( "" != time_details.formatted_start_end_time && "undefined" != time_details.formatted_start_end_time ) { vm.appointment_step_form_data.selected_formatted_start_end_time = time_details.formatted_start_end_time; } if("" != store_start_time && "" != store_end_time && "" != store_selected_date ){ vm.appointment_step_form_data.store_start_time = store_start_time; vm.appointment_step_form_data.store_end_time = store_end_time; vm.appointment_step_form_data.client_offset = vm.bookingpress_timezone_offset; vm.appointment_step_form_data.store_selected_date = store_selected_date; vm.appointment_step_form_data.store_selected_end_date = time_details.selected_end_date || store_selected_date; } vm.appointment_step_form_data.customer_selected_date = time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_end_date = time_details.client_end_date || time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_time = time_details.client_start_time || selected_start_time; vm.appointment_step_form_data.customer_selected_end_time = time_details.client_end_time || selected_end_time; vm.appointment_step_form_data.is_next_day = false; vm.appointment_step_form_data.is_both_next_day = false; if( "undefined" != typeof time_details.is_next_day && true == time_details.is_next_day ){ vm.appointment_step_form_data.is_next_day = true; vm.appointment_step_form_data.next_day_selection_date = time_details.selected_date; vm.appointment_step_form_data.selected_end_date = time_details.selected_end_date; } if( ("undefined" != typeof time_details.is_both_next_day_time && true == time_details.is_both_next_day_time) || "undefined" != typeof time_details.is_both_next_day_time_v2 && true == time_details.is_both_next_day_time_v2 ){ vm.appointment_step_form_data.customer_selected_date = time_details.client_end_date; vm.appointment_step_form_data.display_end_date_on_summary = true; vm.appointment_step_form_data.is_both_next_day = time_details.is_both_next_day_time; vm.appointment_step_form_data.is_both_next_day_v2 = time_details.is_both_next_day_time_v2; vm.appointment_step_form_data.is_server_both_next_day = ( "undefined" != typeof time_details.is_overnight_booking_server ) ? time_details.is_overnight_booking_server : false; vm.appointment_step_form_data.is_customer_both_next_day = time_details.is_both_next_day_time_v2 || false; } let bookingpress_is_anystaff_select = true; if( (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" && vm.bookingpress_sidebar_step_data.service.is_first_step == 1) || ( (vm.appointment_step_form_data.hide_service_selection_step == true || vm.appointment_step_form_data.hide_service_selection_step == "true") && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 && ("true" != vm.appointment_step_form_data.hide_staff_selection ) ) ){ let staffmember_details = vm.bookingpress_staffmembers_details; // change the value anystaff not bookingpress_is_anystaff_select = false; if( "undefined" != typeof time_details.available_staffs ) { staffmember_details.forEach(staff => { staff.is_display_staff = time_details.available_staffs.includes(parseInt(staff.bookingpress_staffmember_id)); }); } else { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; staffmember_details.forEach(staff => { staff.is_display_staff = false; }); } vm.no_staffmember_available = staffmember_details.every(staff => !staff.is_display_staff); vm.appointment_step_form_data.bpa_datetime_after_staffselection = 1; vm.appointment_step_form_data.bpa_after_select_datetime_available_staff = time_details; } if( vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 ){ // change the value anystaff not bookingpress_is_anystaff_select = false; let service_details = vm.bpasortedServices; vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { vm.appointment_step_form_data.is_staff_exists = 1; } //console.log( time_details.unavailable_serivce_ids ); //[ 1 ] // if( "undefined" != typeof time_details.unavailable_serivce_ids ) { //service_details.forEach(service => { //service.is_visible = !time_details.unavailable_serivce_ids.includes( parseInt(service.bookingpress_service_id) ); //}); //} if (typeof time_details.unavailable_serivce_ids !== "undefined") { service_details.forEach(service => { if (time_details.unavailable_serivce_ids.includes( service.bookingpress_service_id ) ) { service.is_visible = false; service.exclude_id = true; } }); } else { service_details.forEach(service => { if( "undefined" != typeof service.exclude_id && service.exclude_id == true ){ service.is_visible = true; } }); } vm.no_service_available = service_details.every( services => !services.is_visible ); if( vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1 ){ vm.appointment_step_form_data.bpa_after_select_service_available_staff = time_details; } if( "undefined" != typeof time_details.available_staffs ){ let available_staffdata = time_details.available_staffs; vm.bpasortedServices.forEach( item => { const hasMatch = Object.keys( item.staff_member_details ).some( key => available_staffdata.includes( Number( key ) ) ); item.is_visible = hasMatch; item.is_visible_with_flag = hasMatch; } ); } } if( "undefined" != typeof time_details.available_staffs && bookingpress_is_anystaff_select && (vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ if( 1 < time_details.available_staffs.length ){ let available_staff_id = time_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } if( vm.bookingpress_staffmembers_details.every(staff => !staff.is_display_staff) ){ vm.is_any_staff_option_enable = 0; } vm.appointment_step_form_data.use_modified_duration = false; if( "undefined" != typeof time_details.use_slot_duration && true == time_details.use_slot_duration && "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && 1 == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ vm.appointment_step_form_data.use_modified_duration = true; let remaining_minutes = time_details.duration_unit_next_break; vm.slot_duration_till_break = remaining_minutes; let allSortedServices = Object.assign( [], vm.bpasortedServices ); let totalHiddenServices = 0; allSortedServices.forEach( (element, index) => { let service_duration_unit = element.bookingpress_service_duration_unit; element.is_visible_with_service_step = true; if( "d" == service_duration_unit ){ element.is_visible_with_service_step = false; totalHiddenServices++; } else { let service_duration = ( "h" == service_duration_unit ) ? parseInt( element.bookingpress_service_duration_val * 60 ) : parseInt( element.bookingpress_service_duration_val ); if( service_duration > remaining_minutes ){ element.is_visible_with_service_step = false; totalHiddenServices++; } } }); vm.bpasortedServices.forEach( (elm, index) => { if( "undefined" != typeof elm.is_hide_with_step && true == elm.is_hide_with_step ){ elm.is_visible = true; } if( "undefined" != typeof allSortedServices[index].is_visible_with_service_step && false == allSortedServices[index].is_visible_with_service_step ){ elm.is_visible = false; elm.is_hide_with_step = true; } }); console.log( vm.bpasortedServices ); console.log( totalHiddenServices ); vm.no_service_available = false; if( vm.bpasortedServices.length == totalHiddenServices ){ vm.no_service_available = true; } } vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); vm.bookingpress_update_timestep_token(); }, resetForm(){ const vm2 = this; vm2.appointment_formdata.appointment_selected_customer = "0"; vm2.appointment_formdata.appointment_selected_service = ""; vm2.appointment_formdata.appointment_booked_date = "2026-01-16"; vm2.appointment_formdata.appointment_booked_time = ""; }, select_service(selected_service_id){ const vm = this; vm.appointment_step_form_data.selected_service = selected_service_id; }, automatic_next_page(next_tab_id){ const vm = this; if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; vm.current_selected_tab_id = parseInt(next_tab_id); vm.bookingpress_remove_error_msg(); var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, next_page(customer_form = "", current_selected_element = "", next_selection_element = ""){ const vm = this; var current_selected_tab = bpa_selected_tab = parseFloat(vm.current_selected_tab_id); vm.previous_selected_tab_id = parseInt(current_selected_tab); if(current_selected_element != undefined && current_selected_element != null){ current_selected_tab = parseInt(current_selected_element); } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); if(current_selected_tab === 1 || vm.previous_selected_tab_id === 1){ vm.is_display_error = "0"; if(vm.appointment_step_form_data.selected_service == "" || vm.appointment_step_form_data.selected_service == undefined || vm.appointment_step_form_data.selected_service == "undefined"){ vm.bookingpress_set_error_msg("Selecteer een dienst om een afspraak te maken."); vm.current_selected_tab_id = 1; return false; }else{ if(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == ""){ vm.bookingpress_set_error_msg("Selecteer een medewerker om verder te gaan"); vm.current_selected_tab_id = 1; return false; }; if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } } }else if(current_selected_tab === 2){ if(current_selected_element != undefined && current_selected_element == 2 && vm.appointment_step_form_data.selected_start_time == "" && bpa_selected_tab == "2" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } if(vm.appointment_step_form_data.selected_service != "" && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.selectDate(vm.appointment_step_form_data.selected_service, vm.appointment_step_form_data.selected_service_name, vm.appointment_step_form_data.selected_service_price, vm.appointment_step_form_data.service_price_without_currency, "true",vm.appointment_step_form_data.selected_service_duration,vm.appointment_step_form_data.selected_service_duration_unit); } if(vm.is_display_error != "1"){ if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } vm.bookingpress_remove_error_msg() }else{ if(vm.is_error_msg == ""){ vm.bookingpress_set_error_msg("Er is iets fout gegaan") } } }else if(current_selected_tab === 3){ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; }else{ vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } } }); } }else{ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } else { vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } }else{ current_selected_tab = 3; } }); } } if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_date != "" ) { vm.get_date_timings(); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.next_selected_tab_id = 3; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } }, previous_page(previous_selection_tab_id = ""){ const vm = this; var current_selected_tab = parseFloat(vm.current_selected_tab_id); if(previous_selection_tab_id != ""){ current_selected_tab = previous_selection_tab_id; }else{ vm.previous_selected_tab_id = parseInt(current_selected_tab); current_selected_tab = current_selected_tab - 1; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(vm.previous_selected_tab_id == "1"){ vm.displayResponsiveCalendar = 1; } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, select_payment_method(payment_method){ const vm = this; vm.appointment_step_form_data.selected_payment_method = payment_method; var bookingpress_allowed_payment_gateways_for_card_fields = []; if( "undefined" == typeof vm.skip_checking_final_step_validation || true != vm.skip_checking_final_step_validation ){ vm.bookingpress_get_final_step_amount(); } ; if(bookingpress_allowed_payment_gateways_for_card_fields.includes(payment_method)){ vm.is_display_card_option = 1; }else{ vm.is_display_card_option = 0; } }, displayCalendar(){ const vm = this; if( "" == vm.appointment_step_form_data.selected_date || ( "undefined" != typeof vm.v_calendar_available_dates && 1 > vm.v_calendar_available_dates.length ) ){ return false; } vm.displayResponsiveCalendar = "1"; }, Change_front_appointment_description(service_id) { const vm = this; vm.services_data.forEach(function(item, index, arr){ if(item.bookingpress_service_id == service_id ){ if(item.display_details_more == 0 && item.display_details_less == 1) { item.display_details_less = 0; item.display_details_more = 1; } else { item.display_details_more = 0; item.display_details_less = 1; } } }); }, bookingpress_phone_country_change_func(bookingpress_country_obj){ const vm = this; var bookingpress_selected_country = bookingpress_country_obj.iso2; vm.appointment_step_form_data.customer_phone_country = bookingpress_selected_country; vm.appointment_step_form_data.customer_phone_dial_code = bookingpress_country_obj.dialCode; let exampleNumber = window.intlTelInputUtils.getExampleNumber( bookingpress_selected_country, true, 1 ); if( typeof vm.bookingpress_phone_default_placeholder == "undefined" && "" != exampleNumber ){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } else if(vm.bookingpress_phone_default_placeholder == "false" && "" != exampleNumber){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } }, bookingpress_phone_country_open( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".el-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); } } } }, bookingpress_phone_country_close( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.customer_phone; console.log("called ... " + phoneValue); if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { console.log("inside this..... one") this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_get_parents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, async bookingpress_disable_date( bpa_selected_service = "", bpa_selected_date = "" ){ let bpa_is_called = false; var bookingpress_is_allow_modify = ""; var bookingpress_staff_loaded_from_url = "0"; this.isLoadTimeLoader = "1"; this.isLoadDateTimeCalendarLoad = "1"; let staff_id = this.appointment_step_form_data.selected_staff_member_id; if( 0 == staff_id ){ staff_id = ""; } this.service_timing = "-3"; if( 0 === this.bookingpress_sidebar_step_data["staffmembers"].is_display_step && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 == this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1); } bpa_is_called = true; } let form_sequence_first; if( "object" == typeof this.appointment_step_form_data.form_sequence ){ form_sequence_first = this.appointment_step_form_data.form_sequence[0]; } else { form_sequence_first = this.appointment_step_form_data.form_sequence; } if( false == bpa_is_called && 1 == this.hide_category_service && "service_selection" == form_sequence_first && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 != this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && false == this.is_staff_member_set_from_url && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && "" == staff_id && "true" == this.appointment_step_form_data.select_any_staffmember ){ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); bpa_is_called = true; } /** for the datetime re-arrange step */ if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_sidebar_step_data["service"].is_first_step == 1 && this.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; } if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_current_tab != this.bookingpress_next_tab && ( "undefined" != typeof this.appointment_step_form_data.any_staff_selected && 1 == this.appointment_step_form_data.any_staff_selected ) ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; this.bookingpress_select_staffmember( "any_staff", 1 ); } let selected_sid = this.appointment_step_form_data.selected_service; if(selected_sid != "" && "undefined" != typeof this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && "" != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && null != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date ) { this.booking_cal_maxdate = this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date; const currentDate = new Date(); const targetDate = new Date(this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date); let diff_in_time = targetDate.getTime() - currentDate.getTime(); let diff_in_days = ( Math.round( diff_in_time / ( 1000 * 3600 * 24 ) ) ) + 1; const bookingpress_period_available_for_booking = 180; if(bookingpress_period_available_for_booking < diff_in_days){ /*If max period avilable is less than service expiry date then set limit for the Max period avilable days*/ this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); } } let use_legacy = "false"; if( "true" == use_legacy ){ this.bookingpress_disable_date_xhr( bpa_selected_service, bpa_selected_date ); } else { this.bookingpress_disable_date_xhr_v2( bpa_selected_service, bpa_selected_date ); } }, bookingpress_update_timestep_token( force_update = false, cart_force_update = false ){ const vm = this; let use_legacy = "false"; let current_tab = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name; if( ( "undefined" == typeof vm.bookingpress_cart_addon && ( ( true == force_update && typeof vm.v_calendar_time_token_data != "undefined" ) || ( "datetime" == vm.bookingpress_sidebar_step_data[ vm.bookingpress_current_tab ].previous_tab_name && "d" != vm.appointment_step_form_data.selected_service_duration_unit && "datetime" != vm.bookingpress_current_tab && "false" == use_legacy ) ) ) ||( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 && ( ( ( "undefined" != vm.is_staffmember_activated && 1 == vm.is_staffmember_activated && vm.appointment_step_form_data.selected_staff_member_id != 0 ) && ( "undefined" != typeof vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_service != 0 ) ) && ( "undefined" != typeof vm.appointment_step_form_data.location_activated && 1 == vm.appointment_step_form_data.location_activated && vm.appointment_step_form_data.selected_location != "" ) || cart_force_update != false ) ) ){ let appointment_selected_date = vm.appointment_step_form_data.store_selected_date || vm.appointment_step_form_data.selected_date; if( "undefined" != typeof vm.appointment_step_form_data.is_next_day && true == vm.appointment_step_form_data.is_next_day && "undefined" != typeof vm.appointment_step_form_data.next_day_selection_date ){ appointment_selected_date = vm.appointment_step_form_data.next_day_selection_date; } let selected_token_data = vm.v_calendar_time_token_data[ appointment_selected_date ][0]; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; }else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_set_timeslot_token", tokenData: selected_token_data, selectedDate: appointment_selected_date, _wpnonce:bkp_wpnonce_pre_fetch }; vm.is_bookingpress_updating_token = true; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.is_bookingpress_updating_token = false; vm.is_bookingpress_token_updated = true; }.bind(this) ) .catch( function (error) { }); } }, bookingpress_working_dates_data( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let is_client_timezone = ""; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; let overnight_booking = ("undefined" != typeof response_data.overnight_booking_dates ) ? response_data.overnight_booking_dates : []; let sorted_working_hours = []; for( let wdate in working_hour_details ){ let x = 0; let n = 0; let is_overnight_booking = overnight_booking.includes( wdate ) || false; let is_overnight_booking_server = is_overnight_booking; let overnight_booking_date = ""; sorted_working_hours[wdate] = working_hour_details[ wdate ]; sorted_working_hours[wdate].sort( (a,b) => { return ( parseInt( a.counter_pos ) < parseInt( b.counter_pos ) ) ? -1 : 1; } ); for( let wh_data of sorted_working_hours[wdate] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.selected_end_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; if( false == is_overnight_booking ){ is_overnight_booking = wp.hooks.applyFilters( "bookingpress_consider_overnight_booking", is_overnight_booking, wh_data ); } let stTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", start_datetime, wh_data, "start", true ); let etTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", end_datetime, wh_data, "end", true ); let updated_wdate; if( "string" == typeof stTimeNew ){ updated_wdate = wdate; } else { updated_wdate = stTimeNew.toISOString().split("T")[0]; } let updated_edate; if( "string" == typeof etTimeNew ){ updated_edate = wh_data.selected_end_date; } else { updated_edate = etTimeNew.toISOString().split("T")[0]; } if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = ( "undefined" != typeof response_data.pre_selected_date && true == response_data.pre_selected_date && "undefined" != typeof vm.open_customer_reschedule_appointment_modal && true == vm.open_customer_reschedule_appointment_modal ) ? response_data.selected_date : updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; if( true == is_overnight_booking && "" == overnight_booking_date ){ overnight_booking_date = updated_wdate; if( "undefined" == typeof updated_working_hour_details[ overnight_booking_date ] ){ updated_working_hour_details[ overnight_booking_date ] = []; } } wh_data.is_both_next_day_time_v2 = false; if( true == is_overnight_booking ){ if( "true" == is_client_timezone ){ wh_data.is_next_day = false; } if( updated_edate > updated_wdate ){ wh_data.is_next_day = true; } if( updated_edate == updated_wdate && updated_wdate > overnight_booking_date ){ wh_data.is_both_next_day_time_v2 = true; wh_data.is_overnight_booking_server = is_overnight_booking_server; wh_data.is_next_day = true; wh_data.client_date = wh_data.client_end_date; } } if( true == wh_data.is_both_next_day_time && wh_data.client_end_date > wh_data.client_date ){ wh_data.client_date = wh_data.client_end_date; } let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + " naar " + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; wh_data.slot_timestamp = new Date( `${wh_data.client_date} ${wh_data.client_start_time}` ).getTime(); if( true == is_overnight_booking ){ if( "undefined" != typeof updated_working_hour_details[ overnight_booking_date ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ overnight_booking_date ] ).length; } updated_working_hour_details[ overnight_booking_date ][x] = wh_data; if( !available_dates.includes( overnight_booking_date + " 00:00:00" ) ){ available_dates.push( overnight_booking_date + " 00:00:00" ); } } else { if( "undefined" != typeof updated_working_hour_details[ updated_wdate ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ updated_wdate ] ).length; } updated_working_hour_details[ updated_wdate ][x] = wh_data; } x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_working_dates_data_legacy( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; for( let wdate in working_hour_details ){ let x = 0; let n = 0; for( let wh_data of working_hour_details[ wdate ] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.store_service_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; let updated_wdate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wdate, wh_data ); let updated_edate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wh_data.selected_end_date, wh_data ); if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + "naar" + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; updated_working_hour_details[ updated_wdate ][x] = wh_data; x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_disable_date_xhr_v2( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; }; let preselect_date = false; if( "" != bpa_selected_date ){ preselect_date = true; } if( "" == bpa_selected_date ){ vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } let startTime = new Date().getTime(); var postData = { action: "bookingpress_fetch_timeslot_data", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, is_preselect: preselect_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { let request_time = new Date().getTime() - startTime; /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; let working_hour_details = response.data.working_details; let selectedDate = response.data.selected_date; let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); let preselected_date = ""; if( "undefined" != typeof response.data.pre_selected_date && true == response.data.pre_selected_date ){ preselected_date = response.data.selected_date; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.appointment_step_form_data.selected_date = ""; selectedDate = ( "" != preselected_date ) ? preselected_date : ( wh_details.selected_date || selectedDate ); vm.v_calendar_available_dates = wh_details.available_dates; vm.v_calendar_timeslots_data = wh_details.updated_working_hour_details; vm.no_timeslot_available = false; let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); if( !v_available_dates_only.includes( selectedDate ) && wh_details.selected_date != selectedDate && wh_details.selected_date != "" ){ selectedDate = wh_details.selected_date; } vm.v_calendar_available_only_date = v_available_dates_only; if( "undefined" != typeof selectedDate && "" != selectedDate ){ (function( $ref_ ){ setTimeout(function(){ vm.appointment_step_form_data.selected_date = selectedDate; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof $ref_.bkp_front_calendar ){ const calendar = $ref_.bkp_front_calendar; try{ calendar.move( selectedDate ); } catch( e ){ console.log( e ); } } if( "undefined" != typeof $ref_.bkp_front_calendar_responsive ){ const calendar_r = $ref_.bkp_front_calendar_responsive; try{ calendar_r.move( selectedDate ); } catch( e ){ console.log( e ); } } },10); })( this.$refs ); } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } /* V-date-picker attributes */ vm.v_calendar_default_label = response.data.max_capacity_capacity; vm.v_calendar_time_token_data = response.data.working_hour_timing_token; if( "undefined" != typeof wh_details.updated_working_hour_details[ selectedDate ] ){ vm.service_timing = vm.bookingpress_categories_timeslots( wh_details.updated_working_hour_details[ selectedDate ] ); } else { vm.service_timing = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; vm.no_timeslot_available = true; } if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } vm.isLoadTimeLoader = "0"; vm.isLoadDateTimeCalendarLoad = "0"; if( "undefined" == typeof response.data.stop_check || false == response.data.stop_check ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, 1 ); } setTimeout(function(){ if( "undefined" != typeof vm.is_bookingpress_token_updated && true == vm.is_bookingpress_token_updated ){ // condition update if( ("undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers") || (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection == 1))) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && "undefined" != typeof vm.appointment_step_form_data.location_activated || 1 != vm.appointment_step_form_data.location_activated && vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "location" ) ){ vm.bookingpress_update_timestep_token( true, true ); } else { vm.bookingpress_update_timestep_token( true ); } } },10); setTimeout(() => { vm.focusFirstDate(); if( "undefined" != typeof working_hour_details && working_hour_details.length == 0){ let focusCancelBtn = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer button"); if(focusCancelBtn !== null){ focusCancelBtn.focus(); } } const unavailable_date_calendar_input = document.querySelector(".el-form-item .bpa-unavailable-popup-datepicker .el-input__inner"); if(unavailable_date_calendar_input !== null){ unavailable_date_calendar_input.focus(); } }, 500); if( "undefined" != typeof selectedDate ){ let selected_date = selectedDate.split(" ")[0]; let timeslot_data = vm.v_calendar_timeslots_data[ selected_date ]; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details( next_month_date = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); if( 4 == counter ){ vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; return false; } else { vm.isHoldBookingRequest = true; } let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; ++counter; counter = wp.hooks.applyFilters( "bookingpress_modify_next_month_check_counter", counter, response.data ); if( "undefined" == typeof response.data.stop_check || response.data.stop_check == false ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, counter ); } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details_single( next_month_date = "", next_month_dates = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; vm.bookingpress_retrieve_future_month_details( next_month_dates, counter ); }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_format_time(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("nl_NL").format(default_time_format) }, bookingpress_categories_timeslots( timeslot_details ){ let afternoon_slot_timings = parseInt( "12" ); let evening_slot_timings = parseInt( "18" ); let night_slot_timings = parseInt( "" ); if( "undefined" == typeof timeslot_details ){ return {}; } let service_timings_data = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; let x = 0; for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && ( "undefined" == typeof timeslot_data.is_next_day || timeslot_data.is_next_day == false) ){ let startHour = parseInt( timeslot_data.start_hour ); if( startHour >= 0 && startHour < afternoon_slot_timings ){ service_timings_data.morning_time.push( timeslot_data ); } else if( startHour >= afternoon_slot_timings && ( "" == evening_slot_timings || startHour < evening_slot_timings ) ){ service_timings_data.afternoon_time.push( timeslot_data ); } else if ( startHour >= evening_slot_timings && ( "" == night_slot_timings || startHour < night_slot_timings ) ){ service_timings_data.evening_time.push( timeslot_data ); } else { service_timings_data.night_time.push( timeslot_data ); } x++; } } if( timeslot_details.length > x ){ for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && "undefined" != typeof timeslot_data.is_next_day && timeslot_data.is_next_day == true ){ let startHour = parseInt( timeslot_data.start_hour ); service_timings_data.night_time.push( timeslot_data ); } } } let sorted_timings_data = {}; for( let timing_item in service_timings_data ){ let timing_details = Object.assign( [], service_timings_data[ timing_item ] ); timing_details.sort( ( a, b ) => { return ( parseInt( a.slot_timestamp ) < parseInt( b.slot_timestamp ) ) ? -1 : 1; }); sorted_timings_data[ timing_item ] = timing_details; } return sorted_timings_data; }, bookingpress_disable_date_xhr( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } var postData = { action: "bookingpress_get_disable_date", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.disabled_dates = JSON.stringify( vm.v_calendar_disable_dates ); postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates = {}; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.service_timing = []; if(response.data.variant == "success" && (response.data.selected_date != undefined && response.data.days_off_disabled_dates != undefined)){ /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; vm.days_off_disabled_dates = ""; /*V-Calendar disabled dates change start*/ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); vm.v_calendar_disable_dates = []; for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } /*V-Calendar disabled dates change end*/ let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } let resp_selected_date = response.data.selected_date; if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; /* V-date-picker attributes */ vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.appointment_step_form_data.selected_date = response.data.selected_date; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof response.data.front_timings ){ vm.service_timing = response.data.front_timings; if( response.data.front_timings.length <= 0 ){ vm.no_timeslot_available = true; } } if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(vm.appointment_step_form_data.selected_date); } vm.isLoadTimeLoader = "0"; if( "undefined" != typeof response.data.empty_front_timings && true == response.data.empty_front_timings ){ vm.isLoadDateTimeCalendarLoad = "1"; vm.appointment_step_form_data.selected_date = response.data.next_available_date; vm.bookingpress_disable_date( bpa_selected_service, response.data.next_available_date ); return; } else { /* Check full day appointments block */ if( false == response.data.prevent_next_month_check ){ let postDataAction = "bookingpress_get_whole_day_appointments"; if( true == response.data.check_for_multiple_days_event ){ postDataAction = "bookingpress_get_whole_day_appointments_multiple_days"; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: postDataAction,days_off_disabled_dates: vm.days_off_disabled_dates, service_id: bpa_selected_service, max_available_year: response.data.max_available_year, max_available_month:response.data.max_available_month, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch, "next_month": response.data.next_month, "next_year": response.data.next_year, "counter": 1 }; postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } postData.appointment_data_obj = JSON.stringify( vm.appointment_step_form_data ); postData.staffmember_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( vm.bookingpress_is_extra_enable == 1 ){ postData.service_extra_details = vm.appointment_step_form_data.bookingpress_selected_extra_details; }; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } setTimeout(function(){ vm.isLoadDateTimeCalendarLoad = "0" },200); } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_daysoff_for_booked_appointment( postData ){ const vm = this; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ).then( function( response ) { vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.isLoadDateTimeCalendarLoad = 0; if(false == response.data.prevent_next_month_check && response.data.counter <= 3 ){ /** Currently data will be checked for next 3 months */ postData.days_off_disabled_dates = vm.days_off_disabled_dates; postData.next_month = response.data.next_month; postData.next_year = response.data.next_year; postData.counter++; if( postData.counter < 4 ){ vm.isHoldBookingRequest = true; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } else { vm.v_calendar_check_month_dates = true; let next_month_year = { "month": parseInt( response.data.next_month ), "year": response.data.next_year, "postData": postData }; vm.v_calendar_next_month_dates = next_month_year; vm.isHoldBookingRequest = false; } /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } else { /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } }); }, bpaMoveMonthResponsive( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); counter = 0 - monthDiff; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, counter ); } setTimeout(() => { vm.focusFirstDate(); }, 500); } } }, bpaMoveMonth( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); let month_ = ( current_month.toString().length == 1 ) ? ( "0" + current_month.toString() ) : current_month; let nextMonthDate = current_year + "-" + month_ + "-01"; counter = 0 - monthDiff; vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details_single( nextMonthDate, vm.v_calendar_next_month_dates, counter ); } } } }, bookingpress_get_all_parent_node_with_overflow_hidden( elem ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { let computed_style = getComputedStyle( elem ); if( computed_style.overflow == "hidden" || computed_style.overflowX == "hidden" || computed_style.overflowY == "hidden" ){ parents.push(elem); } } return parents; }, bookingpress_onload_func(){ const vm = this; vm.current_screen_size = "desktop"; if(window.outerWidth >= 1200){ vm.current_screen_size = "desktop"; }else if(window.outerWidth < 1200 && window.outerWidth >= 768){ vm.current_screen_size = "tablet"; }else if(window.outerWidth < 768){ vm.current_screen_size = "mobile"; } let is_mobile_device = ""; if( "mobile" != vm.current_screen_size && ("true" == is_mobile_device || true == is_mobile_device) ){ vm.current_screen_size = "mobile"; } if(window.innerWidth <= 576){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let parents_with_hidden_overflow = vm.bookingpress_get_all_parent_node_with_overflow_hidden( bookingpress_container ); let apply_overflow = ( parents_with_hidden_overflow.length > 0 ) ? true : false; window.addEventListener("scroll", function(e){ let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky" ; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky"; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.add("--bpa-is-overflow-visible"); } } } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.remove("--bpa-is-overflow-visible"); } } } }); } window.addEventListener("resize", function(e){ if( window.innerWidth <= 576 ){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; bookingpress_scrollBottom = bpa_current_scroll + bookingpress_scrollBottom + bookingpress_scrollTop; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky"; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky" /* Change this string */ } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ } } }); }, bookingpress_step_navigation(current_tab, next_tab, previous_tab, is_strict_validate = 1){ const vm = this; var bookingpress_is_validate = 0; vm.bookingpress_remove_error_msg(); var bookingpress_validate_fields_arr = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validate_fields; if( "staffmembers" == vm.bookingpress_current_tab && "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && true == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ){ is_strict_validate = 0; } if("service" == vm.bookingpress_current_tab){ if( vm.bookingpress_is_extra_enable == "1" && typeof vm.appointment_step_form_data.selected_service != "" ){ let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if(typeof selected_service_data != "undefined") { let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ bpa_selected_service_extra_count++; } } if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count < selected_service_data.bookingpress_min_no_extra_service){ bookingpress_is_validate = 1; let errorMsg = "Please select at least [x] extra service"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_min_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } else if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count > selected_service_data.bookingpress_max_no_extra_service ){ bookingpress_is_validate = 1; let errorMsg = "You can select maximum [x] extra services"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_max_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } } } } if((vm.bookingpress_current_tab == "basic_details") && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } }); if(bookingpress_is_validate == 0 && is_strict_validate == 1){ var customer_form = "appointment_step_form_data"; vm.$refs[customer_form].validate((valid) => { if (!valid) { bookingpress_is_validate = 1; }else{ bookingpress_is_validate = 0; } }); } }else{ if(is_strict_validate == 1){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ if( currentValue == "selected_start_time" && vm.appointment_step_form_data[currentValue] == "" ) { if( vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } else { vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } }); } } if( "service" == current_tab && "service" != vm.bookingpress_current_tab ){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date+"T00:00:00+00:00"; var bookingpress_disable_dates_arr = vm.days_off_disabled_dates.split(","); if(bookingpress_disable_dates_arr.includes(bookingpress_selected_date)){ let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = newDate; } } if( ("basic_details" == current_tab && "service" == vm.bookingpress_current_tab) || ("summary" == current_tab && "service" == vm.bookingpress_current_tab) ){ if(vm.appointment_step_form_data.selected_service_duration_unit != "d"){ if(vm.appointment_step_form_data.selected_start_time == ""){ bookingpress_is_validate = 1; } } } if(bookingpress_is_validate == 0){ vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; let current_selected_tab = vm.bookingpress_current_tab; vm.bookingpress_current_tab = current_tab; vm.bookingpress_next_tab = next_tab; vm.bookngpress_previous_tab = previous_tab; vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; if( "datetime" == current_tab ){ let selected_service_id = vm.appointment_step_form_data.selected_service; vm.bookingpress_disable_date(selected_service_id,vm.appointment_step_form_data.selected_date); } } if( window.innerWidth <= 576 ){ let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ setTimeout(function(){ window.scrollTo({ top: pos, behavior: "smooth", }); }, 500); } } if( "summary" == current_tab && "summary" == vm.bookingpress_current_tab ) { const vm = this; var total_payment_div_count = document.querySelectorAll(".bpa-front-module--pm-body__item").length; if(total_payment_div_count == 1){ var total_payment_div = document.querySelector(".bpa-front-module--pm-body__item"); if( null != total_payment_div && "undefined" != typeof total_payment_div) { vm.prevent_verification_on_load = true; total_payment_div.click(); vm.prevent_verification_on_load = false; } } vm.bookingpress_activate_payment_gateway_total_counter = vm.bookingpress_activate_payment_gateway_counter; if( vm.paypal_payment == "paypal" ){ let total_counter_payment_gateway = vm.bookingpress_activate_payment_gateway_total_counter + 1; vm.bookingpress_activate_payment_gateway_total_counter = total_counter_payment_gateway; } if( total_payment_div_count == 0 && vm.is_only_onsite_enabled == "1" ){ vm.appointment_step_form_data.selected_payment_method = "on-site"; vm.skip_checking_final_step_validation = true; vm.select_payment_method("on-site"); } } if(current_tab == "datetime" || next_tab == "datetime"){ setTimeout(() => { const custom_duration_select = document.querySelector(".bpa-front-module--date-and-time .bpa-custom-duration-select .el-input__inner"); if(custom_duration_select !== null){ custom_duration_select.focus(); } vm.focusFirstDate(); window.is_focused = false; /* const recurring_date_picker = document.querySelector(".bpa-recurring-appointment-head-row .bpa-front-form-control--date-picker .el-input__inner"); if(recurring_date_picker !== null){ recurring_date_picker.focus(); } */ const calendar_btn_mobile = document.querySelector(".bpa-front--dt__ts-sm-back-btn .el-button"); if(calendar_btn_mobile !== null){ calendar_btn_mobile.focus(); } }, 1000); } if(current_tab == "basic_details" || next_tab == "basic_details"){ setTimeout(() => { document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active") ?.querySelector("input:not([readonly]):not([disabled]):not([type='hidden']), select:not([disabled]), textarea:not([readonly]):not([disabled])") ?.focus(); }, 10); } if(next_tab == "summary"){ setTimeout(() => { let find_first_pg = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if(find_first_pg !== null){ find_first_pg.focus(); }else { find_first_pg = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer .summery-book-appointment-btn"); if(find_first_pg !== null){ find_first_pg.focus(); } } }, 10); } if(current_tab == "service" || next_tab == "service"){ setTimeout(() => { let find_first_service = document.querySelector(".bpa-front-module--service-item .bpa-front-si-card"); if(find_first_service !== null){ find_first_service.focus(); } }, 10); } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; }, bookingpress_select_multi_day_range(day = ""){ const vm = this; if(vm.appointment_step_form_data.selected_date){ day = vm.appointment_step_form_data.selected_date; vm.bookingpress_selected_date_range = []; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_end_date = vm.appointment_step_form_data.selected_date; var selected_date = new Date(day); var selected_service_duration = vm.appointment_step_form_data.selected_service_duration; var bookingpress_selected_date_range = []; var new_date = new Date(day + " 00:00:00"); bookingpress_selected_date_range.push(day); for(var i = 1; i < selected_service_duration; i++) { new_date.setDate(new_date.getDate() + 1); var month = "" + (new_date.getMonth() + 1), day = "" + new_date.getDate(), year = new_date.getFullYear(); if (month.length < 2){ month = "0" + month; } if (day.length < 2){ day = "0" + day; } var add_date = [year, month, day].join("-"); bookingpress_selected_date_range.push(add_date); if(i == selected_service_duration-1) { vm.appointment_step_form_data.selected_end_date = add_date; } } if(bookingpress_selected_date_range.length > 0){ vm.bookingpress_selected_date_range = bookingpress_selected_date_range; } } } }, async bookingpress_select_multi_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0){ var vm = this; }, bpa_is_select_multistaff_member(staff_member_id){ var vm = this; return false; }, bpa_search_service( value ){ const vm = this; value = value.toLowerCase(); vm.bpasortedServices.forEach( ( element,index ) =>{ vm.bpasortedServices[index].show_with_search = false; if( element.bookingpress_service_name.toLowerCase().includes( value ) ){ vm.bpasortedServices[index].show_with_search = true; } }); }, bpa_search_staff( value ){ const vm = this; value = value.toLowerCase(); vm.bookingpress_staffmembers_details.forEach( ( element,index ) => { vm.bookingpress_staffmembers_details[index].show_with_staff_search = false; if( (element.bookingpress_staffmember_firstname.toLowerCase().includes( value )) || element.bookingpress_staffmember_lastname.toLowerCase().includes( value ) ){ vm.bookingpress_staffmembers_details[index].show_with_staff_search = true; } }); }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.form_fields.customer_phone; if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_phone_country_open_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-field-main-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); let parent_upper = vm.bookingpress_get_parents( parent[0], ".el-col" ); if( 0 < parent_upper.length && null != parent_upper[0] ){ //parent_upper[0].classList.add("bpa-active-col"); } } } } }, bookingpress_phone_country_close_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bpa_check_space_validation(bpa_input_value,v_modal_data){ var vm = this; if(bpa_input_value.trim() == ""){ vm.appointment_step_form_data["form_fields"][v_modal_data] = ""; return ""; } return bpa_input_value; }, bpa_check_password_validation( bpa_email_value ) { const vm = this; if( "undefined" == typeof vm.appointment_step_form_data.form_fields.customer_password || vm.bpa_check_user_login == 1 ){ return; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_password_validation_check", _wpnonce:bkp_wpnonce_pre_fetch, _email: bpa_email_value }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof response.data.bpa_password_already_exists ){ if( response.data.bpa_password_already_exists == true ){ if(this.$refs.appointment_step_form_data){ this.$refs.appointment_step_form_data.clearValidate("customer_password"); } vm.appointment_step_form_data.bpa_password_already_exists = true; vm.customer_details_rule.customer_password[0].required = false; vm.appointment_step_form_data.bpa_user_email_already_exists = true; vm.appointment_step_form_data.form_fields["customer_password"] = ""; } } else { vm.appointment_step_form_data.bpa_password_already_exists = false; vm.customer_details_rule.customer_password[0].required = true; vm.appointment_step_form_data.bpa_user_email_already_exists = false; } }.bind(this) ) .catch( function (error) { console.log(error); }); }, dayClicked_v2( day ){ const vm = this; vm.dayClicked( day ); vm.bookingpress_select_multi_day_range( day ); let timeslot_data = vm.v_calendar_timeslots_data[ day.id ]; let max_available_date = vm.booking_cal_maxdate; ; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } }, bookingpress_day_click(day){ const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.booking_cal_maxdate; ; let max_date_value = false; if( max_available_date instanceof Date ){ max_date_value = ( max_available_date < ( new Date( day.id ) ) ); } else { max_date_value = ( max_available_date < day.id ); } if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_date_value || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.bookingpress_select_multi_day_range(day); vm.dayClicked( day ); }, bookingpress_get_final_step_amount() { const vm = this; var payment_method = vm.appointment_step_form_data.selected_payment_method; var total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( "" == tax_amount ){ tax_amount = 0; } let total_payable_amount_without_tax = parseFloat(total_payable_amount); if(typeof tax_amount != "undefined"){ total_payable_amount = parseFloat(total_payable_amount) + parseFloat(tax_amount); } let is_cart_addon = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ) { /* total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; */ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; total_payable_amount_without_tax = parseFloat(total_payable_amount); if( typeof tax_amount != "undefined" ){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( tax_amount ); if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.tax_amount_before_coupon_without_currency != "undefined"){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.tax_amount_before_coupon_without_currency ); } } } /* console.trace( "INSIDE CART CONDITION ===>>> " + vm.appointment_step_form_data.bookingpress_cart_total ); */ is_cart_addon = true; } var coupon_code = vm.appointment_step_form_data.coupon_code; var selected_service = vm.appointment_step_form_data.selected_service; var selected_staff_member_id = vm.appointment_step_form_data.selected_staff_member_id; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } var subtotal_price = total_payable_amount; /* apply coupon */ if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != ""){ if(typeof vm.appointment_step_form_data.coupon_discount_amount != "undefined" && vm.appointment_step_form_data.coupon_discount_amount != 0){ if(vm.appointment_step_form_data.tax_percentage != ""){ var tax_percentage = parseFloat(vm.appointment_step_form_data.tax_percentage); if(typeof vm.appointment_step_form_data.tax_price_display_options != "undefined" && vm.appointment_step_form_data.tax_price_display_options == "include_taxes"){ tax_amount = (total_payable_amount_without_tax * tax_percentage) / (100+tax_percentage); total_payable_amount_without_tax = total_payable_amount_without_tax - tax_amount; } } let f_payable_amount = total_payable_amount_without_tax - vm.appointment_step_form_data.coupon_discount_amount; if( 0 == f_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = f_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( f_payable_amount, true ); } var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( typeof tax_amount != "undefined" ){ vm.appointment_step_form_data.total_payable_amount = vm.appointment_step_form_data.total_payable_amount + tax_amount; }else { tax_amount = 0; } vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount, true ); vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount ); subtotal_price = f_payable_amount + tax_amount; if( "undefined" != vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency && 1 == vm.bookingpress_is_deposit_payment_activate ){ if( vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price" || vm.appointment_step_form_data.bookingpress_deposit_payment_method == "allow_customer_to_pay_full_amount" ){ if(is_cart_addon){ let cart_items_deposite_amount = 0; vm.appointment_step_form_data.cart_items.forEach((current_cart_item, cart_item_index) => { cart_items_deposite_amount = parseFloat(cart_items_deposite_amount) + parseFloat(current_cart_item.bookingpress_deposit_price); }); if( cart_items_deposite_amount < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } }else{ if( vm.appointment_step_form_data.deposit_payment_type == "fixed") { if( vm.appointment_step_form_data.deposit_payment_amount < subtotal_price ){ vm.appointment_step_form_data.bookingpress_remove_deposit = 0; vm.appointment_step_form_data.calculate_deposit = true; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } else if( vm.appointment_step_form_data.deposit_payment_type == "percentage") { let bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(vm.appointment_step_form_data.deposit_payment_amount) / 100); if( bookingpress_deposit_amt < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } } } } } } else { vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } vm.appointment_step_form_data.bookingpress_remove_deposit = 0; subtotal_price = total_payable_amount; } } /* If deposit payment module enabled then calculate deposit amount */ var deposit_method = vm.appointment_step_form_data.bookingpress_deposit_payment_method; var deposit_type = vm.appointment_step_form_data.deposit_payment_type; var deposit_value = vm.appointment_step_form_data.deposit_payment_amount; var bookingpress_deposit_amt = 0; var bookingpress_deposit_due_amt = 0; if(payment_method != "" && 1 == vm.bookingpress_is_deposit_payment_activate && vm.appointment_step_form_data.bookingpress_remove_deposit != 1 && ( "undefined" == typeof vm.appointment_step_form_data.is_clubbed_service || false == vm.appointment_step_form_data.is_clubbed_service ) ){ var bookingpress_check_deposit_avaliable = false; if( 1 == is_cart_addon ){ if (typeof vm.appointment_step_form_data.cart_items != "undefined"){ var cart_items_temp_data = vm.appointment_step_form_data.cart_items; if(cart_items_temp_data != "" && cart_items_temp_data.length != 0){ cart_items_temp_data.forEach(function(currentValue, index, arr){ if (typeof cart_items_temp_data[index].bookingpress_deposit_due_amount != "undefined"){ if(parseFloat(cart_items_temp_data[index].bookingpress_deposit_due_amount) > 0){ bookingpress_check_deposit_avaliable = true; } } }); } } }else{ if(typeof vm.appointment_step_form_data.deposit_payment_type != undefined && typeof vm.appointment_step_form_data.deposit_payment_amount_percentage != undefined){ if(vm.appointment_step_form_data.deposit_payment_type == "percentage" && vm.appointment_step_form_data.deposit_payment_amount_percentage == 100){ bookingpress_check_deposit_avaliable = false; }else{ bookingpress_check_deposit_avaliable = true; } } } if(bookingpress_check_deposit_avaliable && payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "") && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ if(deposit_method == "deposit_or_full_price"){ //if( true == is_cart_addon ){ //subtotal_price = total_payable_amount_without_tax; /* vm.bookingpress_price_with_currency_symbol( total_payable_amount_without_tax, true ); */ //} if(deposit_type == "percentage"){ bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(deposit_value) / 100); bookingpress_deposit_amt = bookingpress_deposit_amt; /* vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); */ bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } else if(deposit_type == "fixed") { bookingpress_deposit_amt = deposit_value; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } } else if(deposit_method == "allow_customer_to_pay_full_amount") { bookingpress_deposit_amt = subtotal_price; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } let total_payable_amount_temp = bookingpress_deposit_amt; if(typeof vm.appointment_step_form_data.tip_amount != undefined && vm.appointment_step_form_data.tip_amount> 0 && vm.appointment_step_form_data.bookingpress_deposit_total != undefined && vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price"){ total_payable_amount_temp = parseFloat(vm.appointment_step_form_data.bookingpress_deposit_total) + parseFloat(vm.appointment_step_form_data.tip_amount); } vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp ); if( 0 == total_payable_amount_temp ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount_temp; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp, true ); } /* 26 April 2023 changes */ if( 1 == is_cart_addon ){ if( "allow_customer_to_pay_full_amount" == deposit_method ){ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bookingpress_deposit_due_amt + tax_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt + tax_amount ); } else { if( 1 == vm.is_tax_activated ){ /* let tax_method = vm.appointment_step_form_data.tax_price_display_options; */ /* if( "exclude_taxes" == tax_method ){ */ let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); } else { vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } else { let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); }else{ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } } } /* 26 April 2023 changes */ } else { vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = bookingpress_deposit_amt; vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); if( 0 == subtotal_price ){ vm.appointment_step_form_data.total_payable_amount = subtotal_price; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( subtotal_price, true ); } if(payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "")){ var bookingpress_is_recurring_appointment_active = false; if(typeof vm.appointment_step_form_data.recurring_appointments != "undefined"){ if(vm.appointment_step_form_data.is_recurring_appointments == true || vm.appointment_step_form_data.is_recurring_appointments == "true"){ bookingpress_is_recurring_appointment_active = true; } } if( 1 == is_cart_addon && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = total_payable_amount; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); } if(bookingpress_is_recurring_appointment_active && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = subtotal_price; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = 0; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol(0); } } } } if(vm.appointment_step_form_data.selected_payment_method != " - " && vm.appointment_step_form_data.selected_payment_method != ""){ vm.appointment_step_form_data.selected_payment_method_org = vm.appointment_step_form_data.selected_payment_method; } var paypal_payment_method_type = "lagacy"; if(vm.appointment_step_form_data.total_payable_amount == 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { var final_document_divnew = document.getElementById("paypal-button-container"); vm.show_paypal_popup_button = "false"; if(final_document_divnew){ document.getElementById("paypal-button-container").style.display = "none"; } } else if(vm.appointment_step_form_data.total_payable_amount != 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { vm.show_paypal_popup_button = "true"; document.getElementById("paypal-button-container").style.display = "block"; vm.appointment_step_form_data.selected_payment_method = vm.appointment_step_form_data.selected_payment_method_org; } if( "undefined" == typeof vm.prevent_verification_on_load || false == vm.prevent_verification_on_load ){ this.bookingpress_verify_total_payment_amount(); } }, bookingpress_verify_total_payment_amount_v2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; } }.bind(this) ) .catch( function (error) { }); }, bookingpress_verify_total_payment_amount(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } vm.bkp_processing_token = true; let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; vm.bkp_processing_token = false; } if( vm.bkp_process_booking == true ){ vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { }); }, bookingpress_recalculate_payable_amount(){ return false; const vm = this; var bookingpress_recalculate_data = {}; bookingpress_recalculate_data.action = "bookingpress_recalculate_appointment_data"; bookingpress_recalculate_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_recalculate_data._wpnonce = bkp_wpnonce_pre_fetch; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ bookingpress_recalculate_data.client_timezone_offset = vm.bookingpress_timezone_offset; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ bookingpress_recalculate_data.client_dst_timezone = vm.bookingpress_dst_timezone; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_recalculate_data ) ) .then( function (response) { vm.appointment_step_form_data = response.data.appointment_data }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error) }); }, bookingpress_apply_coupon_code(final_call = false){ const vm = this; vm.coupon_apply_loader = "1"; var bookingpress_apply_coupon_data = {}; bookingpress_apply_coupon_data.action = "bookingpress_apply_coupon_code"; bookingpress_apply_coupon_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_apply_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_apply_coupon_data ) ) .then( function (response) { vm.coupon_apply_loader = "0"; vm.coupon_applied_status = response.data.variant; if(response.data.variant == "error"){ vm.coupon_code_msg = response.data.msg; vm.appointment_step_form_data.coupon_discount_amount = 0; /* for the coupon code error display */ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "flex"; } }else{ vm.coupon_code_msg = response.data.msg; vm.coupon_discounted_amount = "-" + response.data.discounted_amount; vm.bpa_coupon_apply_disabled = 1; vm.appointment_step_form_data.applied_coupon_res = { "coupon_data": response.data.coupon_data }; } vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; if(response.data.coupon_discount_amount > 0 ) { vm.appointment_step_form_data.bookingpress_temp_subtotal = response.data.bookingpress_temp_subtotal; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = response.data.bookingpress_temp_subtotal_with_currency; vm.appointment_step_form_data.coupon_discount_amount = response.data.coupon_discount_amount; vm.appointment_step_form_data.coupon_discount_amount_with_currecny = response.data.coupon_discount_amount_with_currecny; if( typeof response.data.tax_amount != "undefined" ){ vm.appointment_step_form_data.tax_amount_before_coupon = vm.appointment_step_form_data.tax_amount; vm.appointment_step_form_data.tax_amount_before_coupon_without_currency = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount = response.data.tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.total_payable_amount_with_currency; vm.appointment_step_form_data.calculated_tax_amount_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = response.data.tax_amount; } if( 0 == response.data.total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = response.data.total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( response.data.total_payable_amount, true ); } } vm.bookingpress_get_final_step_amount(); }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); }, bookingpress_remove_coupon_code(final_call = false){ const vm = this; let bookingpress_remove_coupon_data = { action: "bookingpress_remove_coupon_code", coupon_code: vm.appointment_step_form_data.coupon_code, }; let bkp_wpnonce_pre = "4ac51a523d"; let bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_remove_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_remove_coupon_data ) ) .then( function (response) { }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); vm.appointment_step_form_data.coupon_code = ""; vm.appointment_step_form_data.applied_coupon_res = ""; vm.coupon_code_msg = ""; /* vm.bookingpress_recalculate_payable_amount() */ vm.bpa_coupon_apply_disabled = 0; vm.coupon_applied_status = "error"; vm.coupon_discounted_amount = ""; vm.appointment_step_form_data.coupon_discount_amount = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = ""; if(typeof vm.appointment_step_form_data.tax_amount_before_coupon != "undefined") { vm.appointment_step_form_data.tax_amount = vm.appointment_step_form_data.tax_amount_before_coupon; vm.appointment_step_form_data.tax_amount_without_currency = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.calculated_tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon; } vm.bookingpress_get_final_step_amount(); }, generateSpamCaptchav2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_generate_spam_captcha", _wpnonce:bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.variant != "error" && (response.data.captcha_val != "" && response.data.captcha_val != undefined)){ }else{ var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch!="undefined" && bkp_wpnonce_pre_fetch!=null && response.data.updated_nonce!=""){ document.getElementById("_wpnonce").value = response.data.updated_nonce; } else { vm.$notify({ title: response.data.title, message: response.data.msg, type: response.data.variant, customClass: "error_notification" }); } if( "undefined" != typeof response.data.updated_ics_nonce && "" != response.data.updated_ics_nonce && null != document.getElementById( "bpa_ics_nonce" ) ){ document.getElementById( "bpa_ics_nonce" ).value = response.data.updated_ics_nonce; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, async bookingpress_render_thankyou_content(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; await vm.generateSpamCaptchav2(); var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_render_thankyou_content", bookingpress_uniq_id: vm.appointment_step_form_data.bookingpress_uniq_id, _wpnonce:bkp_wpnonce_pre_fetch }; if( "undefined" != typeof vm.load_synchronized_thankyou_page && true == vm.load_synchronized_thankyou_page ){ return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; const link = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item a"); const button = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item button"); // Focus on whichever element exists (prioritizing the link if both exist) if (link) { link.focus(); } else if (button) { button.focus(); } },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } else { axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } }, checkBeforeBookProAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_pro_before_book_appointment", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, bookingpress_book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; /* for the coupon code error hide start */ if( 1 == vm2.is_coupon_activated ){ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "none"; } } /* for the coupon code error hide end */ vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if( "undefined" != typeof vm2.bkp_processing_token && true == vm2.bkp_processing_token ){ vm2.bkp_process_booking = true; return false; } if(vm2.is_display_error != "1"){ /* vm2.appointment_step_form_data.service_timing = vm2.service_timing */ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_book_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.bkp_process_booking = false; var bookingpress_redirection_mode = "external_redirection"; if(bookingpress_redirection_mode == "external_redirection"){ if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else{ vm2.bookingpress_remove_error_msg(); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } setTimeout(function(){ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },2000); }else{ var bookingpress_uniq_id = vm2.appointment_step_form_data.bookingpress_uniq_id; if( "undefined" != typeof wp.hooks ){ wp.hooks.doAction("bookingpress_after_book_appointment"); } if(response.data.variant != "error"){ vm2.bookingpress_render_thankyou_content(); vm2.bookingpress_remove_error_msg(); if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "1"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "0"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "block"; document.getElementById("bpa-thankyou-screen-div").style.display = "none"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed == "undefined"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else{ vm2.appointment_step_form_data.is_transaction_completed = 1; document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; vm2.appointment_step_form_data.is_transaction_completed = ""; vm2.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } } } }.bind(this) ) .catch( function (error) { let errorText = ("undefined" != typeof error.response.statusText ) ? error.response.statusText : error; vm2.bookingpress_set_error_msg( error.response.status + " " + errorText); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, inputFormat() { let text = this.appointment_step_form_data.card_number.split(" ").join(""); /* this.cardVdid is not formated in 4 spaces */ this.cardVadid = text; if (text.length > 0) { /* regExp 4 in 4 number add an space between */ text = text.match(new RegExp(/.{1,4}/, "g")).join(" ") /* accept only numbers */ .replace(new RegExp(/[^\d]/, "ig"), " "); } /* this.appointment_step_form_data.card_number is formated on 4 spaces */ this.appointment_step_form_data.card_number = text; /* after formatd they callback cardType for choose a type of the card */ this.GetCardType(this.cardVadid); }, /* loop for the next 9 years for expire data on credit card */ expirationDate() { let yearNow = new Date().getFullYear(); for (let i = yearNow; i < yearNow + this.timeToExpire; i++) { this.years.push({ year: i }); } }, validCreditCard(value) { let inputValidate = document.getElementById("cardNumber"); /* luhn algorithm */ let numCheck = 0, bEven = false; value = value.toString().replace(new RegExp(/\D/g, "")); for (let n = value.length - 1; n >= 0; n--) { let cDigit = value.charAt(n), digit = parseInt(cDigit, 10); if (bEven && (digit *= 2) > 9) digit -= 9; numCheck += digit; bEven = !bEven; } let len = value.length; /* true: return valid number */ /* this.cardType return true if have an valid number on regx array */ if (numCheck % 10 === 0 && len === 16 && this.cardType) { inputValidate.classList.remove("notValid"); inputValidate.classList.add("valid"); this.isBookingDisabled = false; } /* false: return not valid number */ else if (!(numCheck % 10 === 0) && len === 16) { inputValidate.classList.remove("valid"); inputValidate.classList.add("notValid"); this.isBookingDisabled = true; /* if not have number on input */ } else { inputValidate.classList.remove("valid"); inputValidate.classList.remove("notValid"); this.isBookingDisabled = false; } }, /* get the name of the card name */ GetCardType(number) { this.regx.forEach((item) => { if (number.match(item.re) != null) { this.cardType = item.logo; /* cClass add a class with the name of cardName to manipulate with css */ this.cClass = item.name.toLowerCase(); } else if (!number) { this.cardType = ""; this.cClass = ""; } }); /* after choose a cardtype return the number for the luhn algorithm */ this.validCreditCard(number); }, /* mouse down on btn */ mouseDw() { this.btnClassName = "btn__active"; }, /* mouse up on btn */ mouseUp() { this.btnClassName = ""; }, blr() { let cr = document.getElementsByClassName("card--credit__card")[0]; if( null != cr && "undefined" != typeof cr.classList ){ cr.classList.remove("cvv-active") } }, async bookingpress_set_timezone(){ const vm = this; var bookingpress_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let clientTimezoneOffset = new Date().getTimezoneOffset(); /** get client timezone offset in minutes from UTC 0. If client is in UTC -10:00 timezone, then this line will return 600 minutes. If timezone is in daylight saving timezone then it will return 540 minutes ( 09:00 hours ) */ let client_timezone_offset = -1 * ( clientTimezoneOffset / 60 ); /** converted minutes into hours - returns -2 */ let offset_minute = client_timezone_offset % 1; /** Retrieve remaining minutes in case if the minutes falls with decimal numbers */ let final_offset = clientTimezoneOffset; /* hours + "" + minute; /** concate the hours and minutes */ vm.bookingpress_timezone = bookingpress_timezone; vm.bookingpress_timezone_offset = final_offset; vm.appointment_step_form_data.selected_date = vm.get_formatted_date( new Date() ); let is_dst_time = 0; let current_datetime = new Date(); let jan1 = new Date( current_datetime.getFullYear(), 0, 1, 0, 0, 0, 0 ); let temp = jan1.toGMTString(); let jan2 = new Date( temp.substring(0, temp.lastIndexOf(" ") - 1 ) ); let std_tz_offset = ( jan1 - jan2 ) / ( 1000 * 60 * 60 ); let june1 = new Date(current_datetime.getFullYear(), 6, 1, 0, 0, 0, 0); temp = june1.toGMTString(); let june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); let daylight_time_offset = (june1 - june2) / (1000 * 60 * 60); if( std_tz_offset != daylight_time_offset ){ is_dst_time = 1; } vm.bookingpress_dst_timezone = is_dst_time; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var bookingpress_postdata = { action: "bookingpress_set_clients_timezone", clients_timezone: bookingpress_timezone, _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_postdata ) ) .then( function (response){ } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_calculate_service_addons_price(service_id, service_name = "", service_price = "", service_price_without_currency = ""){}, bookingpress_calculate_service_addons_price_legacy(service_id, service_name = "", service_price = "", service_price_without_currency = ""){ const vm = this; vm.appointment_step_form_data.selected_service = service_id; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if(service_name != "" && service_price != "" && service_price_without_currency != ""){ vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; } var postData = { action: "bookingpress_calculate_service_addons_price", selected_service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if(vm.appointment_step_form_data.selected_service == service_id){ vm.appointment_step_form_data.selected_service_price = response.data.selected_service_total_price; vm.appointment_step_form_data.total_payable_amount = response.data.price_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.price_with_currency; vm.appointment_step_form_data.service_price_without_currency = response.data.price_without_currency; if(response.data.is_tax_calculated == 1){ vm.appointment_step_form_data.tax_amount = response.data.tax_amount; if(typeof vm.appointment_step_form_data.tax_amount_without_currency != "undefined") { vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; } } } } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_modify_front_dates_as_service(){ const vm = this; var service_id = vm.appointment_step_form_data.selected_service; if(vm.is_loaded_service_disabled_dates !== "undefined" && vm.is_loaded_service_disabled_dates != service_id){ vm.appointment_step_form_data.selected_date = vm.appointment_step_form_data.default_selected_date; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_change_front_calendar_dates", service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ /* vm.days_off_disabled_dates = response.data.disabled_dates */ vm.appointment_step_form_data.selected_date = response.data.next_selected_date; vm.is_loaded_service_disabled_dates = service_id; } } .bind( this ) ) .catch( function (error) { console.log(error); }); } }, bookingpress_hide_show_extra_description(bookingpress_extra_service_id){ const vm = this; let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ].service_extras; let selected_extra = selected_service_data[ bookingpress_extra_service_id ]; if( "undefined" != typeof selected_extra ){ if( "0" == selected_extra.bookingpress_is_display_description ){ selected_extra.bookingpress_is_display_description = "1"; } else { selected_extra.bookingpress_is_display_description = "0"; } } }, bookingpress_select_any_staffmember(){ const vm = this; let step_data = vm.bookingpress_sidebar_step_data["staffmembers"]; vm.appointment_step_form_data.select_any_staffmember = "true"; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; vm.appointment_step_form_data.selected_staff_member_id = 0; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = true; if( vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 && "undefined" != typeof vm.appointment_step_form_data.bpa_after_select_datetime_available_staff ){ let time_details_arr = vm.appointment_step_form_data.bpa_after_select_datetime_available_staff; if( 1 < time_details_arr.available_staffs.length ){ let available_staff_id = time_details_arr.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details_arr ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; if( ("undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1) && ("undefined" != typeof time_details.happy_hour_data ) ) { vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details_arr.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } else { if( "service" == step_data.next_tab_name && vm.bookingpress_sidebar_step_data[step_data.next_tab_name].is_display_step == 1 ){ vm.appointment_step_form_data.selected_service = ""; } vm.appointment_step_form_data.bpa_all_available_staff_member = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" && vm.appointment_step_form_data.selected_service == "" && vm.appointment_step_form_data.select_any_staffmember && vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected == true){ vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime = 1; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ vm.appointment_step_form_data.bpa_all_available_staff_member.push( currentValue.bookingpress_staffmember_id ); }); } for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; } else { vm.bpasortedServices[x].is_visible = false; } } } vm.bookingpress_step_navigation(step_data.next_tab_name, step_data.next_tab_name, step_data.previous_tab_name, 0); }, async bookingpress_select_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0, event){ if(event){ event.preventDefault(); if(event.key === "Enter"){ if(event.target.classList.contains("bpa-front-staff-rat-cb__item")){ return; } } } const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined" && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1 ) ){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.appointment_step_form_data.bpa_available_staffwise_service = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" ){ vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; } if( (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && "datetime" == vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name && vm.appointment_step_form_data.selected_service == "") && ( "undefined" == typeof vm.is_multi_staffmember_activate && vm.is_multi_staffmember_activate != 1 ) || ( "service" == vm.bookingpress_sidebar_step_data.datetime.next_tab_name && vm.appointment_step_form_data.selected_service == "" && (vm.appointment_step_form_data.hide_staff_selection == "true" || vm.appointment_step_form_data.hide_staff_selection == true)) ){ vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; let service_data_arr = vm.bookingpress_all_services_data; if (vm.bookingpress_staffmembers_details.length === 1) { selected_staffmember_id = vm.bookingpress_staffmembers_details[0].bookingpress_staffmember_id; } if( "any_staff" != selected_staffmember_id ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if( "undefined" != typeof service_arr.assigned_staffmembers ) { if (service_arr.assigned_staffmembers.includes(selected_staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); } } } } if( "any_staff" == selected_staffmember_id && "undefined" != vm.appointment_step_form_data.happy_hours_activated && 1 == vm.appointment_step_form_data.happy_hours_activated ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if ("undefined" != typeof service_arr.assigned_staffmembers) { for (let i = 0; i < vm.appointment_step_form_data.bpa_all_available_staff_member.length; i++) { let staffmember_id = vm.appointment_step_form_data.bpa_all_available_staff_member[i]; if (service_arr.assigned_staffmembers.includes(staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); break; } } } } } } let service_id = vm.appointment_step_form_data.selected_service; let service_data = vm.bookingpress_all_services_data[ service_id ]; let use_legacy_any_staff = false; if( selected_staffmember_id == "any_staff" && "undefined" != typeof service_data && "undefined" != typeof service_data.bookingpress_service_duration_unit && "d" == service_data.bookingpress_service_duration_unit ){ use_legacy_any_staff = true; } vm.appointment_step_form_data.any_staff_selected = 0; if( true == use_legacy_any_staff ){ return await vm.bookingpress_select_staffmember_legacy( selected_staffmember_id, is_any_staff_option_selected ); } else if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.any_staff_selected = 1; if( "" != vm.appointment_step_form_data.selected_service ){ vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } let assigned_staffs = []; service_data.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); let choose_from_url = false; let assigned_updated_staffs = []; if( 0 < bookingpress_is_selected_staff_from_url && 0 < assigned_staffs.length ){ let staff_id_from_url = bookingpress_is_selected_staff_from_url; if( assigned_staffs.includes( staff_id_from_url ) ){ assigned_staffs = [staff_id_from_url]; choose_from_url = true; } } if( 1 == assigned_staffs.length ){ vm.appointment_step_form_data.any_staff_selected = 0; let selected_staffmember_id = ( true == choose_from_url ) ? assigned_staffs[0] : service_data.assigned_staffmembers[0]; /*Added for applying selected staff memebr price */ let service_staff_details = service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); /*Added for applying selected staff memebr price */ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.hide_capacity_text_flag = false; } else { vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; } } else { if( "service" == vm.bookingpress_current_tab ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; let assigned_staffs = []; for (let x in vm.bpasortedServices) { let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && false == elm.is_disabled ){ elm.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if ("" == first_service_category) { first_service_category = elm.bookingpress_category_id; } } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; let hidden_category_for_staff = []; for (let ci in vm.service_categories) { let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; /* if (category_staff.indexOf(response.data.staffmember_id.toString()) < 0) { hidden_category_for_staff.push(category_id); } */ } if ("" != first_service_category) { for (let c in vm.bookingpress_all_categories) { vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if (current_category.category_id == first_service_category) { vm.bpa_select_category(current_category.category_id, current_category.category_name); } else { if (hidden_category_for_staff.indexOf(current_category.category_id.toString()) > -1) { vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } } vm.hide_capacity_text_flag = false; } } else { vm.hide_capacity_text_flag = false; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.available_staffs = []; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; if( vm.is_bring_anyone_with_you_activated == 1 ){ let service_min_capacity = selected_service_data.staff_member_details[ selected_staffmember_id].bookingpress_min_service_capacity; if( service_min_capacity != "undefined" && vm.appointment_step_form_data.bookingpress_selected_bring_members < service_min_capacity ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); } } let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let consider_staff_price = true; if( ( typeof vm.appointment_step_form_data.bpa_datetime_after_staffselection !== "undefined" && vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 ) && ( typeof vm.appointment_step_form_data.is_happy_hours_applied !== "undefined" && vm.appointment_step_form_data.is_happy_hours_applied == 1 ) ) { consider_staff_price = false; } if ( true == consider_staff_price ) { let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } } let step_data = "staffmembers"; let f = 0; let is_club_staff = "0"; if(typeof vm.appointment_step_form_data.is_club_staff != "undefined" && vm.appointment_step_form_data.is_club_staff == "1"){ is_club_staff = "1"; } if( "staffmembers" == vm.bookingpress_current_tab ){ if(is_club_staff == "0"){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, async bookingpress_select_staffmember_legacy(selected_staffmember_id, is_any_staff_option_selected = 0){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined"){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_any_staffmember_id", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.bookingpress_repeat_custom_form_fields( vm.appointment_step_form_data.selected_service ); } } else { postData.selected_bring_members = 1; } return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if( 1 > response.data.staffmember_id ){ for( let s in vm.bookingpress_staffmembers_details ){ let staffmember_details = vm.bookingpress_staffmembers_details[s]; let staffmember_selected_services = staffmember_details.assigned_service_details.includes(vm.appointment_step_form_data.selected_service); if( staffmember_selected_services ){ let staffmember_id = staffmember_details.bookingpress_staffmember_id; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( staffmember_id ) < 0 ){ response.data.staffmember_id = staffmember_id; } } } } vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let set_service_visibility = false; if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } else { if( "staffmembers" == vm.bookingpress_current_tab && "" != vm.appointment_step_form_data.selected_staff_member_id ){ set_service_visibility = true; } } if( "service" == vm.bookingpress_current_tab || true == set_service_visibility ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( response.data.staffmember_id.toString() ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } if( "" != first_service_category ){ for( let c of vm.service_categories ){ if( c.bookingpress_category_id == first_service_category ){ vm.bpa_select_category( c.bookingpress_category_id, c.bookingpress_category_name ); break; } } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( response.data.staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; /* vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); */ } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( response.data.staffmember_id ); } } vm.bpa_select_category( "" ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }else{ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } let step_data = "staffmembers"; let f = 0; if( "staffmembers" == vm.bookingpress_current_tab ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ){ const vm = this; /** Enable Bring Any one if the service has only 1 capacity but the selected staff has more that 1 capacity */ let is_bring_anone_displayed = document.querySelectorAll(".--bpa-sao-guest-module"); if( "" == selected_staffmember_id || 1 > selected_staffmember_id ){ return false; } let selected_service = vm.appointment_step_form_data.selected_service; if( "" == selected_service ){ return false; } let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; if( staffmember_id == selected_staffmember_id ){ let assigned_service_price_list = current_staffmember.assigned_service_price_details; let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( "undefined" == typeof vm.bookingpress_bring_anyone_with_you_details[selected_service] ){ vm.bookingpress_bring_anyone_with_you_details[selected_service] = { "bookingpress_service_id": selected_service, "bookingpress_service_max_capacity": parseInt(max_capacity), "bookingpress_service_min_capacity": parseInt(min_capacity), }; } else { vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_max_capacity = parseInt(max_capacity); vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_min_capacity = parseInt(min_capacity); } vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); } } }, bookingpress_is_in_viewport(element) { const rect = element.getBoundingClientRect(); return ( rect.bottom > 0 && rect.right > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight) && rect.left < (window.innerWidth || document.documentElement.clientWidth) ); }, bookingpress_close_extra_drawer(){ const vm = this; if( "undefined" != typeof vm.bpa_show_extras_drawer && false == vm.bpa_show_extras_drawer ){ return; } let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_focus = document.getElementById("bap-service-" + selected_service); const target = document.querySelector(".bpa-front-dc--service-body"); if(selected_service_focus && this.bookingpress_is_in_viewport(target)){ selected_service_focus.focus(); } vm.appointment_step_form_data.selected_service = ""; vm.appointment_step_form_data.selected_service_name = ""; vm.appointment_step_form_data.selected_service_price = ""; vm.appointment_step_form_data.service_price_without_currency = ""; if( "" != selected_service ){ let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_extras = ( "undefined" != typeof selected_service_data.service_extras ) ? selected_service_data.service_extras : false; if( false != service_extras ){ for( let se in service_extras ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_selected_qty = 1; } } } vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); /** reset bring anyone details */ if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = 1; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; } }, bookingpress_get_service_capacity(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } const vm = this; var postData = { action: "bookingpress_get_service_max_capacity", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.appointment_step_form_data.service_max_capacity = response.data.max_capacity } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_service_advance_see_less(){ const vm = this; vm.service_advance_see_less = "1"; vm.bookingpress_close_extra_drawer(); }, bookingpress_load_more_extras(){ const vm = this; if(vm.is_load_more_extras == "0"){ vm.is_load_more_extras = "1"; }else{ vm.is_load_more_extras = "0"; } }, bpa_focus_select_elm( $el ){ const vm = this; setTimeout(function(){ let elm = $el.querySelector(".el-input.is-focus");// .el-input.is-focus"); let parentNode = vm.BPAGetParents( elm, ".bpa-bd-fields--sel-container" ); if( parentNode.length > 0 ){ let firstParent = parentNode[0]; firstParent.classList.add( "bpa-sel--focus" ); } },100); }, bpa_remove_focus_select_elm($el){ let elm = document.querySelector( ".bpa-sel--focus" ); }, bookingpress_selectpicker_set_position( flag ){ const vm = this; if( true == flag ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( document.querySelector(".bpa-focused-select") != null && is_admin_bar_visible ) { setTimeout(function(){ let top_pos = document.querySelector(".bpa-focused-select").style.top; top_pos = parseInt( top_pos.replace("px","") ); document.querySelector(".bpa-focused-select").style.top = ( top_pos + 32 ) + "px"; },10); } if( document.querySelector(".bpa-focused-select") != null ) { setTimeout(function(){ const allselectcontainer = document.querySelectorAll(".bpa-bd-fields--sel-container"); if(typeof allselectcontainer != "undefined"){ var has_added = false; allselectcontainer.forEach((selcontItem) => { var questyle = selcontItem.querySelector(".bpa-focused-select"); if(typeof questyle != "undefined"){ const display = window.getComputedStyle(questyle).display; if(display != "none" && !has_added){ selcontItem.classList.add( "bpa-sel--focus" ); has_added = true; } } }); } },100); } } if( false == flag ){ if( document.querySelector(".bpa-bd-fields--sel-container") != null ) { let elm = document.querySelector(".bpa-bd-fields--sel-container") const range_inputs = document.querySelectorAll(".bpa-bd-fields--sel-container"); for (const range_input of range_inputs) { range_input.classList.remove( "bpa-sel--focus" ); } } } }, bookingpress_set_datepicker_position( event ){ let popperElm = document.querySelector(".bpa-custom-datepicker"); if( popperElm != null ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( is_admin_bar_visible ){ setTimeout(function(){ let top_pos = popperElm.style.top; top_pos = parseInt( top_pos.replace("px","") ); popperElm.style.top = ( top_pos + 32 ) + "px"; },10); } } }, bookingpress_get_service_categories_from_staffmembers(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_service_cat_details", staffmember_id: vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.service_categories = response.data.service_categories_data; var bookingpress_first_cat_id = response.data.first_cat_id; vm.services_data = []; setTimeout(function(){ vm.selectStepCategory(bookingpress_first_cat_id); }, 500); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_update_staffmember_data( number_of_guests, selected_service_id = "" ){ const vm = this; vm.bookingpress_disabled_staffmember = []; let selected_service = vm.appointment_step_form_data.selected_service; if( selected_service == "" || ( (selected_service_id != "") && (selected_service != selected_service_id) ) ){ selected_service = selected_service_id; } let guests_count = number_of_guests - 1; let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = true; let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; let assigned_service_price_list = current_staffmember.assigned_service_price_details; if( "undefined" != typeof assigned_service_price_list[ selected_service ] ){ let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; if( max_capacity < (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } if( vm.is_bring_anyone_with_you_activated == "1" ){ let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( min_capacity > (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } } } } }, bookingpress_close_extra_drawer_on_mouseup(){ const vm = this; window.addEventListener( "mouseup", function(e){ if( null != document.querySelector(".bpa-front-dc--service-body") ){ let div = document.querySelector(".bpa-front-dc--service-body"); let scrollbarWidth = div.offsetWidth - div.clientWidth; let scrollbarHeight = div.offsetHeight - div.clientHeight; let isVerticalScrollbarClick = (e.offsetX >= div.clientWidth && e.offsetX <= div.offsetWidth ); let isHorizontalScrollbarClick = e.offsetY >= div.clientHeight; if (scrollbarWidth > 0 && isVerticalScrollbarClick) { return; } } let elem = e.target; let htmlWidth = document.querySelector("html").offsetWidth; if( htmlWidth < e.clientX ){ return; } let parentNode = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options" ); let parentNodeBawy = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options-popper" ); let is_mob = false; let bpa_parent_container = document.querySelector( ".bpa-frontend-main-container" ); let is_visible = true; if( null != bpa_parent_container && 1 > bpa_parent_container.offsetWidth ){ is_visible = false; } if( parentNode.length < 1 && parentNodeBawy.length < 1 && "true" == vm.bookingpress_open_extras_drawer && "service" == vm.bookingpress_current_tab && "true" == vm.bookingpress_open_extras_drawer && true == is_visible ){ let allow_close_drawer = wp.hooks.applyFilters( "bpa_allow_close_draer", true, is_visible, elem, parentNode, parentNodeBawy ); if( true == allow_close_drawer ){ let mob_extra = document.querySelector( ".bpa-fm--service__advance-options.--bpa-is-mob" ); if( mob_extra == null ){ vm.bookingpress_close_extra_drawer(); } else { let mob_pos = mob_extra.getBoundingClientRect(); if( mob_pos.width == 0 && mob_pos.height == 0 ){ vm.bookingpress_close_extra_drawer(); } } } } }); }, BPAGetParents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, bookingpress_get_formatted_datetime(event,field_meta_key,is_time_enabled) { if(event != null){ if(is_time_enabled == true) { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_datetime(event); } else { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_date(event); } } }, openExtraServicePopover() { // Access the popover methods directly const vm = this; this.$nextTick( () =>{ vm.$refs.extra_service_desc_popover.doToggle(); }); }, openRecurringSessionPopover() { const vm = this; this.$nextTick( () =>{ // Access the popover methods directly vm.$refs.recurring_session_desc_popover.doToggle(); }); }, BPACustomerFileUpload(response, file, fileList){ const vm = this; let ref = response.reference; if( response.error == 1 ){ vm.$refs[ ref ][0].$options.parent.validateMessage = response.msg; vm.$refs[ ref ][0].$options.parent.validateState = "error"; vm.$refs[ ref ][0].clearFiles(); } else { vm.$refs[ref][0].$options.parent.validateMessage = ""; vm.$refs[ref][0].$options.parent.validateState = ""; const uploadUrl = response.upload_url; const fileRef = response.file_ref; if (Array.isArray(vm.appointment_step_form_data[fileRef])) { vm.appointment_step_form_data[fileRef].push(uploadUrl); } else if (vm.appointment_step_form_data[fileRef]) { vm.appointment_step_form_data[fileRef] = [ vm.appointment_step_form_data[fileRef], uploadUrl, ]; } else { vm.appointment_step_form_data[fileRef] = [uploadUrl]; } vm.appointment_step_form_data.form_fields[fileRef] = vm.appointment_step_form_data[fileRef]; } }, BPACustomerFileUploadError(err, file, fileList){ /** Need to handle error but currently no error is reaching to this function */ if( file.status == "fail" ){ console.log( err ); } }, BPACustomerhandleFileExceed(files, fileList ) { const vm = this; vm.bookingpress_set_error_msg( vm.appointment_step_form_data.bpa_fileupload_max_limit_reach_msg ); }, BPACustomerFileUploadRemove( file, fileList ){ const vm = this; let response = file.response; vm.appointment_step_form_data[ response.file_ref ] = ""; vm.appointment_step_form_data.form_fields[ response.file_ref ] = ""; let postData = { action:"bpa_remove_form_file", _wpnonce: "4ac51a523d", uploaded_file_name: response.upload_file_name }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function( response ){ }).catch( function( error ){ }); }, BPAConvertBytesToMB( bytes){ return (bytes / (1024 * 1024)).toFixed(0); }, bookingpress_reset_selected_timeslot_data(){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && "1" == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ return; } vm.appointment_step_form_data.selected_start_time = ""; }, bookingpress_reset_custom_duration_data() { const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } ; }, bookingpress_step_navigator( current_tab, next_tab, previous_tab ){ let vm = this; let is_strict_validate = false; let current_selected_tab = vm.bookingpress_current_tab; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( current_selected_tab ); /** Current Tab Position */ let selected_tab_pos = sidebar_keys.indexOf( current_tab ); /** Clicked Tab Position */ if( selected_tab_pos < current_tab_pos ){ vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab, 0 ); } else { vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab ); } }, bookingpress_change_service_extras_event( is_checked ){ const vm = this; }, bookingpress_change_service_extras_qty( is_checked ){ const vm = this; vm.$forceUpdate(); }, bookingpress_set_extra_service_error_msg(error_msg){ const vm = this; vm.is_display_extra_service_error = 1; vm.extra_service_error_msg = error_msg; setTimeout(function(){ vm.bookingpress_remove_extra_service_error_msg(); },6000); }, bookingpress_remove_extra_service_error_msg(){ const vm = this; vm.is_display_extra_service_error = "0"; vm.extra_service_error_msg = ""; }, get_formatted_date(iso_date){ if( true == /(\d{2})\T/.test( iso_date ) ){ let date_time_arr = iso_date.split("T"); return date_time_arr[0]; } var __date = new Date(iso_date); var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date; }, get_formatted_datetime(iso_date) { var __date = new Date(iso_date); var hour = __date.getHours(); var minute = __date.getMinutes(); var second = __date.getSeconds(); if (minute < 10) { minute = "0" + minute; } if (second < 10) { second = "0" + second; } var formatted_time = hour + ":" + minute + ":" + second; var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date+" "+formatted_time; }, bookingpress_set_error_msg(error_msg){ const vm = this; let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } vm.is_display_error = "1"; vm.is_error_msg = error_msg; const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ window.scrollTo({ top: pos, behavior: "smooth", }); } setTimeout(function(){ vm.bookingpress_remove_error_msg(); },6000); }, bookingpress_remove_error_msg(){ const vm = this; vm.is_display_error = "0"; vm.is_error_msg = ""; }, checkBeforeBookAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_before_book_appointment",_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if(vm2.is_display_error != "1"){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_save_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; if(response.data.variant == "redirect"){ vm2.bookingpress_remove_error_msg(); vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); }else{ vm2.bookingpress_remove_error_msg(); } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } }.bind(this) ) .catch( function (error) { vm2.bookingpress_set_error_msg(error); }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, bpa_check_browser(){ const vm = this; let userAgent = navigator.userAgent; let browserName; if(userAgent.match(/edg/i)){ browserName = "edge"; } else if(userAgent.match(/opr\//i)){ browserName = "opera"; } else if(userAgent.match(/chrome|chromium|crios/i)){ browserName = "chrome"; } else if(userAgent.match(/firefox|fxios/i)) { browserName = "firefox"; } else if(userAgent.match(/safari/i)) { browserName = "safari"; } else { browserName="Unknown"; } vm.browser_details = browserName; }, bpa_check_browser_version(){ const vm = this; var objappVersion = navigator.appVersion; var browserAgent = navigator.userAgent; var browserName = navigator.appName; var browserVersion = "" + parseFloat(navigator.appVersion); var browserMajorVersion = parseInt(navigator.appVersion, 10); var Offset, OffsetVersion, ix; /* For Chrome */ if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) { browserName = "Chrome"; browserVersion = browserAgent.substring(OffsetVersion + 7); } /* For Microsoft internet explorer */ else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) { browserName = "Microsoft Internet Explorer"; browserVersion = browserAgent.substring(OffsetVersion + 5); } /* For Firefox */ else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) { browserName = "Firefox"; } /* For Safari */ else if ((OffsetVersion = browserAgent.indexOf("Safari")) != -1) { browserName = "Safari"; browserVersion = browserAgent.substring(OffsetVersion + 7); if ((OffsetVersion = browserAgent.indexOf("Version")) != -1) browserVersion = browserAgent.substring(OffsetVersion + 8); } /* For other browser "name/version" is at the end of userAgent */ else if ((Offset = browserAgent.lastIndexOf(" ") + 1) < (OffsetVersion = browserAgent.lastIndexOf("/"))) { browserName = browserAgent.substring(Offset, OffsetVersion); browserVersion = browserAgent.substring(OffsetVersion + 1); if (browserName.toLowerCase() == browserName.toUpperCase()) { browserName = navigator.appName; } } /* Trimming the fullVersion string at */ /* semicolon/space if present */ if ((ix = browserVersion.indexOf(";")) != -1) browserVersion = browserVersion.substring(0, ix); if ((ix = browserVersion.indexOf(" ")) != -1) browserVersion = browserVersion.substring(0, ix); browserMajorVersion = parseInt("" + browserVersion, 10); if (isNaN(browserMajorVersion)) { browserVersion = "" + parseFloat(navigator.appVersion); browserMajorVersion = parseInt(navigator.appVersion, 10); } vm.browser_version = browserMajorVersion; }, focusFirstService(){ if(app.current_screen_size == "desktop"){ this.$nextTick( () =>{ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); if( focusableItems.length ){ focusableItems[0].focus(); } }); } }, focusFirstDate(){ var firstDate = document.querySelectorAll(".vc-day.in-month [aria-disabled=false]"); if(firstDate){ if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); }else if(firstDate.length == 0){ firstDate = document.querySelectorAll(".vc-day.in-month .vc-day-content:not(.is-disabled)"); if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); } } } }, focusFirstTimeSlot(){ this.$nextTick( () =>{ if( this.$refs.timeSlotItems.length ){ this.$refs.timeSlotItems[0].focus(); } }); }, focustFirstCategory(){ this.$nextTick(() => { if (this.$refs.categoryItem.length) { this.$refs.categoryItem[0].focus(); } }); }, bpa_handle_service_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); // Update with your actual class let currentIndex = -1; let itemsPerRow = 2; if(window.outerWidth >= 1200){ itemsPerRow = 2; }else if(window.outerWidth < 950){ itemsPerRow = 1; } const active_container = document.querySelector(".bpa-front-module--service").offsetWidth; if(active_container && active_container.offsetWidth < 800){ itemsPerRow = 1; } // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); // bpa-fm--service__advance-options __bpa-is-active setTimeout(() => { let extraServiceFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-service-extras .el-checkbox__inner"); let recurringFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-guest-module .el-input__inner"); if(extraServiceFocus !== null){ extraServiceFocus.focus(); }else if (recurringFocus !== null){ recurringFocus.focus(); } }, 100); } else if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + itemsPerRow) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - itemsPerRow + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); this.bpaMoveFocusToPreviousElement( this.$refs.servicesGroup ); } }, bpa_handle_timeslot_keypress(index, event) { const groups = document.querySelectorAll(".bpa-front--dt__ts-body--row"); // row/groups const focusableItems = document.querySelectorAll(".bpa-front--dt__ts-body .bpa-front--dt__ts-body--item"); // Items let currentIndex = -1; let currentGroupIndex = -1; let itemIndexInGroup = -1; // Find the currently focused item and its group focusableItems.forEach((item, idx) => { if (item === document.activeElement) { currentIndex = idx; // Find which group this item belongs to for (let i = 0; i < groups.length; i++) { if (groups[i].contains(item)) { currentGroupIndex = i; // Find position within the group const groupItems = groups[i].querySelectorAll(".bpa-front--dt__ts-body--item"); for (let j = 0; j < groupItems.length; j++) { if (groupItems[j] === item) { itemIndexInGroup = j; break; } } break; } } } }); if (currentIndex === -1) return; // No focusable item is selected const itemsPerRow = 2; // Based on your screenshot showing 2 time slots per row if (event.key === "ArrowRight") { event.preventDefault(); // If at the end of the group, move to the first item of the next group if (itemIndexInGroup === groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length - 1) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Move to the next item in the same group let nextIndex = currentIndex + 1; if (nextIndex < focusableItems.length) { focusableItems[nextIndex].focus(); } } } else if (event.key === "ArrowDown") { event.preventDefault(); const itemsInCurrentGroup = groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length; const rowsInCurrentGroup = Math.ceil(itemsInCurrentGroup / itemsPerRow); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup >= rowsInCurrentGroup - 1 || currentIndex + itemsPerRow >= focusableItems.length) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group let nextIndex = currentIndex + itemsPerRow; const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if(itemsInCurrentGroup % 2 == 0 && nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); }else if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Stay in the same group, move down a row let nextIndex = currentIndex + itemsPerRow; if(currentIndex == itemsInCurrentGroup - 2 && itemsInCurrentGroup % 2 == 1 && (nextIndex + 1) < focusableItems.length){ focusableItems[nextIndex + 1].focus(); }else if(nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); } // if(nextIndex < focusableItems.length) } } else if (event.key === "ArrowLeft") { event.preventDefault(); // If at the beginning of the group, move to the last item of the previous group if (itemIndexInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { prevGroupItems[prevGroupItems.length - 1].focus(); } } } else { // Move to the previous item in the same group let prevIndex = currentIndex - 1; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if (event.key === "ArrowUp") { event.preventDefault(); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { let howMuchMinus = 1; if(itemIndexInGroup == 0 && prevGroupItems.length % 2 == 0){ howMuchMinus = 2; }else if(itemIndexInGroup == 1 && prevGroupItems.length % 2 == 0){ howMuchMinus = 1; }else{ if(itemIndexInGroup == 1 && prevGroupItems.length > 2){ howMuchMinus = 2; } } prevGroupItems[prevGroupItems.length - howMuchMinus].focus(); } } } else { // Stay in the same group, move up a row const prevIndex = currentIndex - itemsPerRow; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if ("Tab" == event.key && event.shiftKey && 0 === currentIndex) { event.preventDefault(); this.bpaMoveFocusToPreviousElement(this.$refs.timeSlotItemsGroup); } }, bpa_handle_category_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-cat-items-wrapper .bpa-front-ci-pill"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = document.querySelector(".bpa_search_service_data_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } this.bpaMoveFocusToPreviousElement( this.$refs.categoryGroup, focusElement ); } }, bpa_handle_pg_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-fm--bs__deposit-payment-module .bpa-front-form-control--radio"); if(focusElement == null){ focusElement = document.querySelector(".bpa-fm--bs-amount-item .bpa-is-tip-edit-icon svg"); if(focusElement == null){ focusElement = document.querySelectorAll(".bpa-fm--bs__coupon-module-textbox .el-button"); focusElement = focusElement[focusElement.length - 1]; if(focusElement == null){ focusElement = document.querySelector(".bpa-front-summary-content__lg .bpa--summary_service_datetime_count_name"); } } } this.bpaMoveFocusToPreviousElement( this.$refs.paymentGatewayItemsGroup, focusElement ); } }, focusFirstPaymentGateway(){ this.$nextTick( () =>{ const paymentGatewayItem = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if( paymentGatewayItem !== null ){ paymentGatewayItem.focus(); } }); }, bpaMoveFocusToPreviousElement( currentElement, focusOnElement = false ){ if(focusOnElement){ focusOnElement.focus(); return; } const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex - 1].focus(); } }, bpaMoveFocusToNextElement( currentElement ){ const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex + 1].focus(); } }, bpa_select_category( selected_cat_id, selected_cat_name, total_services, total_category){ const vm = this; let category_id = parseInt( selected_cat_id ); vm.isLoadClass = 0; if( 0 == selected_cat_id ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } else { if( vm.bookingpress_all_services_data != "" ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; let current_category = current_service.bookingpress_category_id; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = false; if( current_category == category_id ){ vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; } if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } } setTimeout(function(){ vm.isLoadClass = 1; },1); vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; }, selectStepCategory(selected_cat_id, selected_cat_name = "", total_services = 0, total_category="", display_warn = true ){ if( true == display_warn ){ console.trace("Deprecated step category function " ); console.warn("selectStepCategory function is deprecated. Please update the BookingPress lite, premium, and add-ons to the latest version"); } const vm = this; vm.isLoadClass = 0; if( 0 == selected_cat_id ){ let temp_services = []; let m = 0; for( let x in vm.bpa_services_data_from_categories ){ let service_details = vm.bpa_services_data_from_categories[x]; for( let n in service_details ){ let current_service = service_details[n]; if( "undefined" != typeof current_service.bookingpress_staffmembers ){ let selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( current_service.bookingpress_staffmembers.includes( selected_staffmember ) && selected_staffmember != ""){ var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position); temp_services[bookingpress_service_pos] = current_service; } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } m++; } } var bpa_temp_services= []; temp_services.sort(); for( let n in temp_services ){ if(temp_services[n] != "") { bpa_temp_services[n] = temp_services[n]; } } vm.services_data = bpa_temp_services.sort(); } else { vm.services_data = vm.bpa_services_data_from_categories[selected_cat_id]; if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } } vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; setTimeout(function(){ vm.isLoadClass = 1; },1); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } }, async selectDate(selected_service_id, service_name, service_price, service_price_without_currency, is_move_to_next, service_duration_val = "",service_duration_unit = ""){ const vm = this; if(typeof vm.appointment_step_form_data.cart_items == "undefined" && (selected_service_id != vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_date != "")){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date; let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } if( ("undefined" != typeof vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ) && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ vm.appointment_step_form_data.selected_date = newDate; vm.appointment_step_form_data.selected_end_date = newDate; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } } this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && 1 == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ) { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; } if( "undefined" != typeof vm.appointment_step_form_data.selected_staff_member_id && "" != vm.appointment_step_form_data.selected_staff_member_id ){ let current_selected_tab = "service"; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( "service" ); let selected_tab_pos = sidebar_keys.indexOf( "staffmembers" ); if( "undefined" == typeof vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url || vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == "0" ){ if( selected_tab_pos > current_tab_pos || sidebar_step_data.staffmembers.is_display_step == 0 ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } } } let is_drawer_opened = "false"; let use_drawer_flag = false; /* vm.appointment_step_form_data.is_extra_service_exists = "0"; if( vm.bookingpress_is_extra_enable == 1){ use_drawer_flag = true; for( let i in vm.appointment_step_form_data.bookingpress_selected_extra_details ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_selected_qty = 1; } for( let n in vm.all_services_data ){ let element = vm.all_services_data[n]; if( element.bookingpress_service_id == selected_service_id && element.extra_service_counter > 0 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; vm.isServiceLoadTimeLoader = "1"; } } } */ if( vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection == "false" && vm.appointment_step_form_data.form_sequence[0] != "staff_selection" ){ for( let index in vm.bookingpress_staffmembers_details ){ let currentValue = vm.bookingpress_staffmembers_details[index]; vm.bookingpress_staffmembers_details[index].is_display_staff = false; if("undefined" != typeof currentValue.assigned_service_price_details && "undefined" != typeof currentValue.assigned_service_price_details[selected_service_id] && "public" == vm.bookingpress_staffmembers_details[index].staffmember_visibility ){ vm.bookingpress_staffmembers_details[index].is_display_staff = true; } } if( "" == vm.appointment_step_form_data.selected_staff_member_id || 0 == vm.appointment_step_form_data.selected_staff_member_id ){ let next_tabname = vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name; if( "datetime" == next_tabname && 1 == vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate ){ vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate = 0; } } /* let is_staff_exists = 0; let total_staff = 0; let total_private_staff = 0; let deselect_staff = false; let staff_id = vm.appointment_step_form_data.selected_staff_member_id; let available_staffs = []; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(selected_service_id)){ if( currentValue.staffmember_visibility == "private" ){ total_private_staff++; } total_staff++; is_staff_exists = 1; available_staffs.push( currentValue.bookingpress_staffmember_id ); } }); if( available_staffs.length > 0 && staff_id > 0 && !available_staffs.includes( staff_id ) ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } if( 1 == is_staff_exists ){ if( total_staff == total_private_staff ){ await vm.bookingpress_select_staffmember("any_staff", 1); is_staff_exists = 0; vm.appointment_step_form_data.is_staff_exists = 0; vm.appointment_step_form_data.hide_staff_selection = "true"; } else { vm.isServiceLoadTimeLoader = "1"; is_drawer_opened = "true"; vm.appointment_step_form_data.is_staff_exists = 1; } } */ } if( ("false" == is_move_to_next && "false" == is_drawer_opened) ){ if( (vm.bookingpress_cart_addon == 1 && vm.appointment_step_form_data.hide_service_selection_step == "true" ) ){ is_move_to_next = "false"; } else { is_move_to_next = "true"; } } if( "true" == is_move_to_next && "d" == vm.appointment_step_form_data.selected_service_duration_unit ){ if( 0 == vm.bookingpress_sidebar_step_data.service.is_display_step && "datetime" == vm.bookingpress_current_tab ){ is_move_to_next = false; } } let current_selected_service = vm.appointment_step_form_data.selected_service; vm.bookingpress_remove_extra_service_error_msg(); if( "undefined" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && "" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && vm.bookingpress_sidebar_step_data.service.is_display_step == 1 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); const params = new URLSearchParams(window.location.search); if (params.get("book_again") == 1 && vm.is_staffmember_activated == 1) { document.body.classList.remove("--bpa-open-advance-drawer"); } vm.isServiceLoadTimeLoader = "0"; vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; is_move_to_next = false; } else { vm.appointment_step_form_data.is_extra_service_exists = "0"; } if( selected_service_id != "" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ){ let sidebar_step_data = vm.bookingpress_sidebar_step_data; /** Check if staff member is enabled, visible and after service step */ if( vm.is_staffmember_activated == 1){ if( sidebar_step_data.staffmembers.is_first_step == 0 ){ let max_capacity = 1; let min_capacity = 1; let staffmember_details = vm.bookingpress_staffmembers_details; let staff_capacities = []; let staff_min_capacities = []; staffmember_details.forEach( (element,index) =>{ if( "undefined" == typeof element.assigned_service_price_details[ selected_service_id ] ){ return true; } let staff_services = element.assigned_service_price_details[ selected_service_id ]; let staff_capacity = staff_services.assigned_service_capacity; staff_capacities.push( parseInt(staff_capacity) ); if( vm.is_bring_anyone_with_you_activated == 1 ){ let staff_min_capacity = staff_services.assigned_service_min_capacity; staff_min_capacities.push( parseInt(staff_min_capacity) ); } }); max_capacity = Math.max.apply(null, staff_capacities); vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ min_capacity = Math.min.apply(null, staff_min_capacities); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } else { let staff_id = vm.appointment_step_form_data.selected_staff_member_id; if( "" != staff_id ){ let staff_details; vm.bookingpress_staffmembers_details.forEach( (element,index) => { if( element.bookingpress_staffmember_id == staff_id ){ staff_details = element; return false; } }); if( staff_details != "" ){ let staff_service_data = staff_details.assigned_service_price_details[ selected_service_id ]; let staff_service_capacity = staff_service_data.assigned_service_capacity; let staff_service_min_capacity = staff_service_data.assigned_service_min_capacity; vm.appointment_step_form_data.service_max_capacity = parseInt(staff_service_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(staff_service_min_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } } } } else if( 1 != vm.is_staffmember_activated ){ /* vm.all_services_data.forEach( (element, index) => { if( "" == element.service_max_capacity ){ element.service_max_capacity = 1; } if( element.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.service_max_capacity = parseInt( element.service_max_capacity ); return false; } }); */ vm.appointment_step_form_data.service_max_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.max_capacity; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.service_min_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.min_capacity; vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } /** Check if service max capacity > 1 and quantity feature is enabled */ if( vm.is_bring_anyone_with_you_activated == 1 && 1 < vm.appointment_step_form_data.service_max_capacity /*&& this.is_service_loaded_from_url != "1" /* && "true" == is_move_to_next */ ){ is_move_to_next = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "1"; } } if( typeof vm.appointment_step_form_data.cart_items == "undefined" ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { if( 0 > vm.appointment_step_form_data.cart_item_edit_index ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { /** Reputelog - need to check custom service duration with cart add-on while edit appointment from cart */ let cart_edit_index_id = vm.appointment_step_form_data.cart_item_edit_index; let cart_item = vm.appointment_step_form_data.cart_items[ cart_edit_index_id ]; let bookingpress_edit_cart_service_id = typeof cart_item.bookingpress_service_id != "undefined" ?cart_item.bookingpress_service_id:0; if(bookingpress_edit_cart_service_id != selected_service_id){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.cart_items[cart_edit_index_id].enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); }else{ vm.appointment_step_form_data.enable_custom_service_duration = typeof cart_item.enable_custom_service_duration != "undefined" ? cart_item.enable_custom_service_duration : false; vm.appointment_step_form_data.custom_service_duration_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_duration_real_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_real_price = parseFloat( cart_item.custom_service_real_price ); } } } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ vm.bpa_skip_loading_csd_slot = false; } vm.appointment_step_form_data.selected_service = selected_service_id; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; /* vm.appointment_step_form_data.base_price = service_price; */ vm.appointment_step_form_data.base_price_without_currency = service_price_without_currency; if( "" == service_duration_val ){ service_duration_val = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_val; } if( "" == service_duration_unit ){ service_duration_unit = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_unit; } vm.appointment_step_form_data.selected_service_duration = service_duration_val; vm.appointment_step_form_data.selected_service_duration_unit = service_duration_unit; if(vm.previous_selected_tab_id === 1 || vm.previous_selected_tab_id === 2 || vm.current_selected_tab_id === 1){ vm.displayResponsiveCalendar = "1"; } vm.v_calendar_disable_dates = []; vm.bpa_current_selected_date = ""; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); if( "undefined" != typeof vm.is_staffmember_activated && vm.is_staffmember_activated == 1) { if( ( vm.is_staffmember_activated == 1 && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers" ) ) ){ //vm.appointment_step_form_data.bpa_datetime_after_staff_selection_flag = 1; //vm.hide_capacity_text_flag = true; //alert( "inside this 45 "); vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; vm.appointment_step_form_data.bpa_datetime_before_staffselection = 1; } vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ if( (vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection != "true" ) || ( (vm.appointment_step_form_data.hide_service_selection_step == "true" || vm.appointment_step_form_data.hide_service_selection_step == true ) && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 )){ //vm.appointment_step_form_data.bpa_available_staff_member.push(currentValue.bookingpress_staffmember_id); const staffId = currentValue.bookingpress_staffmember_id; if (!vm.appointment_step_form_data.bpa_available_staff_member.includes(staffId)) { vm.appointment_step_form_data.bpa_available_staff_member.push(staffId); } } } }); if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; } } } vm.appointment_step_form_data.store_selected_date = ""; vm.appointment_step_form_data.store_selected_end_date = ""; vm.appointment_step_form_data.store_selected_time = ""; vm.appointment_step_form_data.store_selected_end_time = ""; vm.appointment_step_form_data.store_start_time = ""; vm.appointment_step_form_data.store_end_time = ""; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_end_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; vm.appointment_step_form_data.customer_selected_date = ""; vm.appointment_step_form_data.customer_selected_end_date = ""; vm.appointment_step_form_data.customer_selected_time = ""; vm.appointment_step_form_data.customer_selected_end_time = ""; if(is_move_to_next === "true"){ if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ if( vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name == "cart" ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } var selected_date = vm.appointment_step_form_data.selected_date; var formatted_date = vm.get_formatted_date(selected_date); vm.bookingpress_remove_error_msg(); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }, dayClickedResponsive( day ){ const vm = this; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "1"; vm.isLoadDateTimeCalendar = "1"; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; } else { vm.service_timing = "-1"; } } vm.dayClicked(day); }, dayClicked(day){ const vm = this; let available_dates = vm.v_calendar_available_dates; let dayId = day.id; let dayString = dayId + " 00:00:00"; if( "undefined" == typeof dayString || "undefined" == typeof available_dates || 0 > available_dates.indexOf( dayString ) || vm.bpa_current_selected_date == dayId || ("undefined" != typeof vm.v_calendar_blocked_dates && vm.v_calendar_blocked_dates.includes( day.id ) ) ){ return false; } vm.service_timing = "-2"; vm.appointment_step_form_data.selected_date = dayId; vm.bpa_current_selected_date = dayId; vm.no_timeslot_available = false; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } setTimeout(function(){ vm.service_timing = vm.bookingpress_categories_timeslots( vm.v_calendar_timeslots_data[ dayId ] ); vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; },10); }, onDayKeyPressed(event){ const vm = this; if(event.event.key == "Enter"){ vm.dayClicked(event); setTimeout(function(){ if(typeof vm.$refs.timeSlotItems !== 'undefined'){ vm.$refs.timeSlotItems[0].focus(); } },11); } let page = {month: event.month, year: event.year}; vm.bpaMoveMonth(page); }, onWholeDayKeyPressed(event, day){ const currentDate = new Date(day.id); let newDate; const vm = this; if(event.key == "Enter"){ event.preventDefault(); vm.dayClicked_v2(day); return; } let page = {month: day.month, year: day.year}; vm.bpaMoveMonth(page); switch(event.key) { case 'ArrowRight': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowLeft': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowUp': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 7); vm.moveFocusToDate(newDate, day); break; case 'ArrowDown': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 7); vm.moveFocusToDate(newDate, day); break; } }, moveFocusToDate(date, day) { const vm = this; // Format date to match your day.id format (YYYY-MM-DD) const dateString = date.toISOString().split('T')[0]; // Find the element for this date this.$nextTick(() => { let vc_day_content = document.querySelectorAll(".vc-day .vc-day-content"); vc_day_content.forEach((elm) => { elm.setAttribute("tabindex", "-1"); }); const dateElement = document.getElementsByClassName(`id-${dateString}`); // console.log(dateElement); if (dateElement) { if (vm.$refs.bkp_front_calendar) { vm.$refs.bkp_front_calendar.move(dateString); // vm.$refs.bkp_front_calendar.focusDate(day); } if(dateElement[0]){ setTimeout(() => { let date_span = dateElement[0].querySelector(".bpa_day-select span"); if(date_span){ date_span.setAttribute("tabindex", "0"); date_span.focus(); } }, 200); } } }); }, dayClicked_legacy(day) { const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.get_formatted_date( vm.booking_cal_maxdate ); if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_available_date < day.id || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.get_date_timings( day.id ); }, get_date_timings(current_selected_date = ""){ const vm = this; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; }else{ vm.service_timing = "-2"; } if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if( null == vm.appointment_step_form_data.selected_date ){ vm.appointment_step_form_data.selected_date = new Date("2026-01-16 14:28:54"); } if( current_selected_date == "") { current_selected_date = vm.appointment_step_form_data.selected_date; } vm.appointment_step_form_data.selected_date = current_selected_date; var selected_date = vm.appointment_step_form_data.selected_date; if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(current_selected_date); } let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( selected_date ) ){ let sel_month = selected_date.getMonth() + 1; let sel_year = selected_date.getFullYear(); let sel_date = selected_date.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } selected_date = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = selected_date; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; var selected_service_id = vm.appointment_step_form_data.selected_service; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_get_timings", service_id: selected_service_id, selected_date: selected_date, _wpnonce:bkp_wpnonce_pre_fetch, }; postData.bookingpress_timezone = vm.bookingpress_timezone;postData.bookingpress_selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details;postData.service_extra_details = JSON.stringify( vm.appointment_step_form_data.bookingpress_selected_extra_details );postData.enable_custom_service_duration = vm.appointment_step_form_data.enable_custom_service_duration;postData.custom_service_duration_value = vm.appointment_step_form_data.custom_service_duration_value; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ postData.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.no_timeslot_available = false; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { var set_waiting_time_limit = 1500; if(typeof postData.enable_custom_service_duration != "undefined"){ if(postData.enable_custom_service_duration == true || postData.enable_custom_service_duration == "true"){ set_waiting_time_limit = 0; } } setTimeout(function(){ vm.service_timing = response.data; if( response.data.morning_time.length <= 0 && response.data.afternoon_time.length <= 0 && response.data.evening_time.length <= 0 && response.data.night_time.length <= 0 ){ vm.no_timeslot_available = true; } vm.isLoadTimeLoader = "0"; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if(response.data == ""){ vm.service_timing = null; } }, set_waiting_time_limit); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }.bind(this) ) .catch( function (error) { console.log(error); }); }, selectDisableTiming(time_details){ }, selectTiming(selected_start_time, selected_end_time, store_start_time = "", store_end_time = "", store_selected_date = "" ,formated_start_time = "",formated_end_time = "",time_details = ""){ const vm = this; vm.appointment_step_form_data.selected_start_time = selected_start_time; vm.appointment_step_form_data.selected_end_time = selected_end_time; if( "" != formated_end_time && "" != formated_start_time ) { vm.appointment_step_form_data.selected_formatted_start_time = formated_start_time; vm.appointment_step_form_data.selected_formatted_end_time = formated_end_time; } if( "" != time_details.formatted_start_end_time && "undefined" != time_details.formatted_start_end_time ) { vm.appointment_step_form_data.selected_formatted_start_end_time = time_details.formatted_start_end_time; } if("" != store_start_time && "" != store_end_time && "" != store_selected_date ){ vm.appointment_step_form_data.store_start_time = store_start_time; vm.appointment_step_form_data.store_end_time = store_end_time; vm.appointment_step_form_data.client_offset = vm.bookingpress_timezone_offset; vm.appointment_step_form_data.store_selected_date = store_selected_date; vm.appointment_step_form_data.store_selected_end_date = time_details.selected_end_date || store_selected_date; } vm.appointment_step_form_data.customer_selected_date = time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_end_date = time_details.client_end_date || time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_time = time_details.client_start_time || selected_start_time; vm.appointment_step_form_data.customer_selected_end_time = time_details.client_end_time || selected_end_time; vm.appointment_step_form_data.is_next_day = false; vm.appointment_step_form_data.is_both_next_day = false; if( "undefined" != typeof time_details.is_next_day && true == time_details.is_next_day ){ vm.appointment_step_form_data.is_next_day = true; vm.appointment_step_form_data.next_day_selection_date = time_details.selected_date; vm.appointment_step_form_data.selected_end_date = time_details.selected_end_date; } if( ("undefined" != typeof time_details.is_both_next_day_time && true == time_details.is_both_next_day_time) || "undefined" != typeof time_details.is_both_next_day_time_v2 && true == time_details.is_both_next_day_time_v2 ){ vm.appointment_step_form_data.customer_selected_date = time_details.client_end_date; vm.appointment_step_form_data.display_end_date_on_summary = true; vm.appointment_step_form_data.is_both_next_day = time_details.is_both_next_day_time; vm.appointment_step_form_data.is_both_next_day_v2 = time_details.is_both_next_day_time_v2; vm.appointment_step_form_data.is_server_both_next_day = ( "undefined" != typeof time_details.is_overnight_booking_server ) ? time_details.is_overnight_booking_server : false; vm.appointment_step_form_data.is_customer_both_next_day = time_details.is_both_next_day_time_v2 || false; } let bookingpress_is_anystaff_select = true; if( (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" && vm.bookingpress_sidebar_step_data.service.is_first_step == 1) || ( (vm.appointment_step_form_data.hide_service_selection_step == true || vm.appointment_step_form_data.hide_service_selection_step == "true") && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 && ("true" != vm.appointment_step_form_data.hide_staff_selection ) ) ){ let staffmember_details = vm.bookingpress_staffmembers_details; // change the value anystaff not bookingpress_is_anystaff_select = false; if( "undefined" != typeof time_details.available_staffs ) { staffmember_details.forEach(staff => { staff.is_display_staff = time_details.available_staffs.includes(parseInt(staff.bookingpress_staffmember_id)); }); } else { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; staffmember_details.forEach(staff => { staff.is_display_staff = false; }); } vm.no_staffmember_available = staffmember_details.every(staff => !staff.is_display_staff); vm.appointment_step_form_data.bpa_datetime_after_staffselection = 1; vm.appointment_step_form_data.bpa_after_select_datetime_available_staff = time_details; } if( vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 ){ // change the value anystaff not bookingpress_is_anystaff_select = false; let service_details = vm.bpasortedServices; vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { vm.appointment_step_form_data.is_staff_exists = 1; } //console.log( time_details.unavailable_serivce_ids ); //[ 1 ] // if( "undefined" != typeof time_details.unavailable_serivce_ids ) { //service_details.forEach(service => { //service.is_visible = !time_details.unavailable_serivce_ids.includes( parseInt(service.bookingpress_service_id) ); //}); //} if (typeof time_details.unavailable_serivce_ids !== "undefined") { service_details.forEach(service => { if (time_details.unavailable_serivce_ids.includes( service.bookingpress_service_id ) ) { service.is_visible = false; service.exclude_id = true; } }); } else { service_details.forEach(service => { if( "undefined" != typeof service.exclude_id && service.exclude_id == true ){ service.is_visible = true; } }); } vm.no_service_available = service_details.every( services => !services.is_visible ); if( vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1 ){ vm.appointment_step_form_data.bpa_after_select_service_available_staff = time_details; } if( "undefined" != typeof time_details.available_staffs ){ let available_staffdata = time_details.available_staffs; vm.bpasortedServices.forEach( item => { const hasMatch = Object.keys( item.staff_member_details ).some( key => available_staffdata.includes( Number( key ) ) ); item.is_visible = hasMatch; item.is_visible_with_flag = hasMatch; } ); } } if( "undefined" != typeof time_details.available_staffs && bookingpress_is_anystaff_select && (vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ if( 1 < time_details.available_staffs.length ){ let available_staff_id = time_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } if( vm.bookingpress_staffmembers_details.every(staff => !staff.is_display_staff) ){ vm.is_any_staff_option_enable = 0; } vm.appointment_step_form_data.use_modified_duration = false; if( "undefined" != typeof time_details.use_slot_duration && true == time_details.use_slot_duration && "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && 1 == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ vm.appointment_step_form_data.use_modified_duration = true; let remaining_minutes = time_details.duration_unit_next_break; vm.slot_duration_till_break = remaining_minutes; let allSortedServices = Object.assign( [], vm.bpasortedServices ); let totalHiddenServices = 0; allSortedServices.forEach( (element, index) => { let service_duration_unit = element.bookingpress_service_duration_unit; element.is_visible_with_service_step = true; if( "d" == service_duration_unit ){ element.is_visible_with_service_step = false; totalHiddenServices++; } else { let service_duration = ( "h" == service_duration_unit ) ? parseInt( element.bookingpress_service_duration_val * 60 ) : parseInt( element.bookingpress_service_duration_val ); if( service_duration > remaining_minutes ){ element.is_visible_with_service_step = false; totalHiddenServices++; } } }); vm.bpasortedServices.forEach( (elm, index) => { if( "undefined" != typeof elm.is_hide_with_step && true == elm.is_hide_with_step ){ elm.is_visible = true; } if( "undefined" != typeof allSortedServices[index].is_visible_with_service_step && false == allSortedServices[index].is_visible_with_service_step ){ elm.is_visible = false; elm.is_hide_with_step = true; } }); console.log( vm.bpasortedServices ); console.log( totalHiddenServices ); vm.no_service_available = false; if( vm.bpasortedServices.length == totalHiddenServices ){ vm.no_service_available = true; } } vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); vm.bookingpress_update_timestep_token(); }, resetForm(){ const vm2 = this; vm2.appointment_formdata.appointment_selected_customer = "0"; vm2.appointment_formdata.appointment_selected_service = ""; vm2.appointment_formdata.appointment_booked_date = "2026-01-16"; vm2.appointment_formdata.appointment_booked_time = ""; }, select_service(selected_service_id){ const vm = this; vm.appointment_step_form_data.selected_service = selected_service_id; }, automatic_next_page(next_tab_id){ const vm = this; if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; vm.current_selected_tab_id = parseInt(next_tab_id); vm.bookingpress_remove_error_msg(); var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, next_page(customer_form = "", current_selected_element = "", next_selection_element = ""){ const vm = this; var current_selected_tab = bpa_selected_tab = parseFloat(vm.current_selected_tab_id); vm.previous_selected_tab_id = parseInt(current_selected_tab); if(current_selected_element != undefined && current_selected_element != null){ current_selected_tab = parseInt(current_selected_element); } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); if(current_selected_tab === 1 || vm.previous_selected_tab_id === 1){ vm.is_display_error = "0"; if(vm.appointment_step_form_data.selected_service == "" || vm.appointment_step_form_data.selected_service == undefined || vm.appointment_step_form_data.selected_service == "undefined"){ vm.bookingpress_set_error_msg("Selecteer een dienst om een afspraak te maken."); vm.current_selected_tab_id = 1; return false; }else{ if(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == ""){ vm.bookingpress_set_error_msg("Selecteer een medewerker om verder te gaan"); vm.current_selected_tab_id = 1; return false; }; if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } } }else if(current_selected_tab === 2){ if(current_selected_element != undefined && current_selected_element == 2 && vm.appointment_step_form_data.selected_start_time == "" && bpa_selected_tab == "2" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } if(vm.appointment_step_form_data.selected_service != "" && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.selectDate(vm.appointment_step_form_data.selected_service, vm.appointment_step_form_data.selected_service_name, vm.appointment_step_form_data.selected_service_price, vm.appointment_step_form_data.service_price_without_currency, "true",vm.appointment_step_form_data.selected_service_duration,vm.appointment_step_form_data.selected_service_duration_unit); } if(vm.is_display_error != "1"){ if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } vm.bookingpress_remove_error_msg() }else{ if(vm.is_error_msg == ""){ vm.bookingpress_set_error_msg("Er is iets fout gegaan") } } }else if(current_selected_tab === 3){ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; }else{ vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } } }); } }else{ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } else { vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } }else{ current_selected_tab = 3; } }); } } if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_date != "" ) { vm.get_date_timings(); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.next_selected_tab_id = 3; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } }, previous_page(previous_selection_tab_id = ""){ const vm = this; var current_selected_tab = parseFloat(vm.current_selected_tab_id); if(previous_selection_tab_id != ""){ current_selected_tab = previous_selection_tab_id; }else{ vm.previous_selected_tab_id = parseInt(current_selected_tab); current_selected_tab = current_selected_tab - 1; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(vm.previous_selected_tab_id == "1"){ vm.displayResponsiveCalendar = 1; } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, select_payment_method(payment_method){ const vm = this; vm.appointment_step_form_data.selected_payment_method = payment_method; var bookingpress_allowed_payment_gateways_for_card_fields = []; if( "undefined" == typeof vm.skip_checking_final_step_validation || true != vm.skip_checking_final_step_validation ){ vm.bookingpress_get_final_step_amount(); } ; if(bookingpress_allowed_payment_gateways_for_card_fields.includes(payment_method)){ vm.is_display_card_option = 1; }else{ vm.is_display_card_option = 0; } }, displayCalendar(){ const vm = this; if( "" == vm.appointment_step_form_data.selected_date || ( "undefined" != typeof vm.v_calendar_available_dates && 1 > vm.v_calendar_available_dates.length ) ){ return false; } vm.displayResponsiveCalendar = "1"; }, Change_front_appointment_description(service_id) { const vm = this; vm.services_data.forEach(function(item, index, arr){ if(item.bookingpress_service_id == service_id ){ if(item.display_details_more == 0 && item.display_details_less == 1) { item.display_details_less = 0; item.display_details_more = 1; } else { item.display_details_more = 0; item.display_details_less = 1; } } }); }, bookingpress_phone_country_change_func(bookingpress_country_obj){ const vm = this; var bookingpress_selected_country = bookingpress_country_obj.iso2; vm.appointment_step_form_data.customer_phone_country = bookingpress_selected_country; vm.appointment_step_form_data.customer_phone_dial_code = bookingpress_country_obj.dialCode; let exampleNumber = window.intlTelInputUtils.getExampleNumber( bookingpress_selected_country, true, 1 ); if( typeof vm.bookingpress_phone_default_placeholder == "undefined" && "" != exampleNumber ){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } else if(vm.bookingpress_phone_default_placeholder == "false" && "" != exampleNumber){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } }, bookingpress_phone_country_open( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".el-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); } } } }, bookingpress_phone_country_close( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.customer_phone; console.log("called ... " + phoneValue); if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { console.log("inside this..... one") this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_get_parents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, async bookingpress_disable_date( bpa_selected_service = "", bpa_selected_date = "" ){ let bpa_is_called = false; var bookingpress_is_allow_modify = ""; var bookingpress_staff_loaded_from_url = "0"; this.isLoadTimeLoader = "1"; this.isLoadDateTimeCalendarLoad = "1"; let staff_id = this.appointment_step_form_data.selected_staff_member_id; if( 0 == staff_id ){ staff_id = ""; } this.service_timing = "-3"; if( 0 === this.bookingpress_sidebar_step_data["staffmembers"].is_display_step && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 == this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1); } bpa_is_called = true; } let form_sequence_first; if( "object" == typeof this.appointment_step_form_data.form_sequence ){ form_sequence_first = this.appointment_step_form_data.form_sequence[0]; } else { form_sequence_first = this.appointment_step_form_data.form_sequence; } if( false == bpa_is_called && 1 == this.hide_category_service && "service_selection" == form_sequence_first && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 != this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && false == this.is_staff_member_set_from_url && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && "" == staff_id && "true" == this.appointment_step_form_data.select_any_staffmember ){ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); bpa_is_called = true; } /** for the datetime re-arrange step */ if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_sidebar_step_data["service"].is_first_step == 1 && this.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; } if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_current_tab != this.bookingpress_next_tab && ( "undefined" != typeof this.appointment_step_form_data.any_staff_selected && 1 == this.appointment_step_form_data.any_staff_selected ) ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; this.bookingpress_select_staffmember( "any_staff", 1 ); } let selected_sid = this.appointment_step_form_data.selected_service; if(selected_sid != "" && "undefined" != typeof this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && "" != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && null != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date ) { this.booking_cal_maxdate = this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date; const currentDate = new Date(); const targetDate = new Date(this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date); let diff_in_time = targetDate.getTime() - currentDate.getTime(); let diff_in_days = ( Math.round( diff_in_time / ( 1000 * 3600 * 24 ) ) ) + 1; const bookingpress_period_available_for_booking = 180; if(bookingpress_period_available_for_booking < diff_in_days){ /*If max period avilable is less than service expiry date then set limit for the Max period avilable days*/ this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); } } let use_legacy = "false"; if( "true" == use_legacy ){ this.bookingpress_disable_date_xhr( bpa_selected_service, bpa_selected_date ); } else { this.bookingpress_disable_date_xhr_v2( bpa_selected_service, bpa_selected_date ); } }, bookingpress_update_timestep_token( force_update = false, cart_force_update = false ){ const vm = this; let use_legacy = "false"; let current_tab = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name; if( ( "undefined" == typeof vm.bookingpress_cart_addon && ( ( true == force_update && typeof vm.v_calendar_time_token_data != "undefined" ) || ( "datetime" == vm.bookingpress_sidebar_step_data[ vm.bookingpress_current_tab ].previous_tab_name && "d" != vm.appointment_step_form_data.selected_service_duration_unit && "datetime" != vm.bookingpress_current_tab && "false" == use_legacy ) ) ) ||( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 && ( ( ( "undefined" != vm.is_staffmember_activated && 1 == vm.is_staffmember_activated && vm.appointment_step_form_data.selected_staff_member_id != 0 ) && ( "undefined" != typeof vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_service != 0 ) ) && ( "undefined" != typeof vm.appointment_step_form_data.location_activated && 1 == vm.appointment_step_form_data.location_activated && vm.appointment_step_form_data.selected_location != "" ) || cart_force_update != false ) ) ){ let appointment_selected_date = vm.appointment_step_form_data.store_selected_date || vm.appointment_step_form_data.selected_date; if( "undefined" != typeof vm.appointment_step_form_data.is_next_day && true == vm.appointment_step_form_data.is_next_day && "undefined" != typeof vm.appointment_step_form_data.next_day_selection_date ){ appointment_selected_date = vm.appointment_step_form_data.next_day_selection_date; } let selected_token_data = vm.v_calendar_time_token_data[ appointment_selected_date ][0]; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; }else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_set_timeslot_token", tokenData: selected_token_data, selectedDate: appointment_selected_date, _wpnonce:bkp_wpnonce_pre_fetch }; vm.is_bookingpress_updating_token = true; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.is_bookingpress_updating_token = false; vm.is_bookingpress_token_updated = true; }.bind(this) ) .catch( function (error) { }); } }, bookingpress_working_dates_data( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let is_client_timezone = ""; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; let overnight_booking = ("undefined" != typeof response_data.overnight_booking_dates ) ? response_data.overnight_booking_dates : []; let sorted_working_hours = []; for( let wdate in working_hour_details ){ let x = 0; let n = 0; let is_overnight_booking = overnight_booking.includes( wdate ) || false; let is_overnight_booking_server = is_overnight_booking; let overnight_booking_date = ""; sorted_working_hours[wdate] = working_hour_details[ wdate ]; sorted_working_hours[wdate].sort( (a,b) => { return ( parseInt( a.counter_pos ) < parseInt( b.counter_pos ) ) ? -1 : 1; } ); for( let wh_data of sorted_working_hours[wdate] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.selected_end_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; if( false == is_overnight_booking ){ is_overnight_booking = wp.hooks.applyFilters( "bookingpress_consider_overnight_booking", is_overnight_booking, wh_data ); } let stTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", start_datetime, wh_data, "start", true ); let etTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", end_datetime, wh_data, "end", true ); let updated_wdate; if( "string" == typeof stTimeNew ){ updated_wdate = wdate; } else { updated_wdate = stTimeNew.toISOString().split("T")[0]; } let updated_edate; if( "string" == typeof etTimeNew ){ updated_edate = wh_data.selected_end_date; } else { updated_edate = etTimeNew.toISOString().split("T")[0]; } if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = ( "undefined" != typeof response_data.pre_selected_date && true == response_data.pre_selected_date && "undefined" != typeof vm.open_customer_reschedule_appointment_modal && true == vm.open_customer_reschedule_appointment_modal ) ? response_data.selected_date : updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; if( true == is_overnight_booking && "" == overnight_booking_date ){ overnight_booking_date = updated_wdate; if( "undefined" == typeof updated_working_hour_details[ overnight_booking_date ] ){ updated_working_hour_details[ overnight_booking_date ] = []; } } wh_data.is_both_next_day_time_v2 = false; if( true == is_overnight_booking ){ if( "true" == is_client_timezone ){ wh_data.is_next_day = false; } if( updated_edate > updated_wdate ){ wh_data.is_next_day = true; } if( updated_edate == updated_wdate && updated_wdate > overnight_booking_date ){ wh_data.is_both_next_day_time_v2 = true; wh_data.is_overnight_booking_server = is_overnight_booking_server; wh_data.is_next_day = true; wh_data.client_date = wh_data.client_end_date; } } if( true == wh_data.is_both_next_day_time && wh_data.client_end_date > wh_data.client_date ){ wh_data.client_date = wh_data.client_end_date; } let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + " naar " + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; wh_data.slot_timestamp = new Date( `${wh_data.client_date} ${wh_data.client_start_time}` ).getTime(); if( true == is_overnight_booking ){ if( "undefined" != typeof updated_working_hour_details[ overnight_booking_date ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ overnight_booking_date ] ).length; } updated_working_hour_details[ overnight_booking_date ][x] = wh_data; if( !available_dates.includes( overnight_booking_date + " 00:00:00" ) ){ available_dates.push( overnight_booking_date + " 00:00:00" ); } } else { if( "undefined" != typeof updated_working_hour_details[ updated_wdate ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ updated_wdate ] ).length; } updated_working_hour_details[ updated_wdate ][x] = wh_data; } x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_working_dates_data_legacy( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; for( let wdate in working_hour_details ){ let x = 0; let n = 0; for( let wh_data of working_hour_details[ wdate ] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.store_service_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; let updated_wdate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wdate, wh_data ); let updated_edate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wh_data.selected_end_date, wh_data ); if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + "naar" + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; updated_working_hour_details[ updated_wdate ][x] = wh_data; x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_disable_date_xhr_v2( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; }; let preselect_date = false; if( "" != bpa_selected_date ){ preselect_date = true; } if( "" == bpa_selected_date ){ vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } let startTime = new Date().getTime(); var postData = { action: "bookingpress_fetch_timeslot_data", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, is_preselect: preselect_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { let request_time = new Date().getTime() - startTime; /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; let working_hour_details = response.data.working_details; let selectedDate = response.data.selected_date; let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); let preselected_date = ""; if( "undefined" != typeof response.data.pre_selected_date && true == response.data.pre_selected_date ){ preselected_date = response.data.selected_date; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.appointment_step_form_data.selected_date = ""; selectedDate = ( "" != preselected_date ) ? preselected_date : ( wh_details.selected_date || selectedDate ); vm.v_calendar_available_dates = wh_details.available_dates; vm.v_calendar_timeslots_data = wh_details.updated_working_hour_details; vm.no_timeslot_available = false; let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); if( !v_available_dates_only.includes( selectedDate ) && wh_details.selected_date != selectedDate && wh_details.selected_date != "" ){ selectedDate = wh_details.selected_date; } vm.v_calendar_available_only_date = v_available_dates_only; if( "undefined" != typeof selectedDate && "" != selectedDate ){ (function( $ref_ ){ setTimeout(function(){ vm.appointment_step_form_data.selected_date = selectedDate; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof $ref_.bkp_front_calendar ){ const calendar = $ref_.bkp_front_calendar; try{ calendar.move( selectedDate ); } catch( e ){ console.log( e ); } } if( "undefined" != typeof $ref_.bkp_front_calendar_responsive ){ const calendar_r = $ref_.bkp_front_calendar_responsive; try{ calendar_r.move( selectedDate ); } catch( e ){ console.log( e ); } } },10); })( this.$refs ); } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } /* V-date-picker attributes */ vm.v_calendar_default_label = response.data.max_capacity_capacity; vm.v_calendar_time_token_data = response.data.working_hour_timing_token; if( "undefined" != typeof wh_details.updated_working_hour_details[ selectedDate ] ){ vm.service_timing = vm.bookingpress_categories_timeslots( wh_details.updated_working_hour_details[ selectedDate ] ); } else { vm.service_timing = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; vm.no_timeslot_available = true; } if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } vm.isLoadTimeLoader = "0"; vm.isLoadDateTimeCalendarLoad = "0"; if( "undefined" == typeof response.data.stop_check || false == response.data.stop_check ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, 1 ); } setTimeout(function(){ if( "undefined" != typeof vm.is_bookingpress_token_updated && true == vm.is_bookingpress_token_updated ){ // condition update if( ("undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers") || (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection == 1))) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && "undefined" != typeof vm.appointment_step_form_data.location_activated || 1 != vm.appointment_step_form_data.location_activated && vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "location" ) ){ vm.bookingpress_update_timestep_token( true, true ); } else { vm.bookingpress_update_timestep_token( true ); } } },10); setTimeout(() => { vm.focusFirstDate(); if( "undefined" != typeof working_hour_details && working_hour_details.length == 0){ let focusCancelBtn = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer button"); if(focusCancelBtn !== null){ focusCancelBtn.focus(); } } const unavailable_date_calendar_input = document.querySelector(".el-form-item .bpa-unavailable-popup-datepicker .el-input__inner"); if(unavailable_date_calendar_input !== null){ unavailable_date_calendar_input.focus(); } }, 500); if( "undefined" != typeof selectedDate ){ let selected_date = selectedDate.split(" ")[0]; let timeslot_data = vm.v_calendar_timeslots_data[ selected_date ]; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details( next_month_date = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); if( 4 == counter ){ vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; return false; } else { vm.isHoldBookingRequest = true; } let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; ++counter; counter = wp.hooks.applyFilters( "bookingpress_modify_next_month_check_counter", counter, response.data ); if( "undefined" == typeof response.data.stop_check || response.data.stop_check == false ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, counter ); } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details_single( next_month_date = "", next_month_dates = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; vm.bookingpress_retrieve_future_month_details( next_month_dates, counter ); }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_format_time(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("nl_NL").format(default_time_format) }, bookingpress_categories_timeslots( timeslot_details ){ let afternoon_slot_timings = parseInt( "12" ); let evening_slot_timings = parseInt( "18" ); let night_slot_timings = parseInt( "" ); if( "undefined" == typeof timeslot_details ){ return {}; } let service_timings_data = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; let x = 0; for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && ( "undefined" == typeof timeslot_data.is_next_day || timeslot_data.is_next_day == false) ){ let startHour = parseInt( timeslot_data.start_hour ); if( startHour >= 0 && startHour < afternoon_slot_timings ){ service_timings_data.morning_time.push( timeslot_data ); } else if( startHour >= afternoon_slot_timings && ( "" == evening_slot_timings || startHour < evening_slot_timings ) ){ service_timings_data.afternoon_time.push( timeslot_data ); } else if ( startHour >= evening_slot_timings && ( "" == night_slot_timings || startHour < night_slot_timings ) ){ service_timings_data.evening_time.push( timeslot_data ); } else { service_timings_data.night_time.push( timeslot_data ); } x++; } } if( timeslot_details.length > x ){ for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && "undefined" != typeof timeslot_data.is_next_day && timeslot_data.is_next_day == true ){ let startHour = parseInt( timeslot_data.start_hour ); service_timings_data.night_time.push( timeslot_data ); } } } let sorted_timings_data = {}; for( let timing_item in service_timings_data ){ let timing_details = Object.assign( [], service_timings_data[ timing_item ] ); timing_details.sort( ( a, b ) => { return ( parseInt( a.slot_timestamp ) < parseInt( b.slot_timestamp ) ) ? -1 : 1; }); sorted_timings_data[ timing_item ] = timing_details; } return sorted_timings_data; }, bookingpress_disable_date_xhr( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } var postData = { action: "bookingpress_get_disable_date", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.disabled_dates = JSON.stringify( vm.v_calendar_disable_dates ); postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates = {}; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.service_timing = []; if(response.data.variant == "success" && (response.data.selected_date != undefined && response.data.days_off_disabled_dates != undefined)){ /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; vm.days_off_disabled_dates = ""; /*V-Calendar disabled dates change start*/ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); vm.v_calendar_disable_dates = []; for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } /*V-Calendar disabled dates change end*/ let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } let resp_selected_date = response.data.selected_date; if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; /* V-date-picker attributes */ vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.appointment_step_form_data.selected_date = response.data.selected_date; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof response.data.front_timings ){ vm.service_timing = response.data.front_timings; if( response.data.front_timings.length <= 0 ){ vm.no_timeslot_available = true; } } if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(vm.appointment_step_form_data.selected_date); } vm.isLoadTimeLoader = "0"; if( "undefined" != typeof response.data.empty_front_timings && true == response.data.empty_front_timings ){ vm.isLoadDateTimeCalendarLoad = "1"; vm.appointment_step_form_data.selected_date = response.data.next_available_date; vm.bookingpress_disable_date( bpa_selected_service, response.data.next_available_date ); return; } else { /* Check full day appointments block */ if( false == response.data.prevent_next_month_check ){ let postDataAction = "bookingpress_get_whole_day_appointments"; if( true == response.data.check_for_multiple_days_event ){ postDataAction = "bookingpress_get_whole_day_appointments_multiple_days"; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: postDataAction,days_off_disabled_dates: vm.days_off_disabled_dates, service_id: bpa_selected_service, max_available_year: response.data.max_available_year, max_available_month:response.data.max_available_month, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch, "next_month": response.data.next_month, "next_year": response.data.next_year, "counter": 1 }; postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } postData.appointment_data_obj = JSON.stringify( vm.appointment_step_form_data ); postData.staffmember_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( vm.bookingpress_is_extra_enable == 1 ){ postData.service_extra_details = vm.appointment_step_form_data.bookingpress_selected_extra_details; }; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } setTimeout(function(){ vm.isLoadDateTimeCalendarLoad = "0" },200); } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_daysoff_for_booked_appointment( postData ){ const vm = this; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ).then( function( response ) { vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.isLoadDateTimeCalendarLoad = 0; if(false == response.data.prevent_next_month_check && response.data.counter <= 3 ){ /** Currently data will be checked for next 3 months */ postData.days_off_disabled_dates = vm.days_off_disabled_dates; postData.next_month = response.data.next_month; postData.next_year = response.data.next_year; postData.counter++; if( postData.counter < 4 ){ vm.isHoldBookingRequest = true; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } else { vm.v_calendar_check_month_dates = true; let next_month_year = { "month": parseInt( response.data.next_month ), "year": response.data.next_year, "postData": postData }; vm.v_calendar_next_month_dates = next_month_year; vm.isHoldBookingRequest = false; } /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } else { /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } }); }, bpaMoveMonthResponsive( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); counter = 0 - monthDiff; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, counter ); } setTimeout(() => { vm.focusFirstDate(); }, 500); } } }, bpaMoveMonth( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); let month_ = ( current_month.toString().length == 1 ) ? ( "0" + current_month.toString() ) : current_month; let nextMonthDate = current_year + "-" + month_ + "-01"; counter = 0 - monthDiff; vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details_single( nextMonthDate, vm.v_calendar_next_month_dates, counter ); } } } }, bookingpress_get_all_parent_node_with_overflow_hidden( elem ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { let computed_style = getComputedStyle( elem ); if( computed_style.overflow == "hidden" || computed_style.overflowX == "hidden" || computed_style.overflowY == "hidden" ){ parents.push(elem); } } return parents; }, bookingpress_onload_func(){ const vm = this; vm.current_screen_size = "desktop"; if(window.outerWidth >= 1200){ vm.current_screen_size = "desktop"; }else if(window.outerWidth < 1200 && window.outerWidth >= 768){ vm.current_screen_size = "tablet"; }else if(window.outerWidth < 768){ vm.current_screen_size = "mobile"; } let is_mobile_device = ""; if( "mobile" != vm.current_screen_size && ("true" == is_mobile_device || true == is_mobile_device) ){ vm.current_screen_size = "mobile"; } if(window.innerWidth <= 576){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let parents_with_hidden_overflow = vm.bookingpress_get_all_parent_node_with_overflow_hidden( bookingpress_container ); let apply_overflow = ( parents_with_hidden_overflow.length > 0 ) ? true : false; window.addEventListener("scroll", function(e){ let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky" ; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky"; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.add("--bpa-is-overflow-visible"); } } } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.remove("--bpa-is-overflow-visible"); } } } }); } window.addEventListener("resize", function(e){ if( window.innerWidth <= 576 ){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; bookingpress_scrollBottom = bpa_current_scroll + bookingpress_scrollBottom + bookingpress_scrollTop; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky"; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky" /* Change this string */ } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ } } }); }, bookingpress_step_navigation(current_tab, next_tab, previous_tab, is_strict_validate = 1){ const vm = this; var bookingpress_is_validate = 0; vm.bookingpress_remove_error_msg(); var bookingpress_validate_fields_arr = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validate_fields; if( "staffmembers" == vm.bookingpress_current_tab && "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && true == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ){ is_strict_validate = 0; } if("service" == vm.bookingpress_current_tab){ if( vm.bookingpress_is_extra_enable == "1" && typeof vm.appointment_step_form_data.selected_service != "" ){ let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if(typeof selected_service_data != "undefined") { let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ bpa_selected_service_extra_count++; } } if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count < selected_service_data.bookingpress_min_no_extra_service){ bookingpress_is_validate = 1; let errorMsg = "Please select at least [x] extra service"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_min_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } else if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count > selected_service_data.bookingpress_max_no_extra_service ){ bookingpress_is_validate = 1; let errorMsg = "You can select maximum [x] extra services"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_max_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } } } } if((vm.bookingpress_current_tab == "basic_details") && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } }); if(bookingpress_is_validate == 0 && is_strict_validate == 1){ var customer_form = "appointment_step_form_data"; vm.$refs[customer_form].validate((valid) => { if (!valid) { bookingpress_is_validate = 1; }else{ bookingpress_is_validate = 0; } }); } }else{ if(is_strict_validate == 1){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ if( currentValue == "selected_start_time" && vm.appointment_step_form_data[currentValue] == "" ) { if( vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } else { vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } }); } } if( "service" == current_tab && "service" != vm.bookingpress_current_tab ){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date+"T00:00:00+00:00"; var bookingpress_disable_dates_arr = vm.days_off_disabled_dates.split(","); if(bookingpress_disable_dates_arr.includes(bookingpress_selected_date)){ let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = newDate; } } if( ("basic_details" == current_tab && "service" == vm.bookingpress_current_tab) || ("summary" == current_tab && "service" == vm.bookingpress_current_tab) ){ if(vm.appointment_step_form_data.selected_service_duration_unit != "d"){ if(vm.appointment_step_form_data.selected_start_time == ""){ bookingpress_is_validate = 1; } } } if(bookingpress_is_validate == 0){ vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; let current_selected_tab = vm.bookingpress_current_tab; vm.bookingpress_current_tab = current_tab; vm.bookingpress_next_tab = next_tab; vm.bookngpress_previous_tab = previous_tab; vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; if( "datetime" == current_tab ){ let selected_service_id = vm.appointment_step_form_data.selected_service; vm.bookingpress_disable_date(selected_service_id,vm.appointment_step_form_data.selected_date); } } if( window.innerWidth <= 576 ){ let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ setTimeout(function(){ window.scrollTo({ top: pos, behavior: "smooth", }); }, 500); } } if( "summary" == current_tab && "summary" == vm.bookingpress_current_tab ) { const vm = this; var total_payment_div_count = document.querySelectorAll(".bpa-front-module--pm-body__item").length; if(total_payment_div_count == 1){ var total_payment_div = document.querySelector(".bpa-front-module--pm-body__item"); if( null != total_payment_div && "undefined" != typeof total_payment_div) { vm.prevent_verification_on_load = true; total_payment_div.click(); vm.prevent_verification_on_load = false; } } vm.bookingpress_activate_payment_gateway_total_counter = vm.bookingpress_activate_payment_gateway_counter; if( vm.paypal_payment == "paypal" ){ let total_counter_payment_gateway = vm.bookingpress_activate_payment_gateway_total_counter + 1; vm.bookingpress_activate_payment_gateway_total_counter = total_counter_payment_gateway; } if( total_payment_div_count == 0 && vm.is_only_onsite_enabled == "1" ){ vm.appointment_step_form_data.selected_payment_method = "on-site"; vm.skip_checking_final_step_validation = true; vm.select_payment_method("on-site"); } } if(current_tab == "datetime" || next_tab == "datetime"){ setTimeout(() => { const custom_duration_select = document.querySelector(".bpa-front-module--date-and-time .bpa-custom-duration-select .el-input__inner"); if(custom_duration_select !== null){ custom_duration_select.focus(); } vm.focusFirstDate(); window.is_focused = false; /* const recurring_date_picker = document.querySelector(".bpa-recurring-appointment-head-row .bpa-front-form-control--date-picker .el-input__inner"); if(recurring_date_picker !== null){ recurring_date_picker.focus(); } */ const calendar_btn_mobile = document.querySelector(".bpa-front--dt__ts-sm-back-btn .el-button"); if(calendar_btn_mobile !== null){ calendar_btn_mobile.focus(); } }, 1000); } if(current_tab == "basic_details" || next_tab == "basic_details"){ setTimeout(() => { document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active") ?.querySelector("input:not([readonly]):not([disabled]):not([type='hidden']), select:not([disabled]), textarea:not([readonly]):not([disabled])") ?.focus(); }, 10); } if(next_tab == "summary"){ setTimeout(() => { let find_first_pg = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if(find_first_pg !== null){ find_first_pg.focus(); }else { find_first_pg = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer .summery-book-appointment-btn"); if(find_first_pg !== null){ find_first_pg.focus(); } } }, 10); } if(current_tab == "service" || next_tab == "service"){ setTimeout(() => { let find_first_service = document.querySelector(".bpa-front-module--service-item .bpa-front-si-card"); if(find_first_service !== null){ find_first_service.focus(); } }, 10); } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; }, bookingpress_select_multi_day_range(day = ""){ const vm = this; if(vm.appointment_step_form_data.selected_date){ day = vm.appointment_step_form_data.selected_date; vm.bookingpress_selected_date_range = []; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_end_date = vm.appointment_step_form_data.selected_date; var selected_date = new Date(day); var selected_service_duration = vm.appointment_step_form_data.selected_service_duration; var bookingpress_selected_date_range = []; var new_date = new Date(day + " 00:00:00"); bookingpress_selected_date_range.push(day); for(var i = 1; i < selected_service_duration; i++) { new_date.setDate(new_date.getDate() + 1); var month = "" + (new_date.getMonth() + 1), day = "" + new_date.getDate(), year = new_date.getFullYear(); if (month.length < 2){ month = "0" + month; } if (day.length < 2){ day = "0" + day; } var add_date = [year, month, day].join("-"); bookingpress_selected_date_range.push(add_date); if(i == selected_service_duration-1) { vm.appointment_step_form_data.selected_end_date = add_date; } } if(bookingpress_selected_date_range.length > 0){ vm.bookingpress_selected_date_range = bookingpress_selected_date_range; } } } }, async bookingpress_select_multi_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0){ var vm = this; }, bpa_is_select_multistaff_member(staff_member_id){ var vm = this; return false; }, bpa_search_service( value ){ const vm = this; value = value.toLowerCase(); vm.bpasortedServices.forEach( ( element,index ) =>{ vm.bpasortedServices[index].show_with_search = false; if( element.bookingpress_service_name.toLowerCase().includes( value ) ){ vm.bpasortedServices[index].show_with_search = true; } }); }, bpa_search_staff( value ){ const vm = this; value = value.toLowerCase(); vm.bookingpress_staffmembers_details.forEach( ( element,index ) => { vm.bookingpress_staffmembers_details[index].show_with_staff_search = false; if( (element.bookingpress_staffmember_firstname.toLowerCase().includes( value )) || element.bookingpress_staffmember_lastname.toLowerCase().includes( value ) ){ vm.bookingpress_staffmembers_details[index].show_with_staff_search = true; } }); }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.form_fields.customer_phone; if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_phone_country_open_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-field-main-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); let parent_upper = vm.bookingpress_get_parents( parent[0], ".el-col" ); if( 0 < parent_upper.length && null != parent_upper[0] ){ //parent_upper[0].classList.add("bpa-active-col"); } } } } }, bookingpress_phone_country_close_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bpa_check_space_validation(bpa_input_value,v_modal_data){ var vm = this; if(bpa_input_value.trim() == ""){ vm.appointment_step_form_data["form_fields"][v_modal_data] = ""; return ""; } return bpa_input_value; }, bpa_check_password_validation( bpa_email_value ) { const vm = this; if( "undefined" == typeof vm.appointment_step_form_data.form_fields.customer_password || vm.bpa_check_user_login == 1 ){ return; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_password_validation_check", _wpnonce:bkp_wpnonce_pre_fetch, _email: bpa_email_value }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof response.data.bpa_password_already_exists ){ if( response.data.bpa_password_already_exists == true ){ if(this.$refs.appointment_step_form_data){ this.$refs.appointment_step_form_data.clearValidate("customer_password"); } vm.appointment_step_form_data.bpa_password_already_exists = true; vm.customer_details_rule.customer_password[0].required = false; vm.appointment_step_form_data.bpa_user_email_already_exists = true; vm.appointment_step_form_data.form_fields["customer_password"] = ""; } } else { vm.appointment_step_form_data.bpa_password_already_exists = false; vm.customer_details_rule.customer_password[0].required = true; vm.appointment_step_form_data.bpa_user_email_already_exists = false; } }.bind(this) ) .catch( function (error) { console.log(error); }); }, dayClicked_v2( day ){ const vm = this; vm.dayClicked( day ); vm.bookingpress_select_multi_day_range( day ); let timeslot_data = vm.v_calendar_timeslots_data[ day.id ]; let max_available_date = vm.booking_cal_maxdate; ; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } }, bookingpress_day_click(day){ const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.booking_cal_maxdate; ; let max_date_value = false; if( max_available_date instanceof Date ){ max_date_value = ( max_available_date < ( new Date( day.id ) ) ); } else { max_date_value = ( max_available_date < day.id ); } if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_date_value || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.bookingpress_select_multi_day_range(day); vm.dayClicked( day ); }, bookingpress_get_final_step_amount() { const vm = this; var payment_method = vm.appointment_step_form_data.selected_payment_method; var total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( "" == tax_amount ){ tax_amount = 0; } let total_payable_amount_without_tax = parseFloat(total_payable_amount); if(typeof tax_amount != "undefined"){ total_payable_amount = parseFloat(total_payable_amount) + parseFloat(tax_amount); } let is_cart_addon = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ) { /* total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; */ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; total_payable_amount_without_tax = parseFloat(total_payable_amount); if( typeof tax_amount != "undefined" ){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( tax_amount ); if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.tax_amount_before_coupon_without_currency != "undefined"){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.tax_amount_before_coupon_without_currency ); } } } /* console.trace( "INSIDE CART CONDITION ===>>> " + vm.appointment_step_form_data.bookingpress_cart_total ); */ is_cart_addon = true; } var coupon_code = vm.appointment_step_form_data.coupon_code; var selected_service = vm.appointment_step_form_data.selected_service; var selected_staff_member_id = vm.appointment_step_form_data.selected_staff_member_id; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } var subtotal_price = total_payable_amount; /* apply coupon */ if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != ""){ if(typeof vm.appointment_step_form_data.coupon_discount_amount != "undefined" && vm.appointment_step_form_data.coupon_discount_amount != 0){ if(vm.appointment_step_form_data.tax_percentage != ""){ var tax_percentage = parseFloat(vm.appointment_step_form_data.tax_percentage); if(typeof vm.appointment_step_form_data.tax_price_display_options != "undefined" && vm.appointment_step_form_data.tax_price_display_options == "include_taxes"){ tax_amount = (total_payable_amount_without_tax * tax_percentage) / (100+tax_percentage); total_payable_amount_without_tax = total_payable_amount_without_tax - tax_amount; } } let f_payable_amount = total_payable_amount_without_tax - vm.appointment_step_form_data.coupon_discount_amount; if( 0 == f_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = f_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( f_payable_amount, true ); } var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( typeof tax_amount != "undefined" ){ vm.appointment_step_form_data.total_payable_amount = vm.appointment_step_form_data.total_payable_amount + tax_amount; }else { tax_amount = 0; } vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount, true ); vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount ); subtotal_price = f_payable_amount + tax_amount; if( "undefined" != vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency && 1 == vm.bookingpress_is_deposit_payment_activate ){ if( vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price" || vm.appointment_step_form_data.bookingpress_deposit_payment_method == "allow_customer_to_pay_full_amount" ){ if(is_cart_addon){ let cart_items_deposite_amount = 0; vm.appointment_step_form_data.cart_items.forEach((current_cart_item, cart_item_index) => { cart_items_deposite_amount = parseFloat(cart_items_deposite_amount) + parseFloat(current_cart_item.bookingpress_deposit_price); }); if( cart_items_deposite_amount < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } }else{ if( vm.appointment_step_form_data.deposit_payment_type == "fixed") { if( vm.appointment_step_form_data.deposit_payment_amount < subtotal_price ){ vm.appointment_step_form_data.bookingpress_remove_deposit = 0; vm.appointment_step_form_data.calculate_deposit = true; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } else if( vm.appointment_step_form_data.deposit_payment_type == "percentage") { let bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(vm.appointment_step_form_data.deposit_payment_amount) / 100); if( bookingpress_deposit_amt < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } } } } } } else { vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } vm.appointment_step_form_data.bookingpress_remove_deposit = 0; subtotal_price = total_payable_amount; } } /* If deposit payment module enabled then calculate deposit amount */ var deposit_method = vm.appointment_step_form_data.bookingpress_deposit_payment_method; var deposit_type = vm.appointment_step_form_data.deposit_payment_type; var deposit_value = vm.appointment_step_form_data.deposit_payment_amount; var bookingpress_deposit_amt = 0; var bookingpress_deposit_due_amt = 0; if(payment_method != "" && 1 == vm.bookingpress_is_deposit_payment_activate && vm.appointment_step_form_data.bookingpress_remove_deposit != 1 && ( "undefined" == typeof vm.appointment_step_form_data.is_clubbed_service || false == vm.appointment_step_form_data.is_clubbed_service ) ){ var bookingpress_check_deposit_avaliable = false; if( 1 == is_cart_addon ){ if (typeof vm.appointment_step_form_data.cart_items != "undefined"){ var cart_items_temp_data = vm.appointment_step_form_data.cart_items; if(cart_items_temp_data != "" && cart_items_temp_data.length != 0){ cart_items_temp_data.forEach(function(currentValue, index, arr){ if (typeof cart_items_temp_data[index].bookingpress_deposit_due_amount != "undefined"){ if(parseFloat(cart_items_temp_data[index].bookingpress_deposit_due_amount) > 0){ bookingpress_check_deposit_avaliable = true; } } }); } } }else{ if(typeof vm.appointment_step_form_data.deposit_payment_type != undefined && typeof vm.appointment_step_form_data.deposit_payment_amount_percentage != undefined){ if(vm.appointment_step_form_data.deposit_payment_type == "percentage" && vm.appointment_step_form_data.deposit_payment_amount_percentage == 100){ bookingpress_check_deposit_avaliable = false; }else{ bookingpress_check_deposit_avaliable = true; } } } if(bookingpress_check_deposit_avaliable && payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "") && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ if(deposit_method == "deposit_or_full_price"){ //if( true == is_cart_addon ){ //subtotal_price = total_payable_amount_without_tax; /* vm.bookingpress_price_with_currency_symbol( total_payable_amount_without_tax, true ); */ //} if(deposit_type == "percentage"){ bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(deposit_value) / 100); bookingpress_deposit_amt = bookingpress_deposit_amt; /* vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); */ bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } else if(deposit_type == "fixed") { bookingpress_deposit_amt = deposit_value; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } } else if(deposit_method == "allow_customer_to_pay_full_amount") { bookingpress_deposit_amt = subtotal_price; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } let total_payable_amount_temp = bookingpress_deposit_amt; if(typeof vm.appointment_step_form_data.tip_amount != undefined && vm.appointment_step_form_data.tip_amount> 0 && vm.appointment_step_form_data.bookingpress_deposit_total != undefined && vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price"){ total_payable_amount_temp = parseFloat(vm.appointment_step_form_data.bookingpress_deposit_total) + parseFloat(vm.appointment_step_form_data.tip_amount); } vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp ); if( 0 == total_payable_amount_temp ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount_temp; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp, true ); } /* 26 April 2023 changes */ if( 1 == is_cart_addon ){ if( "allow_customer_to_pay_full_amount" == deposit_method ){ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bookingpress_deposit_due_amt + tax_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt + tax_amount ); } else { if( 1 == vm.is_tax_activated ){ /* let tax_method = vm.appointment_step_form_data.tax_price_display_options; */ /* if( "exclude_taxes" == tax_method ){ */ let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); } else { vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } else { let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); }else{ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } } } /* 26 April 2023 changes */ } else { vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = bookingpress_deposit_amt; vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); if( 0 == subtotal_price ){ vm.appointment_step_form_data.total_payable_amount = subtotal_price; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( subtotal_price, true ); } if(payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "")){ var bookingpress_is_recurring_appointment_active = false; if(typeof vm.appointment_step_form_data.recurring_appointments != "undefined"){ if(vm.appointment_step_form_data.is_recurring_appointments == true || vm.appointment_step_form_data.is_recurring_appointments == "true"){ bookingpress_is_recurring_appointment_active = true; } } if( 1 == is_cart_addon && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = total_payable_amount; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); } if(bookingpress_is_recurring_appointment_active && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = subtotal_price; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = 0; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol(0); } } } } if(vm.appointment_step_form_data.selected_payment_method != " - " && vm.appointment_step_form_data.selected_payment_method != ""){ vm.appointment_step_form_data.selected_payment_method_org = vm.appointment_step_form_data.selected_payment_method; } var paypal_payment_method_type = "lagacy"; if(vm.appointment_step_form_data.total_payable_amount == 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { var final_document_divnew = document.getElementById("paypal-button-container"); vm.show_paypal_popup_button = "false"; if(final_document_divnew){ document.getElementById("paypal-button-container").style.display = "none"; } } else if(vm.appointment_step_form_data.total_payable_amount != 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { vm.show_paypal_popup_button = "true"; document.getElementById("paypal-button-container").style.display = "block"; vm.appointment_step_form_data.selected_payment_method = vm.appointment_step_form_data.selected_payment_method_org; } if( "undefined" == typeof vm.prevent_verification_on_load || false == vm.prevent_verification_on_load ){ this.bookingpress_verify_total_payment_amount(); } }, bookingpress_verify_total_payment_amount_v2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; } }.bind(this) ) .catch( function (error) { }); }, bookingpress_verify_total_payment_amount(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } vm.bkp_processing_token = true; let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; vm.bkp_processing_token = false; } if( vm.bkp_process_booking == true ){ vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { }); }, bookingpress_recalculate_payable_amount(){ return false; const vm = this; var bookingpress_recalculate_data = {}; bookingpress_recalculate_data.action = "bookingpress_recalculate_appointment_data"; bookingpress_recalculate_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_recalculate_data._wpnonce = bkp_wpnonce_pre_fetch; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ bookingpress_recalculate_data.client_timezone_offset = vm.bookingpress_timezone_offset; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ bookingpress_recalculate_data.client_dst_timezone = vm.bookingpress_dst_timezone; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_recalculate_data ) ) .then( function (response) { vm.appointment_step_form_data = response.data.appointment_data }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error) }); }, bookingpress_apply_coupon_code(final_call = false){ const vm = this; vm.coupon_apply_loader = "1"; var bookingpress_apply_coupon_data = {}; bookingpress_apply_coupon_data.action = "bookingpress_apply_coupon_code"; bookingpress_apply_coupon_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_apply_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_apply_coupon_data ) ) .then( function (response) { vm.coupon_apply_loader = "0"; vm.coupon_applied_status = response.data.variant; if(response.data.variant == "error"){ vm.coupon_code_msg = response.data.msg; vm.appointment_step_form_data.coupon_discount_amount = 0; /* for the coupon code error display */ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "flex"; } }else{ vm.coupon_code_msg = response.data.msg; vm.coupon_discounted_amount = "-" + response.data.discounted_amount; vm.bpa_coupon_apply_disabled = 1; vm.appointment_step_form_data.applied_coupon_res = { "coupon_data": response.data.coupon_data }; } vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; if(response.data.coupon_discount_amount > 0 ) { vm.appointment_step_form_data.bookingpress_temp_subtotal = response.data.bookingpress_temp_subtotal; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = response.data.bookingpress_temp_subtotal_with_currency; vm.appointment_step_form_data.coupon_discount_amount = response.data.coupon_discount_amount; vm.appointment_step_form_data.coupon_discount_amount_with_currecny = response.data.coupon_discount_amount_with_currecny; if( typeof response.data.tax_amount != "undefined" ){ vm.appointment_step_form_data.tax_amount_before_coupon = vm.appointment_step_form_data.tax_amount; vm.appointment_step_form_data.tax_amount_before_coupon_without_currency = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount = response.data.tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.total_payable_amount_with_currency; vm.appointment_step_form_data.calculated_tax_amount_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = response.data.tax_amount; } if( 0 == response.data.total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = response.data.total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( response.data.total_payable_amount, true ); } } vm.bookingpress_get_final_step_amount(); }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); }, bookingpress_remove_coupon_code(final_call = false){ const vm = this; let bookingpress_remove_coupon_data = { action: "bookingpress_remove_coupon_code", coupon_code: vm.appointment_step_form_data.coupon_code, }; let bkp_wpnonce_pre = "4ac51a523d"; let bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_remove_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_remove_coupon_data ) ) .then( function (response) { }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); vm.appointment_step_form_data.coupon_code = ""; vm.appointment_step_form_data.applied_coupon_res = ""; vm.coupon_code_msg = ""; /* vm.bookingpress_recalculate_payable_amount() */ vm.bpa_coupon_apply_disabled = 0; vm.coupon_applied_status = "error"; vm.coupon_discounted_amount = ""; vm.appointment_step_form_data.coupon_discount_amount = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = ""; if(typeof vm.appointment_step_form_data.tax_amount_before_coupon != "undefined") { vm.appointment_step_form_data.tax_amount = vm.appointment_step_form_data.tax_amount_before_coupon; vm.appointment_step_form_data.tax_amount_without_currency = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.calculated_tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon; } vm.bookingpress_get_final_step_amount(); }, generateSpamCaptchav2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_generate_spam_captcha", _wpnonce:bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.variant != "error" && (response.data.captcha_val != "" && response.data.captcha_val != undefined)){ }else{ var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch!="undefined" && bkp_wpnonce_pre_fetch!=null && response.data.updated_nonce!=""){ document.getElementById("_wpnonce").value = response.data.updated_nonce; } else { vm.$notify({ title: response.data.title, message: response.data.msg, type: response.data.variant, customClass: "error_notification" }); } if( "undefined" != typeof response.data.updated_ics_nonce && "" != response.data.updated_ics_nonce && null != document.getElementById( "bpa_ics_nonce" ) ){ document.getElementById( "bpa_ics_nonce" ).value = response.data.updated_ics_nonce; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, async bookingpress_render_thankyou_content(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; await vm.generateSpamCaptchav2(); var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_render_thankyou_content", bookingpress_uniq_id: vm.appointment_step_form_data.bookingpress_uniq_id, _wpnonce:bkp_wpnonce_pre_fetch }; if( "undefined" != typeof vm.load_synchronized_thankyou_page && true == vm.load_synchronized_thankyou_page ){ return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; const link = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item a"); const button = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item button"); // Focus on whichever element exists (prioritizing the link if both exist) if (link) { link.focus(); } else if (button) { button.focus(); } },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } else { axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } }, checkBeforeBookProAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_pro_before_book_appointment", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, bookingpress_book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; /* for the coupon code error hide start */ if( 1 == vm2.is_coupon_activated ){ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "none"; } } /* for the coupon code error hide end */ vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if( "undefined" != typeof vm2.bkp_processing_token && true == vm2.bkp_processing_token ){ vm2.bkp_process_booking = true; return false; } if(vm2.is_display_error != "1"){ /* vm2.appointment_step_form_data.service_timing = vm2.service_timing */ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_book_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.bkp_process_booking = false; var bookingpress_redirection_mode = "external_redirection"; if(bookingpress_redirection_mode == "external_redirection"){ if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else{ vm2.bookingpress_remove_error_msg(); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } setTimeout(function(){ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },2000); }else{ var bookingpress_uniq_id = vm2.appointment_step_form_data.bookingpress_uniq_id; if( "undefined" != typeof wp.hooks ){ wp.hooks.doAction("bookingpress_after_book_appointment"); } if(response.data.variant != "error"){ vm2.bookingpress_render_thankyou_content(); vm2.bookingpress_remove_error_msg(); if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "1"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "0"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "block"; document.getElementById("bpa-thankyou-screen-div").style.display = "none"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed == "undefined"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else{ vm2.appointment_step_form_data.is_transaction_completed = 1; document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; vm2.appointment_step_form_data.is_transaction_completed = ""; vm2.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } } } }.bind(this) ) .catch( function (error) { let errorText = ("undefined" != typeof error.response.statusText ) ? error.response.statusText : error; vm2.bookingpress_set_error_msg( error.response.status + " " + errorText); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, inputFormat() { let text = this.appointment_step_form_data.card_number.split(" ").join(""); /* this.cardVdid is not formated in 4 spaces */ this.cardVadid = text; if (text.length > 0) { /* regExp 4 in 4 number add an space between */ text = text.match(new RegExp(/.{1,4}/, "g")).join(" ") /* accept only numbers */ .replace(new RegExp(/[^\d]/, "ig"), " "); } /* this.appointment_step_form_data.card_number is formated on 4 spaces */ this.appointment_step_form_data.card_number = text; /* after formatd they callback cardType for choose a type of the card */ this.GetCardType(this.cardVadid); }, /* loop for the next 9 years for expire data on credit card */ expirationDate() { let yearNow = new Date().getFullYear(); for (let i = yearNow; i < yearNow + this.timeToExpire; i++) { this.years.push({ year: i }); } }, validCreditCard(value) { let inputValidate = document.getElementById("cardNumber"); /* luhn algorithm */ let numCheck = 0, bEven = false; value = value.toString().replace(new RegExp(/\D/g, "")); for (let n = value.length - 1; n >= 0; n--) { let cDigit = value.charAt(n), digit = parseInt(cDigit, 10); if (bEven && (digit *= 2) > 9) digit -= 9; numCheck += digit; bEven = !bEven; } let len = value.length; /* true: return valid number */ /* this.cardType return true if have an valid number on regx array */ if (numCheck % 10 === 0 && len === 16 && this.cardType) { inputValidate.classList.remove("notValid"); inputValidate.classList.add("valid"); this.isBookingDisabled = false; } /* false: return not valid number */ else if (!(numCheck % 10 === 0) && len === 16) { inputValidate.classList.remove("valid"); inputValidate.classList.add("notValid"); this.isBookingDisabled = true; /* if not have number on input */ } else { inputValidate.classList.remove("valid"); inputValidate.classList.remove("notValid"); this.isBookingDisabled = false; } }, /* get the name of the card name */ GetCardType(number) { this.regx.forEach((item) => { if (number.match(item.re) != null) { this.cardType = item.logo; /* cClass add a class with the name of cardName to manipulate with css */ this.cClass = item.name.toLowerCase(); } else if (!number) { this.cardType = ""; this.cClass = ""; } }); /* after choose a cardtype return the number for the luhn algorithm */ this.validCreditCard(number); }, /* mouse down on btn */ mouseDw() { this.btnClassName = "btn__active"; }, /* mouse up on btn */ mouseUp() { this.btnClassName = ""; }, blr() { let cr = document.getElementsByClassName("card--credit__card")[0]; if( null != cr && "undefined" != typeof cr.classList ){ cr.classList.remove("cvv-active") } }, async bookingpress_set_timezone(){ const vm = this; var bookingpress_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let clientTimezoneOffset = new Date().getTimezoneOffset(); /** get client timezone offset in minutes from UTC 0. If client is in UTC -10:00 timezone, then this line will return 600 minutes. If timezone is in daylight saving timezone then it will return 540 minutes ( 09:00 hours ) */ let client_timezone_offset = -1 * ( clientTimezoneOffset / 60 ); /** converted minutes into hours - returns -2 */ let offset_minute = client_timezone_offset % 1; /** Retrieve remaining minutes in case if the minutes falls with decimal numbers */ let final_offset = clientTimezoneOffset; /* hours + "" + minute; /** concate the hours and minutes */ vm.bookingpress_timezone = bookingpress_timezone; vm.bookingpress_timezone_offset = final_offset; vm.appointment_step_form_data.selected_date = vm.get_formatted_date( new Date() ); let is_dst_time = 0; let current_datetime = new Date(); let jan1 = new Date( current_datetime.getFullYear(), 0, 1, 0, 0, 0, 0 ); let temp = jan1.toGMTString(); let jan2 = new Date( temp.substring(0, temp.lastIndexOf(" ") - 1 ) ); let std_tz_offset = ( jan1 - jan2 ) / ( 1000 * 60 * 60 ); let june1 = new Date(current_datetime.getFullYear(), 6, 1, 0, 0, 0, 0); temp = june1.toGMTString(); let june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); let daylight_time_offset = (june1 - june2) / (1000 * 60 * 60); if( std_tz_offset != daylight_time_offset ){ is_dst_time = 1; } vm.bookingpress_dst_timezone = is_dst_time; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var bookingpress_postdata = { action: "bookingpress_set_clients_timezone", clients_timezone: bookingpress_timezone, _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_postdata ) ) .then( function (response){ } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_calculate_service_addons_price(service_id, service_name = "", service_price = "", service_price_without_currency = ""){}, bookingpress_calculate_service_addons_price_legacy(service_id, service_name = "", service_price = "", service_price_without_currency = ""){ const vm = this; vm.appointment_step_form_data.selected_service = service_id; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if(service_name != "" && service_price != "" && service_price_without_currency != ""){ vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; } var postData = { action: "bookingpress_calculate_service_addons_price", selected_service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if(vm.appointment_step_form_data.selected_service == service_id){ vm.appointment_step_form_data.selected_service_price = response.data.selected_service_total_price; vm.appointment_step_form_data.total_payable_amount = response.data.price_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.price_with_currency; vm.appointment_step_form_data.service_price_without_currency = response.data.price_without_currency; if(response.data.is_tax_calculated == 1){ vm.appointment_step_form_data.tax_amount = response.data.tax_amount; if(typeof vm.appointment_step_form_data.tax_amount_without_currency != "undefined") { vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; } } } } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_modify_front_dates_as_service(){ const vm = this; var service_id = vm.appointment_step_form_data.selected_service; if(vm.is_loaded_service_disabled_dates !== "undefined" && vm.is_loaded_service_disabled_dates != service_id){ vm.appointment_step_form_data.selected_date = vm.appointment_step_form_data.default_selected_date; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_change_front_calendar_dates", service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ /* vm.days_off_disabled_dates = response.data.disabled_dates */ vm.appointment_step_form_data.selected_date = response.data.next_selected_date; vm.is_loaded_service_disabled_dates = service_id; } } .bind( this ) ) .catch( function (error) { console.log(error); }); } }, bookingpress_hide_show_extra_description(bookingpress_extra_service_id){ const vm = this; let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ].service_extras; let selected_extra = selected_service_data[ bookingpress_extra_service_id ]; if( "undefined" != typeof selected_extra ){ if( "0" == selected_extra.bookingpress_is_display_description ){ selected_extra.bookingpress_is_display_description = "1"; } else { selected_extra.bookingpress_is_display_description = "0"; } } }, bookingpress_select_any_staffmember(){ const vm = this; let step_data = vm.bookingpress_sidebar_step_data["staffmembers"]; vm.appointment_step_form_data.select_any_staffmember = "true"; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; vm.appointment_step_form_data.selected_staff_member_id = 0; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = true; if( vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 && "undefined" != typeof vm.appointment_step_form_data.bpa_after_select_datetime_available_staff ){ let time_details_arr = vm.appointment_step_form_data.bpa_after_select_datetime_available_staff; if( 1 < time_details_arr.available_staffs.length ){ let available_staff_id = time_details_arr.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details_arr ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; if( ("undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1) && ("undefined" != typeof time_details.happy_hour_data ) ) { vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details_arr.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } else { if( "service" == step_data.next_tab_name && vm.bookingpress_sidebar_step_data[step_data.next_tab_name].is_display_step == 1 ){ vm.appointment_step_form_data.selected_service = ""; } vm.appointment_step_form_data.bpa_all_available_staff_member = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" && vm.appointment_step_form_data.selected_service == "" && vm.appointment_step_form_data.select_any_staffmember && vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected == true){ vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime = 1; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ vm.appointment_step_form_data.bpa_all_available_staff_member.push( currentValue.bookingpress_staffmember_id ); }); } for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; } else { vm.bpasortedServices[x].is_visible = false; } } } vm.bookingpress_step_navigation(step_data.next_tab_name, step_data.next_tab_name, step_data.previous_tab_name, 0); }, async bookingpress_select_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0, event){ if(event){ event.preventDefault(); if(event.key === "Enter"){ if(event.target.classList.contains("bpa-front-staff-rat-cb__item")){ return; } } } const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined" && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1 ) ){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.appointment_step_form_data.bpa_available_staffwise_service = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" ){ vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; } if( (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && "datetime" == vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name && vm.appointment_step_form_data.selected_service == "") && ( "undefined" == typeof vm.is_multi_staffmember_activate && vm.is_multi_staffmember_activate != 1 ) || ( "service" == vm.bookingpress_sidebar_step_data.datetime.next_tab_name && vm.appointment_step_form_data.selected_service == "" && (vm.appointment_step_form_data.hide_staff_selection == "true" || vm.appointment_step_form_data.hide_staff_selection == true)) ){ vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; let service_data_arr = vm.bookingpress_all_services_data; if (vm.bookingpress_staffmembers_details.length === 1) { selected_staffmember_id = vm.bookingpress_staffmembers_details[0].bookingpress_staffmember_id; } if( "any_staff" != selected_staffmember_id ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if( "undefined" != typeof service_arr.assigned_staffmembers ) { if (service_arr.assigned_staffmembers.includes(selected_staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); } } } } if( "any_staff" == selected_staffmember_id && "undefined" != vm.appointment_step_form_data.happy_hours_activated && 1 == vm.appointment_step_form_data.happy_hours_activated ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if ("undefined" != typeof service_arr.assigned_staffmembers) { for (let i = 0; i < vm.appointment_step_form_data.bpa_all_available_staff_member.length; i++) { let staffmember_id = vm.appointment_step_form_data.bpa_all_available_staff_member[i]; if (service_arr.assigned_staffmembers.includes(staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); break; } } } } } } let service_id = vm.appointment_step_form_data.selected_service; let service_data = vm.bookingpress_all_services_data[ service_id ]; let use_legacy_any_staff = false; if( selected_staffmember_id == "any_staff" && "undefined" != typeof service_data && "undefined" != typeof service_data.bookingpress_service_duration_unit && "d" == service_data.bookingpress_service_duration_unit ){ use_legacy_any_staff = true; } vm.appointment_step_form_data.any_staff_selected = 0; if( true == use_legacy_any_staff ){ return await vm.bookingpress_select_staffmember_legacy( selected_staffmember_id, is_any_staff_option_selected ); } else if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.any_staff_selected = 1; if( "" != vm.appointment_step_form_data.selected_service ){ vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } let assigned_staffs = []; service_data.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); let choose_from_url = false; let assigned_updated_staffs = []; if( 0 < bookingpress_is_selected_staff_from_url && 0 < assigned_staffs.length ){ let staff_id_from_url = bookingpress_is_selected_staff_from_url; if( assigned_staffs.includes( staff_id_from_url ) ){ assigned_staffs = [staff_id_from_url]; choose_from_url = true; } } if( 1 == assigned_staffs.length ){ vm.appointment_step_form_data.any_staff_selected = 0; let selected_staffmember_id = ( true == choose_from_url ) ? assigned_staffs[0] : service_data.assigned_staffmembers[0]; /*Added for applying selected staff memebr price */ let service_staff_details = service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); /*Added for applying selected staff memebr price */ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.hide_capacity_text_flag = false; } else { vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; } } else { if( "service" == vm.bookingpress_current_tab ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; let assigned_staffs = []; for (let x in vm.bpasortedServices) { let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && false == elm.is_disabled ){ elm.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if ("" == first_service_category) { first_service_category = elm.bookingpress_category_id; } } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; let hidden_category_for_staff = []; for (let ci in vm.service_categories) { let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; /* if (category_staff.indexOf(response.data.staffmember_id.toString()) < 0) { hidden_category_for_staff.push(category_id); } */ } if ("" != first_service_category) { for (let c in vm.bookingpress_all_categories) { vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if (current_category.category_id == first_service_category) { vm.bpa_select_category(current_category.category_id, current_category.category_name); } else { if (hidden_category_for_staff.indexOf(current_category.category_id.toString()) > -1) { vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } } vm.hide_capacity_text_flag = false; } } else { vm.hide_capacity_text_flag = false; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.available_staffs = []; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; if( vm.is_bring_anyone_with_you_activated == 1 ){ let service_min_capacity = selected_service_data.staff_member_details[ selected_staffmember_id].bookingpress_min_service_capacity; if( service_min_capacity != "undefined" && vm.appointment_step_form_data.bookingpress_selected_bring_members < service_min_capacity ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); } } let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let consider_staff_price = true; if( ( typeof vm.appointment_step_form_data.bpa_datetime_after_staffselection !== "undefined" && vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 ) && ( typeof vm.appointment_step_form_data.is_happy_hours_applied !== "undefined" && vm.appointment_step_form_data.is_happy_hours_applied == 1 ) ) { consider_staff_price = false; } if ( true == consider_staff_price ) { let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } } let step_data = "staffmembers"; let f = 0; let is_club_staff = "0"; if(typeof vm.appointment_step_form_data.is_club_staff != "undefined" && vm.appointment_step_form_data.is_club_staff == "1"){ is_club_staff = "1"; } if( "staffmembers" == vm.bookingpress_current_tab ){ if(is_club_staff == "0"){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, async bookingpress_select_staffmember_legacy(selected_staffmember_id, is_any_staff_option_selected = 0){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined"){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_any_staffmember_id", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.bookingpress_repeat_custom_form_fields( vm.appointment_step_form_data.selected_service ); } } else { postData.selected_bring_members = 1; } return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if( 1 > response.data.staffmember_id ){ for( let s in vm.bookingpress_staffmembers_details ){ let staffmember_details = vm.bookingpress_staffmembers_details[s]; let staffmember_selected_services = staffmember_details.assigned_service_details.includes(vm.appointment_step_form_data.selected_service); if( staffmember_selected_services ){ let staffmember_id = staffmember_details.bookingpress_staffmember_id; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( staffmember_id ) < 0 ){ response.data.staffmember_id = staffmember_id; } } } } vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let set_service_visibility = false; if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } else { if( "staffmembers" == vm.bookingpress_current_tab && "" != vm.appointment_step_form_data.selected_staff_member_id ){ set_service_visibility = true; } } if( "service" == vm.bookingpress_current_tab || true == set_service_visibility ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( response.data.staffmember_id.toString() ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } if( "" != first_service_category ){ for( let c of vm.service_categories ){ if( c.bookingpress_category_id == first_service_category ){ vm.bpa_select_category( c.bookingpress_category_id, c.bookingpress_category_name ); break; } } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( response.data.staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; /* vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); */ } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( response.data.staffmember_id ); } } vm.bpa_select_category( "" ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }else{ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } let step_data = "staffmembers"; let f = 0; if( "staffmembers" == vm.bookingpress_current_tab ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ){ const vm = this; /** Enable Bring Any one if the service has only 1 capacity but the selected staff has more that 1 capacity */ let is_bring_anone_displayed = document.querySelectorAll(".--bpa-sao-guest-module"); if( "" == selected_staffmember_id || 1 > selected_staffmember_id ){ return false; } let selected_service = vm.appointment_step_form_data.selected_service; if( "" == selected_service ){ return false; } let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; if( staffmember_id == selected_staffmember_id ){ let assigned_service_price_list = current_staffmember.assigned_service_price_details; let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( "undefined" == typeof vm.bookingpress_bring_anyone_with_you_details[selected_service] ){ vm.bookingpress_bring_anyone_with_you_details[selected_service] = { "bookingpress_service_id": selected_service, "bookingpress_service_max_capacity": parseInt(max_capacity), "bookingpress_service_min_capacity": parseInt(min_capacity), }; } else { vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_max_capacity = parseInt(max_capacity); vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_min_capacity = parseInt(min_capacity); } vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); } } }, bookingpress_is_in_viewport(element) { const rect = element.getBoundingClientRect(); return ( rect.bottom > 0 && rect.right > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight) && rect.left < (window.innerWidth || document.documentElement.clientWidth) ); }, bookingpress_close_extra_drawer(){ const vm = this; if( "undefined" != typeof vm.bpa_show_extras_drawer && false == vm.bpa_show_extras_drawer ){ return; } let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_focus = document.getElementById("bap-service-" + selected_service); const target = document.querySelector(".bpa-front-dc--service-body"); if(selected_service_focus && this.bookingpress_is_in_viewport(target)){ selected_service_focus.focus(); } vm.appointment_step_form_data.selected_service = ""; vm.appointment_step_form_data.selected_service_name = ""; vm.appointment_step_form_data.selected_service_price = ""; vm.appointment_step_form_data.service_price_without_currency = ""; if( "" != selected_service ){ let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_extras = ( "undefined" != typeof selected_service_data.service_extras ) ? selected_service_data.service_extras : false; if( false != service_extras ){ for( let se in service_extras ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_selected_qty = 1; } } } vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); /** reset bring anyone details */ if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = 1; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; } }, bookingpress_get_service_capacity(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } const vm = this; var postData = { action: "bookingpress_get_service_max_capacity", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.appointment_step_form_data.service_max_capacity = response.data.max_capacity } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_service_advance_see_less(){ const vm = this; vm.service_advance_see_less = "1"; vm.bookingpress_close_extra_drawer(); }, bookingpress_load_more_extras(){ const vm = this; if(vm.is_load_more_extras == "0"){ vm.is_load_more_extras = "1"; }else{ vm.is_load_more_extras = "0"; } }, bpa_focus_select_elm( $el ){ const vm = this; setTimeout(function(){ let elm = $el.querySelector(".el-input.is-focus");// .el-input.is-focus"); let parentNode = vm.BPAGetParents( elm, ".bpa-bd-fields--sel-container" ); if( parentNode.length > 0 ){ let firstParent = parentNode[0]; firstParent.classList.add( "bpa-sel--focus" ); } },100); }, bpa_remove_focus_select_elm($el){ let elm = document.querySelector( ".bpa-sel--focus" ); }, bookingpress_selectpicker_set_position( flag ){ const vm = this; if( true == flag ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( document.querySelector(".bpa-focused-select") != null && is_admin_bar_visible ) { setTimeout(function(){ let top_pos = document.querySelector(".bpa-focused-select").style.top; top_pos = parseInt( top_pos.replace("px","") ); document.querySelector(".bpa-focused-select").style.top = ( top_pos + 32 ) + "px"; },10); } if( document.querySelector(".bpa-focused-select") != null ) { setTimeout(function(){ const allselectcontainer = document.querySelectorAll(".bpa-bd-fields--sel-container"); if(typeof allselectcontainer != "undefined"){ var has_added = false; allselectcontainer.forEach((selcontItem) => { var questyle = selcontItem.querySelector(".bpa-focused-select"); if(typeof questyle != "undefined"){ const display = window.getComputedStyle(questyle).display; if(display != "none" && !has_added){ selcontItem.classList.add( "bpa-sel--focus" ); has_added = true; } } }); } },100); } } if( false == flag ){ if( document.querySelector(".bpa-bd-fields--sel-container") != null ) { let elm = document.querySelector(".bpa-bd-fields--sel-container") const range_inputs = document.querySelectorAll(".bpa-bd-fields--sel-container"); for (const range_input of range_inputs) { range_input.classList.remove( "bpa-sel--focus" ); } } } }, bookingpress_set_datepicker_position( event ){ let popperElm = document.querySelector(".bpa-custom-datepicker"); if( popperElm != null ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( is_admin_bar_visible ){ setTimeout(function(){ let top_pos = popperElm.style.top; top_pos = parseInt( top_pos.replace("px","") ); popperElm.style.top = ( top_pos + 32 ) + "px"; },10); } } }, bookingpress_get_service_categories_from_staffmembers(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_service_cat_details", staffmember_id: vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.service_categories = response.data.service_categories_data; var bookingpress_first_cat_id = response.data.first_cat_id; vm.services_data = []; setTimeout(function(){ vm.selectStepCategory(bookingpress_first_cat_id); }, 500); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_update_staffmember_data( number_of_guests, selected_service_id = "" ){ const vm = this; vm.bookingpress_disabled_staffmember = []; let selected_service = vm.appointment_step_form_data.selected_service; if( selected_service == "" || ( (selected_service_id != "") && (selected_service != selected_service_id) ) ){ selected_service = selected_service_id; } let guests_count = number_of_guests - 1; let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = true; let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; let assigned_service_price_list = current_staffmember.assigned_service_price_details; if( "undefined" != typeof assigned_service_price_list[ selected_service ] ){ let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; if( max_capacity < (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } if( vm.is_bring_anyone_with_you_activated == "1" ){ let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( min_capacity > (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } } } } }, bookingpress_close_extra_drawer_on_mouseup(){ const vm = this; window.addEventListener( "mouseup", function(e){ if( null != document.querySelector(".bpa-front-dc--service-body") ){ let div = document.querySelector(".bpa-front-dc--service-body"); let scrollbarWidth = div.offsetWidth - div.clientWidth; let scrollbarHeight = div.offsetHeight - div.clientHeight; let isVerticalScrollbarClick = (e.offsetX >= div.clientWidth && e.offsetX <= div.offsetWidth ); let isHorizontalScrollbarClick = e.offsetY >= div.clientHeight; if (scrollbarWidth > 0 && isVerticalScrollbarClick) { return; } } let elem = e.target; let htmlWidth = document.querySelector("html").offsetWidth; if( htmlWidth < e.clientX ){ return; } let parentNode = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options" ); let parentNodeBawy = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options-popper" ); let is_mob = false; let bpa_parent_container = document.querySelector( ".bpa-frontend-main-container" ); let is_visible = true; if( null != bpa_parent_container && 1 > bpa_parent_container.offsetWidth ){ is_visible = false; } if( parentNode.length < 1 && parentNodeBawy.length < 1 && "true" == vm.bookingpress_open_extras_drawer && "service" == vm.bookingpress_current_tab && "true" == vm.bookingpress_open_extras_drawer && true == is_visible ){ let allow_close_drawer = wp.hooks.applyFilters( "bpa_allow_close_draer", true, is_visible, elem, parentNode, parentNodeBawy ); if( true == allow_close_drawer ){ let mob_extra = document.querySelector( ".bpa-fm--service__advance-options.--bpa-is-mob" ); if( mob_extra == null ){ vm.bookingpress_close_extra_drawer(); } else { let mob_pos = mob_extra.getBoundingClientRect(); if( mob_pos.width == 0 && mob_pos.height == 0 ){ vm.bookingpress_close_extra_drawer(); } } } } }); }, BPAGetParents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, bookingpress_get_formatted_datetime(event,field_meta_key,is_time_enabled) { if(event != null){ if(is_time_enabled == true) { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_datetime(event); } else { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_date(event); } } }, openExtraServicePopover() { // Access the popover methods directly const vm = this; this.$nextTick( () =>{ vm.$refs.extra_service_desc_popover.doToggle(); }); }, openRecurringSessionPopover() { const vm = this; this.$nextTick( () =>{ // Access the popover methods directly vm.$refs.recurring_session_desc_popover.doToggle(); }); }, BPACustomerFileUpload(response, file, fileList){ const vm = this; let ref = response.reference; if( response.error == 1 ){ vm.$refs[ ref ][0].$options.parent.validateMessage = response.msg; vm.$refs[ ref ][0].$options.parent.validateState = "error"; vm.$refs[ ref ][0].clearFiles(); } else { vm.$refs[ref][0].$options.parent.validateMessage = ""; vm.$refs[ref][0].$options.parent.validateState = ""; const uploadUrl = response.upload_url; const fileRef = response.file_ref; if (Array.isArray(vm.appointment_step_form_data[fileRef])) { vm.appointment_step_form_data[fileRef].push(uploadUrl); } else if (vm.appointment_step_form_data[fileRef]) { vm.appointment_step_form_data[fileRef] = [ vm.appointment_step_form_data[fileRef], uploadUrl, ]; } else { vm.appointment_step_form_data[fileRef] = [uploadUrl]; } vm.appointment_step_form_data.form_fields[fileRef] = vm.appointment_step_form_data[fileRef]; } }, BPACustomerFileUploadError(err, file, fileList){ /** Need to handle error but currently no error is reaching to this function */ if( file.status == "fail" ){ console.log( err ); } }, BPACustomerhandleFileExceed(files, fileList ) { const vm = this; vm.bookingpress_set_error_msg( vm.appointment_step_form_data.bpa_fileupload_max_limit_reach_msg ); }, BPACustomerFileUploadRemove( file, fileList ){ const vm = this; let response = file.response; vm.appointment_step_form_data[ response.file_ref ] = ""; vm.appointment_step_form_data.form_fields[ response.file_ref ] = ""; let postData = { action:"bpa_remove_form_file", _wpnonce: "4ac51a523d", uploaded_file_name: response.upload_file_name }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function( response ){ }).catch( function( error ){ }); }, BPAConvertBytesToMB( bytes){ return (bytes / (1024 * 1024)).toFixed(0); }, bookingpress_reset_selected_timeslot_data(){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && "1" == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ return; } vm.appointment_step_form_data.selected_start_time = ""; }, bookingpress_reset_custom_duration_data() { const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } ; }, bookingpress_step_navigator( current_tab, next_tab, previous_tab ){ let vm = this; let is_strict_validate = false; let current_selected_tab = vm.bookingpress_current_tab; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( current_selected_tab ); /** Current Tab Position */ let selected_tab_pos = sidebar_keys.indexOf( current_tab ); /** Clicked Tab Position */ if( selected_tab_pos < current_tab_pos ){ vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab, 0 ); } else { vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab ); } }, bookingpress_change_service_extras_event( is_checked ){ const vm = this; }, bookingpress_change_service_extras_qty( is_checked ){ const vm = this; vm.$forceUpdate(); }, bookingpress_set_extra_service_error_msg(error_msg){ const vm = this; vm.is_display_extra_service_error = 1; vm.extra_service_error_msg = error_msg; setTimeout(function(){ vm.bookingpress_remove_extra_service_error_msg(); },6000); }, bookingpress_remove_extra_service_error_msg(){ const vm = this; vm.is_display_extra_service_error = "0"; vm.extra_service_error_msg = ""; }, bookingpress_change_custom_duration(event) { const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_day_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_day_loader = true; vm.bpa_skip_loading_csd_slot = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, bookingpress_change_custom_duration_first(event){ const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_loader = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, handle_staff_key_events(event){ const focusableItems = document.querySelectorAll(".bpa-front-module--staff-item-row .bpa-front-sm--col:not([style*='display: none']) .bpa-front-sm-card"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + 3) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - 3 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa_search_service_data_cls .bpa_search_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } if(typeof this.bpaMoveFocusToPreviousElement !== "undefined"){ this.bpaMoveFocusToPreviousElement( this.$refs.staffmemberItemsGroup, focusElement); } } }, focusFirstStaff(){ this.$nextTick( () =>{ const is_any_staff_col = document.querySelectorAll(".bpa-front-module--staff-item-row .--bpa-sm-is-any-staff-col .bpa-front-sm-card"); if(is_any_staff_col.length){ is_any_staff_col[0].focus(); }else if( this.$refs.staffmember.length ){ this.$refs.staffmember[0].focus(); } }); }, get_formatted_date(iso_date){ if( true == /(\d{2})\T/.test( iso_date ) ){ let date_time_arr = iso_date.split("T"); return date_time_arr[0]; } var __date = new Date(iso_date); var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date; }, get_formatted_datetime(iso_date) { var __date = new Date(iso_date); var hour = __date.getHours(); var minute = __date.getMinutes(); var second = __date.getSeconds(); if (minute < 10) { minute = "0" + minute; } if (second < 10) { second = "0" + second; } var formatted_time = hour + ":" + minute + ":" + second; var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date+" "+formatted_time; }, bookingpress_set_error_msg(error_msg){ const vm = this; let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } vm.is_display_error = "1"; vm.is_error_msg = error_msg; const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ window.scrollTo({ top: pos, behavior: "smooth", }); } setTimeout(function(){ vm.bookingpress_remove_error_msg(); },6000); }, bookingpress_remove_error_msg(){ const vm = this; vm.is_display_error = "0"; vm.is_error_msg = ""; }, checkBeforeBookAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_before_book_appointment",_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if(vm2.is_display_error != "1"){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_save_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; if(response.data.variant == "redirect"){ vm2.bookingpress_remove_error_msg(); vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); }else{ vm2.bookingpress_remove_error_msg(); } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } }.bind(this) ) .catch( function (error) { vm2.bookingpress_set_error_msg(error); }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, bpa_check_browser(){ const vm = this; let userAgent = navigator.userAgent; let browserName; if(userAgent.match(/edg/i)){ browserName = "edge"; } else if(userAgent.match(/opr\//i)){ browserName = "opera"; } else if(userAgent.match(/chrome|chromium|crios/i)){ browserName = "chrome"; } else if(userAgent.match(/firefox|fxios/i)) { browserName = "firefox"; } else if(userAgent.match(/safari/i)) { browserName = "safari"; } else { browserName="Unknown"; } vm.browser_details = browserName; }, bpa_check_browser_version(){ const vm = this; var objappVersion = navigator.appVersion; var browserAgent = navigator.userAgent; var browserName = navigator.appName; var browserVersion = "" + parseFloat(navigator.appVersion); var browserMajorVersion = parseInt(navigator.appVersion, 10); var Offset, OffsetVersion, ix; /* For Chrome */ if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) { browserName = "Chrome"; browserVersion = browserAgent.substring(OffsetVersion + 7); } /* For Microsoft internet explorer */ else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) { browserName = "Microsoft Internet Explorer"; browserVersion = browserAgent.substring(OffsetVersion + 5); } /* For Firefox */ else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) { browserName = "Firefox"; } /* For Safari */ else if ((OffsetVersion = browserAgent.indexOf("Safari")) != -1) { browserName = "Safari"; browserVersion = browserAgent.substring(OffsetVersion + 7); if ((OffsetVersion = browserAgent.indexOf("Version")) != -1) browserVersion = browserAgent.substring(OffsetVersion + 8); } /* For other browser "name/version" is at the end of userAgent */ else if ((Offset = browserAgent.lastIndexOf(" ") + 1) < (OffsetVersion = browserAgent.lastIndexOf("/"))) { browserName = browserAgent.substring(Offset, OffsetVersion); browserVersion = browserAgent.substring(OffsetVersion + 1); if (browserName.toLowerCase() == browserName.toUpperCase()) { browserName = navigator.appName; } } /* Trimming the fullVersion string at */ /* semicolon/space if present */ if ((ix = browserVersion.indexOf(";")) != -1) browserVersion = browserVersion.substring(0, ix); if ((ix = browserVersion.indexOf(" ")) != -1) browserVersion = browserVersion.substring(0, ix); browserMajorVersion = parseInt("" + browserVersion, 10); if (isNaN(browserMajorVersion)) { browserVersion = "" + parseFloat(navigator.appVersion); browserMajorVersion = parseInt(navigator.appVersion, 10); } vm.browser_version = browserMajorVersion; }, focusFirstService(){ if(app.current_screen_size == "desktop"){ this.$nextTick( () =>{ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); if( focusableItems.length ){ focusableItems[0].focus(); } }); } }, focusFirstDate(){ var firstDate = document.querySelectorAll(".vc-day.in-month [aria-disabled=false]"); if(firstDate){ if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); }else if(firstDate.length == 0){ firstDate = document.querySelectorAll(".vc-day.in-month .vc-day-content:not(.is-disabled)"); if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); } } } }, focusFirstTimeSlot(){ this.$nextTick( () =>{ if( this.$refs.timeSlotItems.length ){ this.$refs.timeSlotItems[0].focus(); } }); }, focustFirstCategory(){ this.$nextTick(() => { if (this.$refs.categoryItem.length) { this.$refs.categoryItem[0].focus(); } }); }, bpa_handle_service_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); // Update with your actual class let currentIndex = -1; let itemsPerRow = 2; if(window.outerWidth >= 1200){ itemsPerRow = 2; }else if(window.outerWidth < 950){ itemsPerRow = 1; } const active_container = document.querySelector(".bpa-front-module--service").offsetWidth; if(active_container && active_container.offsetWidth < 800){ itemsPerRow = 1; } // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); // bpa-fm--service__advance-options __bpa-is-active setTimeout(() => { let extraServiceFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-service-extras .el-checkbox__inner"); let recurringFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-guest-module .el-input__inner"); if(extraServiceFocus !== null){ extraServiceFocus.focus(); }else if (recurringFocus !== null){ recurringFocus.focus(); } }, 100); } else if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + itemsPerRow) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - itemsPerRow + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); this.bpaMoveFocusToPreviousElement( this.$refs.servicesGroup ); } }, bpa_handle_timeslot_keypress(index, event) { const groups = document.querySelectorAll(".bpa-front--dt__ts-body--row"); // row/groups const focusableItems = document.querySelectorAll(".bpa-front--dt__ts-body .bpa-front--dt__ts-body--item"); // Items let currentIndex = -1; let currentGroupIndex = -1; let itemIndexInGroup = -1; // Find the currently focused item and its group focusableItems.forEach((item, idx) => { if (item === document.activeElement) { currentIndex = idx; // Find which group this item belongs to for (let i = 0; i < groups.length; i++) { if (groups[i].contains(item)) { currentGroupIndex = i; // Find position within the group const groupItems = groups[i].querySelectorAll(".bpa-front--dt__ts-body--item"); for (let j = 0; j < groupItems.length; j++) { if (groupItems[j] === item) { itemIndexInGroup = j; break; } } break; } } } }); if (currentIndex === -1) return; // No focusable item is selected const itemsPerRow = 2; // Based on your screenshot showing 2 time slots per row if (event.key === "ArrowRight") { event.preventDefault(); // If at the end of the group, move to the first item of the next group if (itemIndexInGroup === groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length - 1) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Move to the next item in the same group let nextIndex = currentIndex + 1; if (nextIndex < focusableItems.length) { focusableItems[nextIndex].focus(); } } } else if (event.key === "ArrowDown") { event.preventDefault(); const itemsInCurrentGroup = groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length; const rowsInCurrentGroup = Math.ceil(itemsInCurrentGroup / itemsPerRow); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup >= rowsInCurrentGroup - 1 || currentIndex + itemsPerRow >= focusableItems.length) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group let nextIndex = currentIndex + itemsPerRow; const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if(itemsInCurrentGroup % 2 == 0 && nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); }else if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Stay in the same group, move down a row let nextIndex = currentIndex + itemsPerRow; if(currentIndex == itemsInCurrentGroup - 2 && itemsInCurrentGroup % 2 == 1 && (nextIndex + 1) < focusableItems.length){ focusableItems[nextIndex + 1].focus(); }else if(nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); } // if(nextIndex < focusableItems.length) } } else if (event.key === "ArrowLeft") { event.preventDefault(); // If at the beginning of the group, move to the last item of the previous group if (itemIndexInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { prevGroupItems[prevGroupItems.length - 1].focus(); } } } else { // Move to the previous item in the same group let prevIndex = currentIndex - 1; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if (event.key === "ArrowUp") { event.preventDefault(); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { let howMuchMinus = 1; if(itemIndexInGroup == 0 && prevGroupItems.length % 2 == 0){ howMuchMinus = 2; }else if(itemIndexInGroup == 1 && prevGroupItems.length % 2 == 0){ howMuchMinus = 1; }else{ if(itemIndexInGroup == 1 && prevGroupItems.length > 2){ howMuchMinus = 2; } } prevGroupItems[prevGroupItems.length - howMuchMinus].focus(); } } } else { // Stay in the same group, move up a row const prevIndex = currentIndex - itemsPerRow; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if ("Tab" == event.key && event.shiftKey && 0 === currentIndex) { event.preventDefault(); this.bpaMoveFocusToPreviousElement(this.$refs.timeSlotItemsGroup); } }, bpa_handle_category_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-cat-items-wrapper .bpa-front-ci-pill"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = document.querySelector(".bpa_search_service_data_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } this.bpaMoveFocusToPreviousElement( this.$refs.categoryGroup, focusElement ); } }, bpa_handle_pg_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-fm--bs__deposit-payment-module .bpa-front-form-control--radio"); if(focusElement == null){ focusElement = document.querySelector(".bpa-fm--bs-amount-item .bpa-is-tip-edit-icon svg"); if(focusElement == null){ focusElement = document.querySelectorAll(".bpa-fm--bs__coupon-module-textbox .el-button"); focusElement = focusElement[focusElement.length - 1]; if(focusElement == null){ focusElement = document.querySelector(".bpa-front-summary-content__lg .bpa--summary_service_datetime_count_name"); } } } this.bpaMoveFocusToPreviousElement( this.$refs.paymentGatewayItemsGroup, focusElement ); } }, focusFirstPaymentGateway(){ this.$nextTick( () =>{ const paymentGatewayItem = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if( paymentGatewayItem !== null ){ paymentGatewayItem.focus(); } }); }, bpaMoveFocusToPreviousElement( currentElement, focusOnElement = false ){ if(focusOnElement){ focusOnElement.focus(); return; } const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex - 1].focus(); } }, bpaMoveFocusToNextElement( currentElement ){ const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex + 1].focus(); } }, bpa_select_category( selected_cat_id, selected_cat_name, total_services, total_category){ const vm = this; let category_id = parseInt( selected_cat_id ); vm.isLoadClass = 0; if( 0 == selected_cat_id ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } else { if( vm.bookingpress_all_services_data != "" ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; let current_category = current_service.bookingpress_category_id; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = false; if( current_category == category_id ){ vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; } if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } } setTimeout(function(){ vm.isLoadClass = 1; },1); vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; }, selectStepCategory(selected_cat_id, selected_cat_name = "", total_services = 0, total_category="", display_warn = true ){ if( true == display_warn ){ console.trace("Deprecated step category function " ); console.warn("selectStepCategory function is deprecated. Please update the BookingPress lite, premium, and add-ons to the latest version"); } const vm = this; vm.isLoadClass = 0; if( 0 == selected_cat_id ){ let temp_services = []; let m = 0; for( let x in vm.bpa_services_data_from_categories ){ let service_details = vm.bpa_services_data_from_categories[x]; for( let n in service_details ){ let current_service = service_details[n]; if( "undefined" != typeof current_service.bookingpress_staffmembers ){ let selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( current_service.bookingpress_staffmembers.includes( selected_staffmember ) && selected_staffmember != ""){ var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position); temp_services[bookingpress_service_pos] = current_service; } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } m++; } } var bpa_temp_services= []; temp_services.sort(); for( let n in temp_services ){ if(temp_services[n] != "") { bpa_temp_services[n] = temp_services[n]; } } vm.services_data = bpa_temp_services.sort(); } else { vm.services_data = vm.bpa_services_data_from_categories[selected_cat_id]; if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } } vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; setTimeout(function(){ vm.isLoadClass = 1; },1); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } }, async selectDate(selected_service_id, service_name, service_price, service_price_without_currency, is_move_to_next, service_duration_val = "",service_duration_unit = ""){ const vm = this; if(typeof vm.appointment_step_form_data.cart_items == "undefined" && (selected_service_id != vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_date != "")){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date; let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } if( ("undefined" != typeof vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ) && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ vm.appointment_step_form_data.selected_date = newDate; vm.appointment_step_form_data.selected_end_date = newDate; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } } this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && 1 == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ) { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; } if( "undefined" != typeof vm.appointment_step_form_data.selected_staff_member_id && "" != vm.appointment_step_form_data.selected_staff_member_id ){ let current_selected_tab = "service"; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( "service" ); let selected_tab_pos = sidebar_keys.indexOf( "staffmembers" ); if( "undefined" == typeof vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url || vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == "0" ){ if( selected_tab_pos > current_tab_pos || sidebar_step_data.staffmembers.is_display_step == 0 ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } } } let is_drawer_opened = "false"; let use_drawer_flag = false; /* vm.appointment_step_form_data.is_extra_service_exists = "0"; if( vm.bookingpress_is_extra_enable == 1){ use_drawer_flag = true; for( let i in vm.appointment_step_form_data.bookingpress_selected_extra_details ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_selected_qty = 1; } for( let n in vm.all_services_data ){ let element = vm.all_services_data[n]; if( element.bookingpress_service_id == selected_service_id && element.extra_service_counter > 0 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; vm.isServiceLoadTimeLoader = "1"; } } } */ if( vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection == "false" && vm.appointment_step_form_data.form_sequence[0] != "staff_selection" ){ for( let index in vm.bookingpress_staffmembers_details ){ let currentValue = vm.bookingpress_staffmembers_details[index]; vm.bookingpress_staffmembers_details[index].is_display_staff = false; if("undefined" != typeof currentValue.assigned_service_price_details && "undefined" != typeof currentValue.assigned_service_price_details[selected_service_id] && "public" == vm.bookingpress_staffmembers_details[index].staffmember_visibility ){ vm.bookingpress_staffmembers_details[index].is_display_staff = true; } } if( "" == vm.appointment_step_form_data.selected_staff_member_id || 0 == vm.appointment_step_form_data.selected_staff_member_id ){ let next_tabname = vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name; if( "datetime" == next_tabname && 1 == vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate ){ vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate = 0; } } /* let is_staff_exists = 0; let total_staff = 0; let total_private_staff = 0; let deselect_staff = false; let staff_id = vm.appointment_step_form_data.selected_staff_member_id; let available_staffs = []; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(selected_service_id)){ if( currentValue.staffmember_visibility == "private" ){ total_private_staff++; } total_staff++; is_staff_exists = 1; available_staffs.push( currentValue.bookingpress_staffmember_id ); } }); if( available_staffs.length > 0 && staff_id > 0 && !available_staffs.includes( staff_id ) ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } if( 1 == is_staff_exists ){ if( total_staff == total_private_staff ){ await vm.bookingpress_select_staffmember("any_staff", 1); is_staff_exists = 0; vm.appointment_step_form_data.is_staff_exists = 0; vm.appointment_step_form_data.hide_staff_selection = "true"; } else { vm.isServiceLoadTimeLoader = "1"; is_drawer_opened = "true"; vm.appointment_step_form_data.is_staff_exists = 1; } } */ } if( ("false" == is_move_to_next && "false" == is_drawer_opened) ){ if( (vm.bookingpress_cart_addon == 1 && vm.appointment_step_form_data.hide_service_selection_step == "true" ) ){ is_move_to_next = "false"; } else { is_move_to_next = "true"; } } if( "true" == is_move_to_next && "d" == vm.appointment_step_form_data.selected_service_duration_unit ){ if( 0 == vm.bookingpress_sidebar_step_data.service.is_display_step && "datetime" == vm.bookingpress_current_tab ){ is_move_to_next = false; } } let current_selected_service = vm.appointment_step_form_data.selected_service; vm.bookingpress_remove_extra_service_error_msg(); if( "undefined" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && "" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && vm.bookingpress_sidebar_step_data.service.is_display_step == 1 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); const params = new URLSearchParams(window.location.search); if (params.get("book_again") == 1 && vm.is_staffmember_activated == 1) { document.body.classList.remove("--bpa-open-advance-drawer"); } vm.isServiceLoadTimeLoader = "0"; vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; is_move_to_next = false; } else { vm.appointment_step_form_data.is_extra_service_exists = "0"; } if( selected_service_id != "" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ){ let sidebar_step_data = vm.bookingpress_sidebar_step_data; /** Check if staff member is enabled, visible and after service step */ if( vm.is_staffmember_activated == 1){ if( sidebar_step_data.staffmembers.is_first_step == 0 ){ let max_capacity = 1; let min_capacity = 1; let staffmember_details = vm.bookingpress_staffmembers_details; let staff_capacities = []; let staff_min_capacities = []; staffmember_details.forEach( (element,index) =>{ if( "undefined" == typeof element.assigned_service_price_details[ selected_service_id ] ){ return true; } let staff_services = element.assigned_service_price_details[ selected_service_id ]; let staff_capacity = staff_services.assigned_service_capacity; staff_capacities.push( parseInt(staff_capacity) ); if( vm.is_bring_anyone_with_you_activated == 1 ){ let staff_min_capacity = staff_services.assigned_service_min_capacity; staff_min_capacities.push( parseInt(staff_min_capacity) ); } }); max_capacity = Math.max.apply(null, staff_capacities); vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ min_capacity = Math.min.apply(null, staff_min_capacities); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } else { let staff_id = vm.appointment_step_form_data.selected_staff_member_id; if( "" != staff_id ){ let staff_details; vm.bookingpress_staffmembers_details.forEach( (element,index) => { if( element.bookingpress_staffmember_id == staff_id ){ staff_details = element; return false; } }); if( staff_details != "" ){ let staff_service_data = staff_details.assigned_service_price_details[ selected_service_id ]; let staff_service_capacity = staff_service_data.assigned_service_capacity; let staff_service_min_capacity = staff_service_data.assigned_service_min_capacity; vm.appointment_step_form_data.service_max_capacity = parseInt(staff_service_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(staff_service_min_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } } } } else if( 1 != vm.is_staffmember_activated ){ /* vm.all_services_data.forEach( (element, index) => { if( "" == element.service_max_capacity ){ element.service_max_capacity = 1; } if( element.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.service_max_capacity = parseInt( element.service_max_capacity ); return false; } }); */ vm.appointment_step_form_data.service_max_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.max_capacity; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.service_min_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.min_capacity; vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } /** Check if service max capacity > 1 and quantity feature is enabled */ if( vm.is_bring_anyone_with_you_activated == 1 && 1 < vm.appointment_step_form_data.service_max_capacity /*&& this.is_service_loaded_from_url != "1" /* && "true" == is_move_to_next */ ){ is_move_to_next = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "1"; } } if( typeof vm.appointment_step_form_data.cart_items == "undefined" ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { if( 0 > vm.appointment_step_form_data.cart_item_edit_index ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { /** Reputelog - need to check custom service duration with cart add-on while edit appointment from cart */ let cart_edit_index_id = vm.appointment_step_form_data.cart_item_edit_index; let cart_item = vm.appointment_step_form_data.cart_items[ cart_edit_index_id ]; let bookingpress_edit_cart_service_id = typeof cart_item.bookingpress_service_id != "undefined" ?cart_item.bookingpress_service_id:0; if(bookingpress_edit_cart_service_id != selected_service_id){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.cart_items[cart_edit_index_id].enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); }else{ vm.appointment_step_form_data.enable_custom_service_duration = typeof cart_item.enable_custom_service_duration != "undefined" ? cart_item.enable_custom_service_duration : false; vm.appointment_step_form_data.custom_service_duration_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_duration_real_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_real_price = parseFloat( cart_item.custom_service_real_price ); } } } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ vm.bpa_skip_loading_csd_slot = false; } vm.appointment_step_form_data.selected_service = selected_service_id; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; /* vm.appointment_step_form_data.base_price = service_price; */ vm.appointment_step_form_data.base_price_without_currency = service_price_without_currency; if( "" == service_duration_val ){ service_duration_val = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_val; } if( "" == service_duration_unit ){ service_duration_unit = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_unit; } vm.appointment_step_form_data.selected_service_duration = service_duration_val; vm.appointment_step_form_data.selected_service_duration_unit = service_duration_unit; if(vm.previous_selected_tab_id === 1 || vm.previous_selected_tab_id === 2 || vm.current_selected_tab_id === 1){ vm.displayResponsiveCalendar = "1"; } vm.v_calendar_disable_dates = []; vm.bpa_current_selected_date = ""; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); if( "undefined" != typeof vm.is_staffmember_activated && vm.is_staffmember_activated == 1) { if( ( vm.is_staffmember_activated == 1 && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers" ) ) ){ //vm.appointment_step_form_data.bpa_datetime_after_staff_selection_flag = 1; //vm.hide_capacity_text_flag = true; //alert( "inside this 45 "); vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; vm.appointment_step_form_data.bpa_datetime_before_staffselection = 1; } vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ if( (vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection != "true" ) || ( (vm.appointment_step_form_data.hide_service_selection_step == "true" || vm.appointment_step_form_data.hide_service_selection_step == true ) && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 )){ //vm.appointment_step_form_data.bpa_available_staff_member.push(currentValue.bookingpress_staffmember_id); const staffId = currentValue.bookingpress_staffmember_id; if (!vm.appointment_step_form_data.bpa_available_staff_member.includes(staffId)) { vm.appointment_step_form_data.bpa_available_staff_member.push(staffId); } } } }); if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; } } } vm.appointment_step_form_data.store_selected_date = ""; vm.appointment_step_form_data.store_selected_end_date = ""; vm.appointment_step_form_data.store_selected_time = ""; vm.appointment_step_form_data.store_selected_end_time = ""; vm.appointment_step_form_data.store_start_time = ""; vm.appointment_step_form_data.store_end_time = ""; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_end_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; vm.appointment_step_form_data.customer_selected_date = ""; vm.appointment_step_form_data.customer_selected_end_date = ""; vm.appointment_step_form_data.customer_selected_time = ""; vm.appointment_step_form_data.customer_selected_end_time = ""; if(is_move_to_next === "true"){ if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ if( vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name == "cart" ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } var selected_date = vm.appointment_step_form_data.selected_date; var formatted_date = vm.get_formatted_date(selected_date); vm.bookingpress_remove_error_msg(); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }, dayClickedResponsive( day ){ const vm = this; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "1"; vm.isLoadDateTimeCalendar = "1"; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; } else { vm.service_timing = "-1"; } } vm.dayClicked(day); }, dayClicked(day){ const vm = this; let available_dates = vm.v_calendar_available_dates; let dayId = day.id; let dayString = dayId + " 00:00:00"; if( "undefined" == typeof dayString || "undefined" == typeof available_dates || 0 > available_dates.indexOf( dayString ) || vm.bpa_current_selected_date == dayId || ("undefined" != typeof vm.v_calendar_blocked_dates && vm.v_calendar_blocked_dates.includes( day.id ) ) ){ return false; } vm.service_timing = "-2"; vm.appointment_step_form_data.selected_date = dayId; vm.bpa_current_selected_date = dayId; vm.no_timeslot_available = false; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } setTimeout(function(){ vm.service_timing = vm.bookingpress_categories_timeslots( vm.v_calendar_timeslots_data[ dayId ] ); vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; },10); }, onDayKeyPressed(event){ const vm = this; if(event.event.key == "Enter"){ vm.dayClicked(event); setTimeout(function(){ if(typeof vm.$refs.timeSlotItems !== 'undefined'){ vm.$refs.timeSlotItems[0].focus(); } },11); } let page = {month: event.month, year: event.year}; vm.bpaMoveMonth(page); }, onWholeDayKeyPressed(event, day){ const currentDate = new Date(day.id); let newDate; const vm = this; if(event.key == "Enter"){ event.preventDefault(); vm.dayClicked_v2(day); return; } let page = {month: day.month, year: day.year}; vm.bpaMoveMonth(page); switch(event.key) { case 'ArrowRight': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowLeft': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowUp': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 7); vm.moveFocusToDate(newDate, day); break; case 'ArrowDown': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 7); vm.moveFocusToDate(newDate, day); break; } }, moveFocusToDate(date, day) { const vm = this; // Format date to match your day.id format (YYYY-MM-DD) const dateString = date.toISOString().split('T')[0]; // Find the element for this date this.$nextTick(() => { let vc_day_content = document.querySelectorAll(".vc-day .vc-day-content"); vc_day_content.forEach((elm) => { elm.setAttribute("tabindex", "-1"); }); const dateElement = document.getElementsByClassName(`id-${dateString}`); // console.log(dateElement); if (dateElement) { if (vm.$refs.bkp_front_calendar) { vm.$refs.bkp_front_calendar.move(dateString); // vm.$refs.bkp_front_calendar.focusDate(day); } if(dateElement[0]){ setTimeout(() => { let date_span = dateElement[0].querySelector(".bpa_day-select span"); if(date_span){ date_span.setAttribute("tabindex", "0"); date_span.focus(); } }, 200); } } }); }, dayClicked_legacy(day) { const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.get_formatted_date( vm.booking_cal_maxdate ); if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_available_date < day.id || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.get_date_timings( day.id ); }, get_date_timings(current_selected_date = ""){ const vm = this; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; }else{ vm.service_timing = "-2"; } if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if( null == vm.appointment_step_form_data.selected_date ){ vm.appointment_step_form_data.selected_date = new Date("2026-01-16 14:28:54"); } if( current_selected_date == "") { current_selected_date = vm.appointment_step_form_data.selected_date; } vm.appointment_step_form_data.selected_date = current_selected_date; var selected_date = vm.appointment_step_form_data.selected_date; if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(current_selected_date); } let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( selected_date ) ){ let sel_month = selected_date.getMonth() + 1; let sel_year = selected_date.getFullYear(); let sel_date = selected_date.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } selected_date = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = selected_date; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; var selected_service_id = vm.appointment_step_form_data.selected_service; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_get_timings", service_id: selected_service_id, selected_date: selected_date, _wpnonce:bkp_wpnonce_pre_fetch, }; postData.bookingpress_timezone = vm.bookingpress_timezone;postData.bookingpress_selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details;postData.service_extra_details = JSON.stringify( vm.appointment_step_form_data.bookingpress_selected_extra_details );postData.enable_custom_service_duration = vm.appointment_step_form_data.enable_custom_service_duration;postData.custom_service_duration_value = vm.appointment_step_form_data.custom_service_duration_value; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ postData.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.no_timeslot_available = false; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { var set_waiting_time_limit = 1500; if(typeof postData.enable_custom_service_duration != "undefined"){ if(postData.enable_custom_service_duration == true || postData.enable_custom_service_duration == "true"){ set_waiting_time_limit = 0; } } setTimeout(function(){ vm.service_timing = response.data; if( response.data.morning_time.length <= 0 && response.data.afternoon_time.length <= 0 && response.data.evening_time.length <= 0 && response.data.night_time.length <= 0 ){ vm.no_timeslot_available = true; } vm.isLoadTimeLoader = "0"; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if(response.data == ""){ vm.service_timing = null; } }, set_waiting_time_limit); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }.bind(this) ) .catch( function (error) { console.log(error); }); }, selectDisableTiming(time_details){ }, selectTiming(selected_start_time, selected_end_time, store_start_time = "", store_end_time = "", store_selected_date = "" ,formated_start_time = "",formated_end_time = "",time_details = ""){ const vm = this; vm.appointment_step_form_data.selected_start_time = selected_start_time; vm.appointment_step_form_data.selected_end_time = selected_end_time; if( "" != formated_end_time && "" != formated_start_time ) { vm.appointment_step_form_data.selected_formatted_start_time = formated_start_time; vm.appointment_step_form_data.selected_formatted_end_time = formated_end_time; } if( "" != time_details.formatted_start_end_time && "undefined" != time_details.formatted_start_end_time ) { vm.appointment_step_form_data.selected_formatted_start_end_time = time_details.formatted_start_end_time; } if("" != store_start_time && "" != store_end_time && "" != store_selected_date ){ vm.appointment_step_form_data.store_start_time = store_start_time; vm.appointment_step_form_data.store_end_time = store_end_time; vm.appointment_step_form_data.client_offset = vm.bookingpress_timezone_offset; vm.appointment_step_form_data.store_selected_date = store_selected_date; vm.appointment_step_form_data.store_selected_end_date = time_details.selected_end_date || store_selected_date; } vm.appointment_step_form_data.customer_selected_date = time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_end_date = time_details.client_end_date || time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_time = time_details.client_start_time || selected_start_time; vm.appointment_step_form_data.customer_selected_end_time = time_details.client_end_time || selected_end_time; vm.appointment_step_form_data.is_next_day = false; vm.appointment_step_form_data.is_both_next_day = false; if( "undefined" != typeof time_details.is_next_day && true == time_details.is_next_day ){ vm.appointment_step_form_data.is_next_day = true; vm.appointment_step_form_data.next_day_selection_date = time_details.selected_date; vm.appointment_step_form_data.selected_end_date = time_details.selected_end_date; } if( ("undefined" != typeof time_details.is_both_next_day_time && true == time_details.is_both_next_day_time) || "undefined" != typeof time_details.is_both_next_day_time_v2 && true == time_details.is_both_next_day_time_v2 ){ vm.appointment_step_form_data.customer_selected_date = time_details.client_end_date; vm.appointment_step_form_data.display_end_date_on_summary = true; vm.appointment_step_form_data.is_both_next_day = time_details.is_both_next_day_time; vm.appointment_step_form_data.is_both_next_day_v2 = time_details.is_both_next_day_time_v2; vm.appointment_step_form_data.is_server_both_next_day = ( "undefined" != typeof time_details.is_overnight_booking_server ) ? time_details.is_overnight_booking_server : false; vm.appointment_step_form_data.is_customer_both_next_day = time_details.is_both_next_day_time_v2 || false; } let bookingpress_is_anystaff_select = true; if( (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" && vm.bookingpress_sidebar_step_data.service.is_first_step == 1) || ( (vm.appointment_step_form_data.hide_service_selection_step == true || vm.appointment_step_form_data.hide_service_selection_step == "true") && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 && ("true" != vm.appointment_step_form_data.hide_staff_selection ) ) ){ let staffmember_details = vm.bookingpress_staffmembers_details; // change the value anystaff not bookingpress_is_anystaff_select = false; if( "undefined" != typeof time_details.available_staffs ) { staffmember_details.forEach(staff => { staff.is_display_staff = time_details.available_staffs.includes(parseInt(staff.bookingpress_staffmember_id)); }); } else { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; staffmember_details.forEach(staff => { staff.is_display_staff = false; }); } vm.no_staffmember_available = staffmember_details.every(staff => !staff.is_display_staff); vm.appointment_step_form_data.bpa_datetime_after_staffselection = 1; vm.appointment_step_form_data.bpa_after_select_datetime_available_staff = time_details; } if( vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 ){ // change the value anystaff not bookingpress_is_anystaff_select = false; let service_details = vm.bpasortedServices; vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { vm.appointment_step_form_data.is_staff_exists = 1; } //console.log( time_details.unavailable_serivce_ids ); //[ 1 ] // if( "undefined" != typeof time_details.unavailable_serivce_ids ) { //service_details.forEach(service => { //service.is_visible = !time_details.unavailable_serivce_ids.includes( parseInt(service.bookingpress_service_id) ); //}); //} if (typeof time_details.unavailable_serivce_ids !== "undefined") { service_details.forEach(service => { if (time_details.unavailable_serivce_ids.includes( service.bookingpress_service_id ) ) { service.is_visible = false; service.exclude_id = true; } }); } else { service_details.forEach(service => { if( "undefined" != typeof service.exclude_id && service.exclude_id == true ){ service.is_visible = true; } }); } vm.no_service_available = service_details.every( services => !services.is_visible ); if( vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1 ){ vm.appointment_step_form_data.bpa_after_select_service_available_staff = time_details; } if( "undefined" != typeof time_details.available_staffs ){ let available_staffdata = time_details.available_staffs; vm.bpasortedServices.forEach( item => { const hasMatch = Object.keys( item.staff_member_details ).some( key => available_staffdata.includes( Number( key ) ) ); item.is_visible = hasMatch; item.is_visible_with_flag = hasMatch; } ); } } if( "undefined" != typeof time_details.available_staffs && bookingpress_is_anystaff_select && (vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ if( 1 < time_details.available_staffs.length ){ let available_staff_id = time_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } if( vm.bookingpress_staffmembers_details.every(staff => !staff.is_display_staff) ){ vm.is_any_staff_option_enable = 0; } vm.appointment_step_form_data.use_modified_duration = false; if( "undefined" != typeof time_details.use_slot_duration && true == time_details.use_slot_duration && "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && 1 == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ vm.appointment_step_form_data.use_modified_duration = true; let remaining_minutes = time_details.duration_unit_next_break; vm.slot_duration_till_break = remaining_minutes; let allSortedServices = Object.assign( [], vm.bpasortedServices ); let totalHiddenServices = 0; allSortedServices.forEach( (element, index) => { let service_duration_unit = element.bookingpress_service_duration_unit; element.is_visible_with_service_step = true; if( "d" == service_duration_unit ){ element.is_visible_with_service_step = false; totalHiddenServices++; } else { let service_duration = ( "h" == service_duration_unit ) ? parseInt( element.bookingpress_service_duration_val * 60 ) : parseInt( element.bookingpress_service_duration_val ); if( service_duration > remaining_minutes ){ element.is_visible_with_service_step = false; totalHiddenServices++; } } }); vm.bpasortedServices.forEach( (elm, index) => { if( "undefined" != typeof elm.is_hide_with_step && true == elm.is_hide_with_step ){ elm.is_visible = true; } if( "undefined" != typeof allSortedServices[index].is_visible_with_service_step && false == allSortedServices[index].is_visible_with_service_step ){ elm.is_visible = false; elm.is_hide_with_step = true; } }); console.log( vm.bpasortedServices ); console.log( totalHiddenServices ); vm.no_service_available = false; if( vm.bpasortedServices.length == totalHiddenServices ){ vm.no_service_available = true; } } vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); vm.bookingpress_update_timestep_token(); }, resetForm(){ const vm2 = this; vm2.appointment_formdata.appointment_selected_customer = "0"; vm2.appointment_formdata.appointment_selected_service = ""; vm2.appointment_formdata.appointment_booked_date = "2026-01-16"; vm2.appointment_formdata.appointment_booked_time = ""; }, select_service(selected_service_id){ const vm = this; vm.appointment_step_form_data.selected_service = selected_service_id; }, automatic_next_page(next_tab_id){ const vm = this; if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; vm.current_selected_tab_id = parseInt(next_tab_id); vm.bookingpress_remove_error_msg(); var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, next_page(customer_form = "", current_selected_element = "", next_selection_element = ""){ const vm = this; var current_selected_tab = bpa_selected_tab = parseFloat(vm.current_selected_tab_id); vm.previous_selected_tab_id = parseInt(current_selected_tab); if(current_selected_element != undefined && current_selected_element != null){ current_selected_tab = parseInt(current_selected_element); } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); if(current_selected_tab === 1 || vm.previous_selected_tab_id === 1){ vm.is_display_error = "0"; if(vm.appointment_step_form_data.selected_service == "" || vm.appointment_step_form_data.selected_service == undefined || vm.appointment_step_form_data.selected_service == "undefined"){ vm.bookingpress_set_error_msg("Selecteer een dienst om een afspraak te maken."); vm.current_selected_tab_id = 1; return false; }else{ if(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == ""){ vm.bookingpress_set_error_msg("Selecteer een medewerker om verder te gaan"); vm.current_selected_tab_id = 1; return false; }; if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } } }else if(current_selected_tab === 2){ if(current_selected_element != undefined && current_selected_element == 2 && vm.appointment_step_form_data.selected_start_time == "" && bpa_selected_tab == "2" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } if(vm.appointment_step_form_data.selected_service != "" && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.selectDate(vm.appointment_step_form_data.selected_service, vm.appointment_step_form_data.selected_service_name, vm.appointment_step_form_data.selected_service_price, vm.appointment_step_form_data.service_price_without_currency, "true",vm.appointment_step_form_data.selected_service_duration,vm.appointment_step_form_data.selected_service_duration_unit); } if(vm.is_display_error != "1"){ if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } vm.bookingpress_remove_error_msg() }else{ if(vm.is_error_msg == ""){ vm.bookingpress_set_error_msg("Er is iets fout gegaan") } } }else if(current_selected_tab === 3){ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; }else{ vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } } }); } }else{ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } else { vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } }else{ current_selected_tab = 3; } }); } } if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_date != "" ) { vm.get_date_timings(); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.next_selected_tab_id = 3; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } }, previous_page(previous_selection_tab_id = ""){ const vm = this; var current_selected_tab = parseFloat(vm.current_selected_tab_id); if(previous_selection_tab_id != ""){ current_selected_tab = previous_selection_tab_id; }else{ vm.previous_selected_tab_id = parseInt(current_selected_tab); current_selected_tab = current_selected_tab - 1; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(vm.previous_selected_tab_id == "1"){ vm.displayResponsiveCalendar = 1; } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, select_payment_method(payment_method){ const vm = this; vm.appointment_step_form_data.selected_payment_method = payment_method; var bookingpress_allowed_payment_gateways_for_card_fields = []; if( "undefined" == typeof vm.skip_checking_final_step_validation || true != vm.skip_checking_final_step_validation ){ vm.bookingpress_get_final_step_amount(); } ; if(bookingpress_allowed_payment_gateways_for_card_fields.includes(payment_method)){ vm.is_display_card_option = 1; }else{ vm.is_display_card_option = 0; } }, displayCalendar(){ const vm = this; if( "" == vm.appointment_step_form_data.selected_date || ( "undefined" != typeof vm.v_calendar_available_dates && 1 > vm.v_calendar_available_dates.length ) ){ return false; } vm.displayResponsiveCalendar = "1"; }, Change_front_appointment_description(service_id) { const vm = this; vm.services_data.forEach(function(item, index, arr){ if(item.bookingpress_service_id == service_id ){ if(item.display_details_more == 0 && item.display_details_less == 1) { item.display_details_less = 0; item.display_details_more = 1; } else { item.display_details_more = 0; item.display_details_less = 1; } } }); }, bookingpress_phone_country_change_func(bookingpress_country_obj){ const vm = this; var bookingpress_selected_country = bookingpress_country_obj.iso2; vm.appointment_step_form_data.customer_phone_country = bookingpress_selected_country; vm.appointment_step_form_data.customer_phone_dial_code = bookingpress_country_obj.dialCode; let exampleNumber = window.intlTelInputUtils.getExampleNumber( bookingpress_selected_country, true, 1 ); if( typeof vm.bookingpress_phone_default_placeholder == "undefined" && "" != exampleNumber ){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } else if(vm.bookingpress_phone_default_placeholder == "false" && "" != exampleNumber){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } }, bookingpress_phone_country_open( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".el-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); } } } }, bookingpress_phone_country_close( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.customer_phone; console.log("called ... " + phoneValue); if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { console.log("inside this..... one") this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_get_parents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, async bookingpress_disable_date( bpa_selected_service = "", bpa_selected_date = "" ){ let bpa_is_called = false; var bookingpress_is_allow_modify = ""; var bookingpress_staff_loaded_from_url = "0"; this.isLoadTimeLoader = "1"; this.isLoadDateTimeCalendarLoad = "1"; let staff_id = this.appointment_step_form_data.selected_staff_member_id; if( 0 == staff_id ){ staff_id = ""; } this.service_timing = "-3"; if( 0 === this.bookingpress_sidebar_step_data["staffmembers"].is_display_step && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 == this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1); } bpa_is_called = true; } let form_sequence_first; if( "object" == typeof this.appointment_step_form_data.form_sequence ){ form_sequence_first = this.appointment_step_form_data.form_sequence[0]; } else { form_sequence_first = this.appointment_step_form_data.form_sequence; } if( false == bpa_is_called && 1 == this.hide_category_service && "service_selection" == form_sequence_first && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 != this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && false == this.is_staff_member_set_from_url && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && "" == staff_id && "true" == this.appointment_step_form_data.select_any_staffmember ){ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); bpa_is_called = true; } /** for the datetime re-arrange step */ if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_sidebar_step_data["service"].is_first_step == 1 && this.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; } if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_current_tab != this.bookingpress_next_tab && ( "undefined" != typeof this.appointment_step_form_data.any_staff_selected && 1 == this.appointment_step_form_data.any_staff_selected ) ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; this.bookingpress_select_staffmember( "any_staff", 1 ); } let selected_sid = this.appointment_step_form_data.selected_service; if(selected_sid != "" && "undefined" != typeof this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && "" != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && null != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date ) { this.booking_cal_maxdate = this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date; const currentDate = new Date(); const targetDate = new Date(this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date); let diff_in_time = targetDate.getTime() - currentDate.getTime(); let diff_in_days = ( Math.round( diff_in_time / ( 1000 * 3600 * 24 ) ) ) + 1; const bookingpress_period_available_for_booking = 180; if(bookingpress_period_available_for_booking < diff_in_days){ /*If max period avilable is less than service expiry date then set limit for the Max period avilable days*/ this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); } } let use_legacy = "false"; if( "true" == use_legacy ){ this.bookingpress_disable_date_xhr( bpa_selected_service, bpa_selected_date ); } else { this.bookingpress_disable_date_xhr_v2( bpa_selected_service, bpa_selected_date ); } }, bookingpress_update_timestep_token( force_update = false, cart_force_update = false ){ const vm = this; let use_legacy = "false"; let current_tab = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name; if( ( "undefined" == typeof vm.bookingpress_cart_addon && ( ( true == force_update && typeof vm.v_calendar_time_token_data != "undefined" ) || ( "datetime" == vm.bookingpress_sidebar_step_data[ vm.bookingpress_current_tab ].previous_tab_name && "d" != vm.appointment_step_form_data.selected_service_duration_unit && "datetime" != vm.bookingpress_current_tab && "false" == use_legacy ) ) ) ||( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 && ( ( ( "undefined" != vm.is_staffmember_activated && 1 == vm.is_staffmember_activated && vm.appointment_step_form_data.selected_staff_member_id != 0 ) && ( "undefined" != typeof vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_service != 0 ) ) && ( "undefined" != typeof vm.appointment_step_form_data.location_activated && 1 == vm.appointment_step_form_data.location_activated && vm.appointment_step_form_data.selected_location != "" ) || cart_force_update != false ) ) ){ let appointment_selected_date = vm.appointment_step_form_data.store_selected_date || vm.appointment_step_form_data.selected_date; if( "undefined" != typeof vm.appointment_step_form_data.is_next_day && true == vm.appointment_step_form_data.is_next_day && "undefined" != typeof vm.appointment_step_form_data.next_day_selection_date ){ appointment_selected_date = vm.appointment_step_form_data.next_day_selection_date; } let selected_token_data = vm.v_calendar_time_token_data[ appointment_selected_date ][0]; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; }else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_set_timeslot_token", tokenData: selected_token_data, selectedDate: appointment_selected_date, _wpnonce:bkp_wpnonce_pre_fetch }; vm.is_bookingpress_updating_token = true; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.is_bookingpress_updating_token = false; vm.is_bookingpress_token_updated = true; }.bind(this) ) .catch( function (error) { }); } }, bookingpress_working_dates_data( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let is_client_timezone = ""; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; let overnight_booking = ("undefined" != typeof response_data.overnight_booking_dates ) ? response_data.overnight_booking_dates : []; let sorted_working_hours = []; for( let wdate in working_hour_details ){ let x = 0; let n = 0; let is_overnight_booking = overnight_booking.includes( wdate ) || false; let is_overnight_booking_server = is_overnight_booking; let overnight_booking_date = ""; sorted_working_hours[wdate] = working_hour_details[ wdate ]; sorted_working_hours[wdate].sort( (a,b) => { return ( parseInt( a.counter_pos ) < parseInt( b.counter_pos ) ) ? -1 : 1; } ); for( let wh_data of sorted_working_hours[wdate] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.selected_end_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; if( false == is_overnight_booking ){ is_overnight_booking = wp.hooks.applyFilters( "bookingpress_consider_overnight_booking", is_overnight_booking, wh_data ); } let stTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", start_datetime, wh_data, "start", true ); let etTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", end_datetime, wh_data, "end", true ); let updated_wdate; if( "string" == typeof stTimeNew ){ updated_wdate = wdate; } else { updated_wdate = stTimeNew.toISOString().split("T")[0]; } let updated_edate; if( "string" == typeof etTimeNew ){ updated_edate = wh_data.selected_end_date; } else { updated_edate = etTimeNew.toISOString().split("T")[0]; } if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = ( "undefined" != typeof response_data.pre_selected_date && true == response_data.pre_selected_date && "undefined" != typeof vm.open_customer_reschedule_appointment_modal && true == vm.open_customer_reschedule_appointment_modal ) ? response_data.selected_date : updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; if( true == is_overnight_booking && "" == overnight_booking_date ){ overnight_booking_date = updated_wdate; if( "undefined" == typeof updated_working_hour_details[ overnight_booking_date ] ){ updated_working_hour_details[ overnight_booking_date ] = []; } } wh_data.is_both_next_day_time_v2 = false; if( true == is_overnight_booking ){ if( "true" == is_client_timezone ){ wh_data.is_next_day = false; } if( updated_edate > updated_wdate ){ wh_data.is_next_day = true; } if( updated_edate == updated_wdate && updated_wdate > overnight_booking_date ){ wh_data.is_both_next_day_time_v2 = true; wh_data.is_overnight_booking_server = is_overnight_booking_server; wh_data.is_next_day = true; wh_data.client_date = wh_data.client_end_date; } } if( true == wh_data.is_both_next_day_time && wh_data.client_end_date > wh_data.client_date ){ wh_data.client_date = wh_data.client_end_date; } let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + " naar " + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; wh_data.slot_timestamp = new Date( `${wh_data.client_date} ${wh_data.client_start_time}` ).getTime(); if( true == is_overnight_booking ){ if( "undefined" != typeof updated_working_hour_details[ overnight_booking_date ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ overnight_booking_date ] ).length; } updated_working_hour_details[ overnight_booking_date ][x] = wh_data; if( !available_dates.includes( overnight_booking_date + " 00:00:00" ) ){ available_dates.push( overnight_booking_date + " 00:00:00" ); } } else { if( "undefined" != typeof updated_working_hour_details[ updated_wdate ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ updated_wdate ] ).length; } updated_working_hour_details[ updated_wdate ][x] = wh_data; } x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_working_dates_data_legacy( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; for( let wdate in working_hour_details ){ let x = 0; let n = 0; for( let wh_data of working_hour_details[ wdate ] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.store_service_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; let updated_wdate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wdate, wh_data ); let updated_edate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wh_data.selected_end_date, wh_data ); if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + "naar" + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; updated_working_hour_details[ updated_wdate ][x] = wh_data; x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_disable_date_xhr_v2( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; }; let preselect_date = false; if( "" != bpa_selected_date ){ preselect_date = true; } if( "" == bpa_selected_date ){ vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } let startTime = new Date().getTime(); var postData = { action: "bookingpress_fetch_timeslot_data", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, is_preselect: preselect_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { let request_time = new Date().getTime() - startTime; /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; let working_hour_details = response.data.working_details; let selectedDate = response.data.selected_date; let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); let preselected_date = ""; if( "undefined" != typeof response.data.pre_selected_date && true == response.data.pre_selected_date ){ preselected_date = response.data.selected_date; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.appointment_step_form_data.selected_date = ""; selectedDate = ( "" != preselected_date ) ? preselected_date : ( wh_details.selected_date || selectedDate ); vm.v_calendar_available_dates = wh_details.available_dates; vm.v_calendar_timeslots_data = wh_details.updated_working_hour_details; vm.no_timeslot_available = false; let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); if( !v_available_dates_only.includes( selectedDate ) && wh_details.selected_date != selectedDate && wh_details.selected_date != "" ){ selectedDate = wh_details.selected_date; } vm.v_calendar_available_only_date = v_available_dates_only; if( "undefined" != typeof selectedDate && "" != selectedDate ){ (function( $ref_ ){ setTimeout(function(){ vm.appointment_step_form_data.selected_date = selectedDate; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof $ref_.bkp_front_calendar ){ const calendar = $ref_.bkp_front_calendar; try{ calendar.move( selectedDate ); } catch( e ){ console.log( e ); } } if( "undefined" != typeof $ref_.bkp_front_calendar_responsive ){ const calendar_r = $ref_.bkp_front_calendar_responsive; try{ calendar_r.move( selectedDate ); } catch( e ){ console.log( e ); } } },10); })( this.$refs ); } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } /* V-date-picker attributes */ vm.v_calendar_default_label = response.data.max_capacity_capacity; vm.v_calendar_time_token_data = response.data.working_hour_timing_token; if( "undefined" != typeof wh_details.updated_working_hour_details[ selectedDate ] ){ vm.service_timing = vm.bookingpress_categories_timeslots( wh_details.updated_working_hour_details[ selectedDate ] ); } else { vm.service_timing = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; vm.no_timeslot_available = true; } if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } vm.isLoadTimeLoader = "0"; vm.isLoadDateTimeCalendarLoad = "0"; if( "undefined" == typeof response.data.stop_check || false == response.data.stop_check ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, 1 ); } setTimeout(function(){ if( "undefined" != typeof vm.is_bookingpress_token_updated && true == vm.is_bookingpress_token_updated ){ // condition update if( ("undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers") || (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection == 1))) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && "undefined" != typeof vm.appointment_step_form_data.location_activated || 1 != vm.appointment_step_form_data.location_activated && vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "location" ) ){ vm.bookingpress_update_timestep_token( true, true ); } else { vm.bookingpress_update_timestep_token( true ); } } },10); setTimeout(() => { vm.focusFirstDate(); if( "undefined" != typeof working_hour_details && working_hour_details.length == 0){ let focusCancelBtn = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer button"); if(focusCancelBtn !== null){ focusCancelBtn.focus(); } } const unavailable_date_calendar_input = document.querySelector(".el-form-item .bpa-unavailable-popup-datepicker .el-input__inner"); if(unavailable_date_calendar_input !== null){ unavailable_date_calendar_input.focus(); } }, 500); if( "undefined" != typeof selectedDate ){ let selected_date = selectedDate.split(" ")[0]; let timeslot_data = vm.v_calendar_timeslots_data[ selected_date ]; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details( next_month_date = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); if( 4 == counter ){ vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; return false; } else { vm.isHoldBookingRequest = true; } let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; ++counter; counter = wp.hooks.applyFilters( "bookingpress_modify_next_month_check_counter", counter, response.data ); if( "undefined" == typeof response.data.stop_check || response.data.stop_check == false ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, counter ); } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details_single( next_month_date = "", next_month_dates = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; vm.bookingpress_retrieve_future_month_details( next_month_dates, counter ); }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_format_time(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("nl_NL").format(default_time_format) }, bookingpress_categories_timeslots( timeslot_details ){ let afternoon_slot_timings = parseInt( "12" ); let evening_slot_timings = parseInt( "18" ); let night_slot_timings = parseInt( "" ); if( "undefined" == typeof timeslot_details ){ return {}; } let service_timings_data = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; let x = 0; for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && ( "undefined" == typeof timeslot_data.is_next_day || timeslot_data.is_next_day == false) ){ let startHour = parseInt( timeslot_data.start_hour ); if( startHour >= 0 && startHour < afternoon_slot_timings ){ service_timings_data.morning_time.push( timeslot_data ); } else if( startHour >= afternoon_slot_timings && ( "" == evening_slot_timings || startHour < evening_slot_timings ) ){ service_timings_data.afternoon_time.push( timeslot_data ); } else if ( startHour >= evening_slot_timings && ( "" == night_slot_timings || startHour < night_slot_timings ) ){ service_timings_data.evening_time.push( timeslot_data ); } else { service_timings_data.night_time.push( timeslot_data ); } x++; } } if( timeslot_details.length > x ){ for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && "undefined" != typeof timeslot_data.is_next_day && timeslot_data.is_next_day == true ){ let startHour = parseInt( timeslot_data.start_hour ); service_timings_data.night_time.push( timeslot_data ); } } } let sorted_timings_data = {}; for( let timing_item in service_timings_data ){ let timing_details = Object.assign( [], service_timings_data[ timing_item ] ); timing_details.sort( ( a, b ) => { return ( parseInt( a.slot_timestamp ) < parseInt( b.slot_timestamp ) ) ? -1 : 1; }); sorted_timings_data[ timing_item ] = timing_details; } return sorted_timings_data; }, bookingpress_disable_date_xhr( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } var postData = { action: "bookingpress_get_disable_date", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.disabled_dates = JSON.stringify( vm.v_calendar_disable_dates ); postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates = {}; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.service_timing = []; if(response.data.variant == "success" && (response.data.selected_date != undefined && response.data.days_off_disabled_dates != undefined)){ /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; vm.days_off_disabled_dates = ""; /*V-Calendar disabled dates change start*/ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); vm.v_calendar_disable_dates = []; for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } /*V-Calendar disabled dates change end*/ let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } let resp_selected_date = response.data.selected_date; if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; /* V-date-picker attributes */ vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.appointment_step_form_data.selected_date = response.data.selected_date; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof response.data.front_timings ){ vm.service_timing = response.data.front_timings; if( response.data.front_timings.length <= 0 ){ vm.no_timeslot_available = true; } } if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(vm.appointment_step_form_data.selected_date); } vm.isLoadTimeLoader = "0"; if( "undefined" != typeof response.data.empty_front_timings && true == response.data.empty_front_timings ){ vm.isLoadDateTimeCalendarLoad = "1"; vm.appointment_step_form_data.selected_date = response.data.next_available_date; vm.bookingpress_disable_date( bpa_selected_service, response.data.next_available_date ); return; } else { /* Check full day appointments block */ if( false == response.data.prevent_next_month_check ){ let postDataAction = "bookingpress_get_whole_day_appointments"; if( true == response.data.check_for_multiple_days_event ){ postDataAction = "bookingpress_get_whole_day_appointments_multiple_days"; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: postDataAction,days_off_disabled_dates: vm.days_off_disabled_dates, service_id: bpa_selected_service, max_available_year: response.data.max_available_year, max_available_month:response.data.max_available_month, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch, "next_month": response.data.next_month, "next_year": response.data.next_year, "counter": 1 }; postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } postData.appointment_data_obj = JSON.stringify( vm.appointment_step_form_data ); postData.staffmember_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( vm.bookingpress_is_extra_enable == 1 ){ postData.service_extra_details = vm.appointment_step_form_data.bookingpress_selected_extra_details; }; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } setTimeout(function(){ vm.isLoadDateTimeCalendarLoad = "0" },200); } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_daysoff_for_booked_appointment( postData ){ const vm = this; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ).then( function( response ) { vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.isLoadDateTimeCalendarLoad = 0; if(false == response.data.prevent_next_month_check && response.data.counter <= 3 ){ /** Currently data will be checked for next 3 months */ postData.days_off_disabled_dates = vm.days_off_disabled_dates; postData.next_month = response.data.next_month; postData.next_year = response.data.next_year; postData.counter++; if( postData.counter < 4 ){ vm.isHoldBookingRequest = true; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } else { vm.v_calendar_check_month_dates = true; let next_month_year = { "month": parseInt( response.data.next_month ), "year": response.data.next_year, "postData": postData }; vm.v_calendar_next_month_dates = next_month_year; vm.isHoldBookingRequest = false; } /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } else { /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } }); }, bpaMoveMonthResponsive( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); counter = 0 - monthDiff; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, counter ); } setTimeout(() => { vm.focusFirstDate(); }, 500); } } }, bpaMoveMonth( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); let month_ = ( current_month.toString().length == 1 ) ? ( "0" + current_month.toString() ) : current_month; let nextMonthDate = current_year + "-" + month_ + "-01"; counter = 0 - monthDiff; vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details_single( nextMonthDate, vm.v_calendar_next_month_dates, counter ); } } } }, bookingpress_get_all_parent_node_with_overflow_hidden( elem ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { let computed_style = getComputedStyle( elem ); if( computed_style.overflow == "hidden" || computed_style.overflowX == "hidden" || computed_style.overflowY == "hidden" ){ parents.push(elem); } } return parents; }, bookingpress_onload_func(){ const vm = this; vm.current_screen_size = "desktop"; if(window.outerWidth >= 1200){ vm.current_screen_size = "desktop"; }else if(window.outerWidth < 1200 && window.outerWidth >= 768){ vm.current_screen_size = "tablet"; }else if(window.outerWidth < 768){ vm.current_screen_size = "mobile"; } let is_mobile_device = ""; if( "mobile" != vm.current_screen_size && ("true" == is_mobile_device || true == is_mobile_device) ){ vm.current_screen_size = "mobile"; } if(window.innerWidth <= 576){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let parents_with_hidden_overflow = vm.bookingpress_get_all_parent_node_with_overflow_hidden( bookingpress_container ); let apply_overflow = ( parents_with_hidden_overflow.length > 0 ) ? true : false; window.addEventListener("scroll", function(e){ let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky" ; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky"; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.add("--bpa-is-overflow-visible"); } } } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.remove("--bpa-is-overflow-visible"); } } } }); } window.addEventListener("resize", function(e){ if( window.innerWidth <= 576 ){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; bookingpress_scrollBottom = bpa_current_scroll + bookingpress_scrollBottom + bookingpress_scrollTop; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky"; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky" /* Change this string */ } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ } } }); }, bookingpress_step_navigation(current_tab, next_tab, previous_tab, is_strict_validate = 1){ const vm = this; var bookingpress_is_validate = 0; vm.bookingpress_remove_error_msg(); var bookingpress_validate_fields_arr = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validate_fields; if( "staffmembers" == vm.bookingpress_current_tab && "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && true == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ){ is_strict_validate = 0; } if("service" == vm.bookingpress_current_tab){ if( vm.bookingpress_is_extra_enable == "1" && typeof vm.appointment_step_form_data.selected_service != "" ){ let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if(typeof selected_service_data != "undefined") { let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ bpa_selected_service_extra_count++; } } if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count < selected_service_data.bookingpress_min_no_extra_service){ bookingpress_is_validate = 1; let errorMsg = "Please select at least [x] extra service"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_min_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } else if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count > selected_service_data.bookingpress_max_no_extra_service ){ bookingpress_is_validate = 1; let errorMsg = "You can select maximum [x] extra services"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_max_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } } } } if((vm.bookingpress_current_tab == "basic_details") && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } }); if(bookingpress_is_validate == 0 && is_strict_validate == 1){ var customer_form = "appointment_step_form_data"; vm.$refs[customer_form].validate((valid) => { if (!valid) { bookingpress_is_validate = 1; }else{ bookingpress_is_validate = 0; } }); } }else{ if(is_strict_validate == 1){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ if( currentValue == "selected_start_time" && vm.appointment_step_form_data[currentValue] == "" ) { if( vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } else { vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } }); } } if( "service" == current_tab && "service" != vm.bookingpress_current_tab ){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date+"T00:00:00+00:00"; var bookingpress_disable_dates_arr = vm.days_off_disabled_dates.split(","); if(bookingpress_disable_dates_arr.includes(bookingpress_selected_date)){ let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = newDate; } } if( ("basic_details" == current_tab && "service" == vm.bookingpress_current_tab) || ("summary" == current_tab && "service" == vm.bookingpress_current_tab) ){ if(vm.appointment_step_form_data.selected_service_duration_unit != "d"){ if(vm.appointment_step_form_data.selected_start_time == ""){ bookingpress_is_validate = 1; } } } if(bookingpress_is_validate == 0){ vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; let current_selected_tab = vm.bookingpress_current_tab; vm.bookingpress_current_tab = current_tab; vm.bookingpress_next_tab = next_tab; vm.bookngpress_previous_tab = previous_tab; vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; if( "datetime" == current_tab ){ let selected_service_id = vm.appointment_step_form_data.selected_service; vm.bookingpress_disable_date(selected_service_id,vm.appointment_step_form_data.selected_date); } } if( window.innerWidth <= 576 ){ let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ setTimeout(function(){ window.scrollTo({ top: pos, behavior: "smooth", }); }, 500); } } if( "summary" == current_tab && "summary" == vm.bookingpress_current_tab ) { const vm = this; var total_payment_div_count = document.querySelectorAll(".bpa-front-module--pm-body__item").length; if(total_payment_div_count == 1){ var total_payment_div = document.querySelector(".bpa-front-module--pm-body__item"); if( null != total_payment_div && "undefined" != typeof total_payment_div) { vm.prevent_verification_on_load = true; total_payment_div.click(); vm.prevent_verification_on_load = false; } } vm.bookingpress_activate_payment_gateway_total_counter = vm.bookingpress_activate_payment_gateway_counter; if( vm.paypal_payment == "paypal" ){ let total_counter_payment_gateway = vm.bookingpress_activate_payment_gateway_total_counter + 1; vm.bookingpress_activate_payment_gateway_total_counter = total_counter_payment_gateway; } if( total_payment_div_count == 0 && vm.is_only_onsite_enabled == "1" ){ vm.appointment_step_form_data.selected_payment_method = "on-site"; vm.skip_checking_final_step_validation = true; vm.select_payment_method("on-site"); } } if(current_tab == "datetime" || next_tab == "datetime"){ setTimeout(() => { const custom_duration_select = document.querySelector(".bpa-front-module--date-and-time .bpa-custom-duration-select .el-input__inner"); if(custom_duration_select !== null){ custom_duration_select.focus(); } vm.focusFirstDate(); window.is_focused = false; /* const recurring_date_picker = document.querySelector(".bpa-recurring-appointment-head-row .bpa-front-form-control--date-picker .el-input__inner"); if(recurring_date_picker !== null){ recurring_date_picker.focus(); } */ const calendar_btn_mobile = document.querySelector(".bpa-front--dt__ts-sm-back-btn .el-button"); if(calendar_btn_mobile !== null){ calendar_btn_mobile.focus(); } }, 1000); } if(current_tab == "basic_details" || next_tab == "basic_details"){ setTimeout(() => { document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active") ?.querySelector("input:not([readonly]):not([disabled]):not([type='hidden']), select:not([disabled]), textarea:not([readonly]):not([disabled])") ?.focus(); }, 10); } if(next_tab == "summary"){ setTimeout(() => { let find_first_pg = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if(find_first_pg !== null){ find_first_pg.focus(); }else { find_first_pg = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer .summery-book-appointment-btn"); if(find_first_pg !== null){ find_first_pg.focus(); } } }, 10); } if(current_tab == "service" || next_tab == "service"){ setTimeout(() => { let find_first_service = document.querySelector(".bpa-front-module--service-item .bpa-front-si-card"); if(find_first_service !== null){ find_first_service.focus(); } }, 10); } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; }, bookingpress_select_multi_day_range(day = ""){ const vm = this; if(vm.appointment_step_form_data.selected_date){ day = vm.appointment_step_form_data.selected_date; vm.bookingpress_selected_date_range = []; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_end_date = vm.appointment_step_form_data.selected_date; var selected_date = new Date(day); var selected_service_duration = vm.appointment_step_form_data.selected_service_duration; var bookingpress_selected_date_range = []; var new_date = new Date(day + " 00:00:00"); bookingpress_selected_date_range.push(day); for(var i = 1; i < selected_service_duration; i++) { new_date.setDate(new_date.getDate() + 1); var month = "" + (new_date.getMonth() + 1), day = "" + new_date.getDate(), year = new_date.getFullYear(); if (month.length < 2){ month = "0" + month; } if (day.length < 2){ day = "0" + day; } var add_date = [year, month, day].join("-"); bookingpress_selected_date_range.push(add_date); if(i == selected_service_duration-1) { vm.appointment_step_form_data.selected_end_date = add_date; } } if(bookingpress_selected_date_range.length > 0){ vm.bookingpress_selected_date_range = bookingpress_selected_date_range; } } } }, async bookingpress_select_multi_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0){ var vm = this; }, bpa_is_select_multistaff_member(staff_member_id){ var vm = this; return false; }, bpa_search_service( value ){ const vm = this; value = value.toLowerCase(); vm.bpasortedServices.forEach( ( element,index ) =>{ vm.bpasortedServices[index].show_with_search = false; if( element.bookingpress_service_name.toLowerCase().includes( value ) ){ vm.bpasortedServices[index].show_with_search = true; } }); }, bpa_search_staff( value ){ const vm = this; value = value.toLowerCase(); vm.bookingpress_staffmembers_details.forEach( ( element,index ) => { vm.bookingpress_staffmembers_details[index].show_with_staff_search = false; if( (element.bookingpress_staffmember_firstname.toLowerCase().includes( value )) || element.bookingpress_staffmember_lastname.toLowerCase().includes( value ) ){ vm.bookingpress_staffmembers_details[index].show_with_staff_search = true; } }); }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.form_fields.customer_phone; if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_phone_country_open_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-field-main-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); let parent_upper = vm.bookingpress_get_parents( parent[0], ".el-col" ); if( 0 < parent_upper.length && null != parent_upper[0] ){ //parent_upper[0].classList.add("bpa-active-col"); } } } } }, bookingpress_phone_country_close_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bpa_check_space_validation(bpa_input_value,v_modal_data){ var vm = this; if(bpa_input_value.trim() == ""){ vm.appointment_step_form_data["form_fields"][v_modal_data] = ""; return ""; } return bpa_input_value; }, bpa_check_password_validation( bpa_email_value ) { const vm = this; if( "undefined" == typeof vm.appointment_step_form_data.form_fields.customer_password || vm.bpa_check_user_login == 1 ){ return; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_password_validation_check", _wpnonce:bkp_wpnonce_pre_fetch, _email: bpa_email_value }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof response.data.bpa_password_already_exists ){ if( response.data.bpa_password_already_exists == true ){ if(this.$refs.appointment_step_form_data){ this.$refs.appointment_step_form_data.clearValidate("customer_password"); } vm.appointment_step_form_data.bpa_password_already_exists = true; vm.customer_details_rule.customer_password[0].required = false; vm.appointment_step_form_data.bpa_user_email_already_exists = true; vm.appointment_step_form_data.form_fields["customer_password"] = ""; } } else { vm.appointment_step_form_data.bpa_password_already_exists = false; vm.customer_details_rule.customer_password[0].required = true; vm.appointment_step_form_data.bpa_user_email_already_exists = false; } }.bind(this) ) .catch( function (error) { console.log(error); }); }, dayClicked_v2( day ){ const vm = this; vm.dayClicked( day ); vm.bookingpress_select_multi_day_range( day ); let timeslot_data = vm.v_calendar_timeslots_data[ day.id ]; let max_available_date = vm.booking_cal_maxdate; ; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } }, bookingpress_day_click(day){ const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.booking_cal_maxdate; ; let max_date_value = false; if( max_available_date instanceof Date ){ max_date_value = ( max_available_date < ( new Date( day.id ) ) ); } else { max_date_value = ( max_available_date < day.id ); } if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_date_value || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.bookingpress_select_multi_day_range(day); vm.dayClicked( day ); }, bookingpress_get_final_step_amount() { const vm = this; var payment_method = vm.appointment_step_form_data.selected_payment_method; var total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( "" == tax_amount ){ tax_amount = 0; } let total_payable_amount_without_tax = parseFloat(total_payable_amount); if(typeof tax_amount != "undefined"){ total_payable_amount = parseFloat(total_payable_amount) + parseFloat(tax_amount); } let is_cart_addon = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ) { /* total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; */ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; total_payable_amount_without_tax = parseFloat(total_payable_amount); if( typeof tax_amount != "undefined" ){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( tax_amount ); if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.tax_amount_before_coupon_without_currency != "undefined"){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.tax_amount_before_coupon_without_currency ); } } } /* console.trace( "INSIDE CART CONDITION ===>>> " + vm.appointment_step_form_data.bookingpress_cart_total ); */ is_cart_addon = true; } var coupon_code = vm.appointment_step_form_data.coupon_code; var selected_service = vm.appointment_step_form_data.selected_service; var selected_staff_member_id = vm.appointment_step_form_data.selected_staff_member_id; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } var subtotal_price = total_payable_amount; /* apply coupon */ if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != ""){ if(typeof vm.appointment_step_form_data.coupon_discount_amount != "undefined" && vm.appointment_step_form_data.coupon_discount_amount != 0){ if(vm.appointment_step_form_data.tax_percentage != ""){ var tax_percentage = parseFloat(vm.appointment_step_form_data.tax_percentage); if(typeof vm.appointment_step_form_data.tax_price_display_options != "undefined" && vm.appointment_step_form_data.tax_price_display_options == "include_taxes"){ tax_amount = (total_payable_amount_without_tax * tax_percentage) / (100+tax_percentage); total_payable_amount_without_tax = total_payable_amount_without_tax - tax_amount; } } let f_payable_amount = total_payable_amount_without_tax - vm.appointment_step_form_data.coupon_discount_amount; if( 0 == f_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = f_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( f_payable_amount, true ); } var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( typeof tax_amount != "undefined" ){ vm.appointment_step_form_data.total_payable_amount = vm.appointment_step_form_data.total_payable_amount + tax_amount; }else { tax_amount = 0; } vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount, true ); vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount ); subtotal_price = f_payable_amount + tax_amount; if( "undefined" != vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency && 1 == vm.bookingpress_is_deposit_payment_activate ){ if( vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price" || vm.appointment_step_form_data.bookingpress_deposit_payment_method == "allow_customer_to_pay_full_amount" ){ if(is_cart_addon){ let cart_items_deposite_amount = 0; vm.appointment_step_form_data.cart_items.forEach((current_cart_item, cart_item_index) => { cart_items_deposite_amount = parseFloat(cart_items_deposite_amount) + parseFloat(current_cart_item.bookingpress_deposit_price); }); if( cart_items_deposite_amount < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } }else{ if( vm.appointment_step_form_data.deposit_payment_type == "fixed") { if( vm.appointment_step_form_data.deposit_payment_amount < subtotal_price ){ vm.appointment_step_form_data.bookingpress_remove_deposit = 0; vm.appointment_step_form_data.calculate_deposit = true; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } else if( vm.appointment_step_form_data.deposit_payment_type == "percentage") { let bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(vm.appointment_step_form_data.deposit_payment_amount) / 100); if( bookingpress_deposit_amt < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } } } } } } else { vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } vm.appointment_step_form_data.bookingpress_remove_deposit = 0; subtotal_price = total_payable_amount; } } /* If deposit payment module enabled then calculate deposit amount */ var deposit_method = vm.appointment_step_form_data.bookingpress_deposit_payment_method; var deposit_type = vm.appointment_step_form_data.deposit_payment_type; var deposit_value = vm.appointment_step_form_data.deposit_payment_amount; var bookingpress_deposit_amt = 0; var bookingpress_deposit_due_amt = 0; if(payment_method != "" && 1 == vm.bookingpress_is_deposit_payment_activate && vm.appointment_step_form_data.bookingpress_remove_deposit != 1 && ( "undefined" == typeof vm.appointment_step_form_data.is_clubbed_service || false == vm.appointment_step_form_data.is_clubbed_service ) ){ var bookingpress_check_deposit_avaliable = false; if( 1 == is_cart_addon ){ if (typeof vm.appointment_step_form_data.cart_items != "undefined"){ var cart_items_temp_data = vm.appointment_step_form_data.cart_items; if(cart_items_temp_data != "" && cart_items_temp_data.length != 0){ cart_items_temp_data.forEach(function(currentValue, index, arr){ if (typeof cart_items_temp_data[index].bookingpress_deposit_due_amount != "undefined"){ if(parseFloat(cart_items_temp_data[index].bookingpress_deposit_due_amount) > 0){ bookingpress_check_deposit_avaliable = true; } } }); } } }else{ if(typeof vm.appointment_step_form_data.deposit_payment_type != undefined && typeof vm.appointment_step_form_data.deposit_payment_amount_percentage != undefined){ if(vm.appointment_step_form_data.deposit_payment_type == "percentage" && vm.appointment_step_form_data.deposit_payment_amount_percentage == 100){ bookingpress_check_deposit_avaliable = false; }else{ bookingpress_check_deposit_avaliable = true; } } } if(bookingpress_check_deposit_avaliable && payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "") && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ if(deposit_method == "deposit_or_full_price"){ //if( true == is_cart_addon ){ //subtotal_price = total_payable_amount_without_tax; /* vm.bookingpress_price_with_currency_symbol( total_payable_amount_without_tax, true ); */ //} if(deposit_type == "percentage"){ bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(deposit_value) / 100); bookingpress_deposit_amt = bookingpress_deposit_amt; /* vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); */ bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } else if(deposit_type == "fixed") { bookingpress_deposit_amt = deposit_value; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } } else if(deposit_method == "allow_customer_to_pay_full_amount") { bookingpress_deposit_amt = subtotal_price; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } let total_payable_amount_temp = bookingpress_deposit_amt; if(typeof vm.appointment_step_form_data.tip_amount != undefined && vm.appointment_step_form_data.tip_amount> 0 && vm.appointment_step_form_data.bookingpress_deposit_total != undefined && vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price"){ total_payable_amount_temp = parseFloat(vm.appointment_step_form_data.bookingpress_deposit_total) + parseFloat(vm.appointment_step_form_data.tip_amount); } vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp ); if( 0 == total_payable_amount_temp ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount_temp; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp, true ); } /* 26 April 2023 changes */ if( 1 == is_cart_addon ){ if( "allow_customer_to_pay_full_amount" == deposit_method ){ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bookingpress_deposit_due_amt + tax_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt + tax_amount ); } else { if( 1 == vm.is_tax_activated ){ /* let tax_method = vm.appointment_step_form_data.tax_price_display_options; */ /* if( "exclude_taxes" == tax_method ){ */ let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); } else { vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } else { let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); }else{ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } } } /* 26 April 2023 changes */ } else { vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = bookingpress_deposit_amt; vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); if( 0 == subtotal_price ){ vm.appointment_step_form_data.total_payable_amount = subtotal_price; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( subtotal_price, true ); } if(payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "")){ var bookingpress_is_recurring_appointment_active = false; if(typeof vm.appointment_step_form_data.recurring_appointments != "undefined"){ if(vm.appointment_step_form_data.is_recurring_appointments == true || vm.appointment_step_form_data.is_recurring_appointments == "true"){ bookingpress_is_recurring_appointment_active = true; } } if( 1 == is_cart_addon && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = total_payable_amount; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); } if(bookingpress_is_recurring_appointment_active && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = subtotal_price; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = 0; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol(0); } } } } if(vm.appointment_step_form_data.selected_payment_method != " - " && vm.appointment_step_form_data.selected_payment_method != ""){ vm.appointment_step_form_data.selected_payment_method_org = vm.appointment_step_form_data.selected_payment_method; } var paypal_payment_method_type = "lagacy"; if(vm.appointment_step_form_data.total_payable_amount == 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { var final_document_divnew = document.getElementById("paypal-button-container"); vm.show_paypal_popup_button = "false"; if(final_document_divnew){ document.getElementById("paypal-button-container").style.display = "none"; } } else if(vm.appointment_step_form_data.total_payable_amount != 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { vm.show_paypal_popup_button = "true"; document.getElementById("paypal-button-container").style.display = "block"; vm.appointment_step_form_data.selected_payment_method = vm.appointment_step_form_data.selected_payment_method_org; } if( "undefined" == typeof vm.prevent_verification_on_load || false == vm.prevent_verification_on_load ){ this.bookingpress_verify_total_payment_amount(); } }, bookingpress_verify_total_payment_amount_v2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; } }.bind(this) ) .catch( function (error) { }); }, bookingpress_verify_total_payment_amount(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } vm.bkp_processing_token = true; let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; vm.bkp_processing_token = false; } if( vm.bkp_process_booking == true ){ vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { }); }, bookingpress_recalculate_payable_amount(){ return false; const vm = this; var bookingpress_recalculate_data = {}; bookingpress_recalculate_data.action = "bookingpress_recalculate_appointment_data"; bookingpress_recalculate_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_recalculate_data._wpnonce = bkp_wpnonce_pre_fetch; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ bookingpress_recalculate_data.client_timezone_offset = vm.bookingpress_timezone_offset; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ bookingpress_recalculate_data.client_dst_timezone = vm.bookingpress_dst_timezone; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_recalculate_data ) ) .then( function (response) { vm.appointment_step_form_data = response.data.appointment_data }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error) }); }, bookingpress_apply_coupon_code(final_call = false){ const vm = this; vm.coupon_apply_loader = "1"; var bookingpress_apply_coupon_data = {}; bookingpress_apply_coupon_data.action = "bookingpress_apply_coupon_code"; bookingpress_apply_coupon_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_apply_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_apply_coupon_data ) ) .then( function (response) { vm.coupon_apply_loader = "0"; vm.coupon_applied_status = response.data.variant; if(response.data.variant == "error"){ vm.coupon_code_msg = response.data.msg; vm.appointment_step_form_data.coupon_discount_amount = 0; /* for the coupon code error display */ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "flex"; } }else{ vm.coupon_code_msg = response.data.msg; vm.coupon_discounted_amount = "-" + response.data.discounted_amount; vm.bpa_coupon_apply_disabled = 1; vm.appointment_step_form_data.applied_coupon_res = { "coupon_data": response.data.coupon_data }; } vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; if(response.data.coupon_discount_amount > 0 ) { vm.appointment_step_form_data.bookingpress_temp_subtotal = response.data.bookingpress_temp_subtotal; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = response.data.bookingpress_temp_subtotal_with_currency; vm.appointment_step_form_data.coupon_discount_amount = response.data.coupon_discount_amount; vm.appointment_step_form_data.coupon_discount_amount_with_currecny = response.data.coupon_discount_amount_with_currecny; if( typeof response.data.tax_amount != "undefined" ){ vm.appointment_step_form_data.tax_amount_before_coupon = vm.appointment_step_form_data.tax_amount; vm.appointment_step_form_data.tax_amount_before_coupon_without_currency = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount = response.data.tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.total_payable_amount_with_currency; vm.appointment_step_form_data.calculated_tax_amount_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = response.data.tax_amount; } if( 0 == response.data.total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = response.data.total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( response.data.total_payable_amount, true ); } } vm.bookingpress_get_final_step_amount(); }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); }, bookingpress_remove_coupon_code(final_call = false){ const vm = this; let bookingpress_remove_coupon_data = { action: "bookingpress_remove_coupon_code", coupon_code: vm.appointment_step_form_data.coupon_code, }; let bkp_wpnonce_pre = "4ac51a523d"; let bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_remove_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_remove_coupon_data ) ) .then( function (response) { }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); vm.appointment_step_form_data.coupon_code = ""; vm.appointment_step_form_data.applied_coupon_res = ""; vm.coupon_code_msg = ""; /* vm.bookingpress_recalculate_payable_amount() */ vm.bpa_coupon_apply_disabled = 0; vm.coupon_applied_status = "error"; vm.coupon_discounted_amount = ""; vm.appointment_step_form_data.coupon_discount_amount = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = ""; if(typeof vm.appointment_step_form_data.tax_amount_before_coupon != "undefined") { vm.appointment_step_form_data.tax_amount = vm.appointment_step_form_data.tax_amount_before_coupon; vm.appointment_step_form_data.tax_amount_without_currency = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.calculated_tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon; } vm.bookingpress_get_final_step_amount(); }, generateSpamCaptchav2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_generate_spam_captcha", _wpnonce:bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.variant != "error" && (response.data.captcha_val != "" && response.data.captcha_val != undefined)){ }else{ var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch!="undefined" && bkp_wpnonce_pre_fetch!=null && response.data.updated_nonce!=""){ document.getElementById("_wpnonce").value = response.data.updated_nonce; } else { vm.$notify({ title: response.data.title, message: response.data.msg, type: response.data.variant, customClass: "error_notification" }); } if( "undefined" != typeof response.data.updated_ics_nonce && "" != response.data.updated_ics_nonce && null != document.getElementById( "bpa_ics_nonce" ) ){ document.getElementById( "bpa_ics_nonce" ).value = response.data.updated_ics_nonce; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, async bookingpress_render_thankyou_content(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; await vm.generateSpamCaptchav2(); var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_render_thankyou_content", bookingpress_uniq_id: vm.appointment_step_form_data.bookingpress_uniq_id, _wpnonce:bkp_wpnonce_pre_fetch }; if( "undefined" != typeof vm.load_synchronized_thankyou_page && true == vm.load_synchronized_thankyou_page ){ return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; const link = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item a"); const button = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item button"); // Focus on whichever element exists (prioritizing the link if both exist) if (link) { link.focus(); } else if (button) { button.focus(); } },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } else { axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } }, checkBeforeBookProAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_pro_before_book_appointment", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, bookingpress_book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; /* for the coupon code error hide start */ if( 1 == vm2.is_coupon_activated ){ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "none"; } } /* for the coupon code error hide end */ vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if( "undefined" != typeof vm2.bkp_processing_token && true == vm2.bkp_processing_token ){ vm2.bkp_process_booking = true; return false; } if(vm2.is_display_error != "1"){ /* vm2.appointment_step_form_data.service_timing = vm2.service_timing */ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_book_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.bkp_process_booking = false; var bookingpress_redirection_mode = "external_redirection"; if(bookingpress_redirection_mode == "external_redirection"){ if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else{ vm2.bookingpress_remove_error_msg(); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } setTimeout(function(){ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },2000); }else{ var bookingpress_uniq_id = vm2.appointment_step_form_data.bookingpress_uniq_id; if( "undefined" != typeof wp.hooks ){ wp.hooks.doAction("bookingpress_after_book_appointment"); } if(response.data.variant != "error"){ vm2.bookingpress_render_thankyou_content(); vm2.bookingpress_remove_error_msg(); if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "1"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "0"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "block"; document.getElementById("bpa-thankyou-screen-div").style.display = "none"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed == "undefined"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else{ vm2.appointment_step_form_data.is_transaction_completed = 1; document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; vm2.appointment_step_form_data.is_transaction_completed = ""; vm2.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } } } }.bind(this) ) .catch( function (error) { let errorText = ("undefined" != typeof error.response.statusText ) ? error.response.statusText : error; vm2.bookingpress_set_error_msg( error.response.status + " " + errorText); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, inputFormat() { let text = this.appointment_step_form_data.card_number.split(" ").join(""); /* this.cardVdid is not formated in 4 spaces */ this.cardVadid = text; if (text.length > 0) { /* regExp 4 in 4 number add an space between */ text = text.match(new RegExp(/.{1,4}/, "g")).join(" ") /* accept only numbers */ .replace(new RegExp(/[^\d]/, "ig"), " "); } /* this.appointment_step_form_data.card_number is formated on 4 spaces */ this.appointment_step_form_data.card_number = text; /* after formatd they callback cardType for choose a type of the card */ this.GetCardType(this.cardVadid); }, /* loop for the next 9 years for expire data on credit card */ expirationDate() { let yearNow = new Date().getFullYear(); for (let i = yearNow; i < yearNow + this.timeToExpire; i++) { this.years.push({ year: i }); } }, validCreditCard(value) { let inputValidate = document.getElementById("cardNumber"); /* luhn algorithm */ let numCheck = 0, bEven = false; value = value.toString().replace(new RegExp(/\D/g, "")); for (let n = value.length - 1; n >= 0; n--) { let cDigit = value.charAt(n), digit = parseInt(cDigit, 10); if (bEven && (digit *= 2) > 9) digit -= 9; numCheck += digit; bEven = !bEven; } let len = value.length; /* true: return valid number */ /* this.cardType return true if have an valid number on regx array */ if (numCheck % 10 === 0 && len === 16 && this.cardType) { inputValidate.classList.remove("notValid"); inputValidate.classList.add("valid"); this.isBookingDisabled = false; } /* false: return not valid number */ else if (!(numCheck % 10 === 0) && len === 16) { inputValidate.classList.remove("valid"); inputValidate.classList.add("notValid"); this.isBookingDisabled = true; /* if not have number on input */ } else { inputValidate.classList.remove("valid"); inputValidate.classList.remove("notValid"); this.isBookingDisabled = false; } }, /* get the name of the card name */ GetCardType(number) { this.regx.forEach((item) => { if (number.match(item.re) != null) { this.cardType = item.logo; /* cClass add a class with the name of cardName to manipulate with css */ this.cClass = item.name.toLowerCase(); } else if (!number) { this.cardType = ""; this.cClass = ""; } }); /* after choose a cardtype return the number for the luhn algorithm */ this.validCreditCard(number); }, /* mouse down on btn */ mouseDw() { this.btnClassName = "btn__active"; }, /* mouse up on btn */ mouseUp() { this.btnClassName = ""; }, blr() { let cr = document.getElementsByClassName("card--credit__card")[0]; if( null != cr && "undefined" != typeof cr.classList ){ cr.classList.remove("cvv-active") } }, async bookingpress_set_timezone(){ const vm = this; var bookingpress_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let clientTimezoneOffset = new Date().getTimezoneOffset(); /** get client timezone offset in minutes from UTC 0. If client is in UTC -10:00 timezone, then this line will return 600 minutes. If timezone is in daylight saving timezone then it will return 540 minutes ( 09:00 hours ) */ let client_timezone_offset = -1 * ( clientTimezoneOffset / 60 ); /** converted minutes into hours - returns -2 */ let offset_minute = client_timezone_offset % 1; /** Retrieve remaining minutes in case if the minutes falls with decimal numbers */ let final_offset = clientTimezoneOffset; /* hours + "" + minute; /** concate the hours and minutes */ vm.bookingpress_timezone = bookingpress_timezone; vm.bookingpress_timezone_offset = final_offset; vm.appointment_step_form_data.selected_date = vm.get_formatted_date( new Date() ); let is_dst_time = 0; let current_datetime = new Date(); let jan1 = new Date( current_datetime.getFullYear(), 0, 1, 0, 0, 0, 0 ); let temp = jan1.toGMTString(); let jan2 = new Date( temp.substring(0, temp.lastIndexOf(" ") - 1 ) ); let std_tz_offset = ( jan1 - jan2 ) / ( 1000 * 60 * 60 ); let june1 = new Date(current_datetime.getFullYear(), 6, 1, 0, 0, 0, 0); temp = june1.toGMTString(); let june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); let daylight_time_offset = (june1 - june2) / (1000 * 60 * 60); if( std_tz_offset != daylight_time_offset ){ is_dst_time = 1; } vm.bookingpress_dst_timezone = is_dst_time; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var bookingpress_postdata = { action: "bookingpress_set_clients_timezone", clients_timezone: bookingpress_timezone, _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_postdata ) ) .then( function (response){ } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_calculate_service_addons_price(service_id, service_name = "", service_price = "", service_price_without_currency = ""){}, bookingpress_calculate_service_addons_price_legacy(service_id, service_name = "", service_price = "", service_price_without_currency = ""){ const vm = this; vm.appointment_step_form_data.selected_service = service_id; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if(service_name != "" && service_price != "" && service_price_without_currency != ""){ vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; } var postData = { action: "bookingpress_calculate_service_addons_price", selected_service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if(vm.appointment_step_form_data.selected_service == service_id){ vm.appointment_step_form_data.selected_service_price = response.data.selected_service_total_price; vm.appointment_step_form_data.total_payable_amount = response.data.price_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.price_with_currency; vm.appointment_step_form_data.service_price_without_currency = response.data.price_without_currency; if(response.data.is_tax_calculated == 1){ vm.appointment_step_form_data.tax_amount = response.data.tax_amount; if(typeof vm.appointment_step_form_data.tax_amount_without_currency != "undefined") { vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; } } } } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_modify_front_dates_as_service(){ const vm = this; var service_id = vm.appointment_step_form_data.selected_service; if(vm.is_loaded_service_disabled_dates !== "undefined" && vm.is_loaded_service_disabled_dates != service_id){ vm.appointment_step_form_data.selected_date = vm.appointment_step_form_data.default_selected_date; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_change_front_calendar_dates", service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ /* vm.days_off_disabled_dates = response.data.disabled_dates */ vm.appointment_step_form_data.selected_date = response.data.next_selected_date; vm.is_loaded_service_disabled_dates = service_id; } } .bind( this ) ) .catch( function (error) { console.log(error); }); } }, bookingpress_hide_show_extra_description(bookingpress_extra_service_id){ const vm = this; let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ].service_extras; let selected_extra = selected_service_data[ bookingpress_extra_service_id ]; if( "undefined" != typeof selected_extra ){ if( "0" == selected_extra.bookingpress_is_display_description ){ selected_extra.bookingpress_is_display_description = "1"; } else { selected_extra.bookingpress_is_display_description = "0"; } } }, bookingpress_select_any_staffmember(){ const vm = this; let step_data = vm.bookingpress_sidebar_step_data["staffmembers"]; vm.appointment_step_form_data.select_any_staffmember = "true"; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; vm.appointment_step_form_data.selected_staff_member_id = 0; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = true; if( vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 && "undefined" != typeof vm.appointment_step_form_data.bpa_after_select_datetime_available_staff ){ let time_details_arr = vm.appointment_step_form_data.bpa_after_select_datetime_available_staff; if( 1 < time_details_arr.available_staffs.length ){ let available_staff_id = time_details_arr.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details_arr ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; if( ("undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1) && ("undefined" != typeof time_details.happy_hour_data ) ) { vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details_arr.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } else { if( "service" == step_data.next_tab_name && vm.bookingpress_sidebar_step_data[step_data.next_tab_name].is_display_step == 1 ){ vm.appointment_step_form_data.selected_service = ""; } vm.appointment_step_form_data.bpa_all_available_staff_member = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" && vm.appointment_step_form_data.selected_service == "" && vm.appointment_step_form_data.select_any_staffmember && vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected == true){ vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime = 1; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ vm.appointment_step_form_data.bpa_all_available_staff_member.push( currentValue.bookingpress_staffmember_id ); }); } for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; } else { vm.bpasortedServices[x].is_visible = false; } } } vm.bookingpress_step_navigation(step_data.next_tab_name, step_data.next_tab_name, step_data.previous_tab_name, 0); }, async bookingpress_select_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0, event){ if(event){ event.preventDefault(); if(event.key === "Enter"){ if(event.target.classList.contains("bpa-front-staff-rat-cb__item")){ return; } } } const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined" && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1 ) ){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.appointment_step_form_data.bpa_available_staffwise_service = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" ){ vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; } if( (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && "datetime" == vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name && vm.appointment_step_form_data.selected_service == "") && ( "undefined" == typeof vm.is_multi_staffmember_activate && vm.is_multi_staffmember_activate != 1 ) || ( "service" == vm.bookingpress_sidebar_step_data.datetime.next_tab_name && vm.appointment_step_form_data.selected_service == "" && (vm.appointment_step_form_data.hide_staff_selection == "true" || vm.appointment_step_form_data.hide_staff_selection == true)) ){ vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; let service_data_arr = vm.bookingpress_all_services_data; if (vm.bookingpress_staffmembers_details.length === 1) { selected_staffmember_id = vm.bookingpress_staffmembers_details[0].bookingpress_staffmember_id; } if( "any_staff" != selected_staffmember_id ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if( "undefined" != typeof service_arr.assigned_staffmembers ) { if (service_arr.assigned_staffmembers.includes(selected_staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); } } } } if( "any_staff" == selected_staffmember_id && "undefined" != vm.appointment_step_form_data.happy_hours_activated && 1 == vm.appointment_step_form_data.happy_hours_activated ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if ("undefined" != typeof service_arr.assigned_staffmembers) { for (let i = 0; i < vm.appointment_step_form_data.bpa_all_available_staff_member.length; i++) { let staffmember_id = vm.appointment_step_form_data.bpa_all_available_staff_member[i]; if (service_arr.assigned_staffmembers.includes(staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); break; } } } } } } let service_id = vm.appointment_step_form_data.selected_service; let service_data = vm.bookingpress_all_services_data[ service_id ]; let use_legacy_any_staff = false; if( selected_staffmember_id == "any_staff" && "undefined" != typeof service_data && "undefined" != typeof service_data.bookingpress_service_duration_unit && "d" == service_data.bookingpress_service_duration_unit ){ use_legacy_any_staff = true; } vm.appointment_step_form_data.any_staff_selected = 0; if( true == use_legacy_any_staff ){ return await vm.bookingpress_select_staffmember_legacy( selected_staffmember_id, is_any_staff_option_selected ); } else if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.any_staff_selected = 1; if( "" != vm.appointment_step_form_data.selected_service ){ vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } let assigned_staffs = []; service_data.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); let choose_from_url = false; let assigned_updated_staffs = []; if( 0 < bookingpress_is_selected_staff_from_url && 0 < assigned_staffs.length ){ let staff_id_from_url = bookingpress_is_selected_staff_from_url; if( assigned_staffs.includes( staff_id_from_url ) ){ assigned_staffs = [staff_id_from_url]; choose_from_url = true; } } if( 1 == assigned_staffs.length ){ vm.appointment_step_form_data.any_staff_selected = 0; let selected_staffmember_id = ( true == choose_from_url ) ? assigned_staffs[0] : service_data.assigned_staffmembers[0]; /*Added for applying selected staff memebr price */ let service_staff_details = service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); /*Added for applying selected staff memebr price */ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.hide_capacity_text_flag = false; } else { vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; } } else { if( "service" == vm.bookingpress_current_tab ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; let assigned_staffs = []; for (let x in vm.bpasortedServices) { let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && false == elm.is_disabled ){ elm.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if ("" == first_service_category) { first_service_category = elm.bookingpress_category_id; } } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; let hidden_category_for_staff = []; for (let ci in vm.service_categories) { let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; /* if (category_staff.indexOf(response.data.staffmember_id.toString()) < 0) { hidden_category_for_staff.push(category_id); } */ } if ("" != first_service_category) { for (let c in vm.bookingpress_all_categories) { vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if (current_category.category_id == first_service_category) { vm.bpa_select_category(current_category.category_id, current_category.category_name); } else { if (hidden_category_for_staff.indexOf(current_category.category_id.toString()) > -1) { vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } } vm.hide_capacity_text_flag = false; } } else { vm.hide_capacity_text_flag = false; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.available_staffs = []; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; if( vm.is_bring_anyone_with_you_activated == 1 ){ let service_min_capacity = selected_service_data.staff_member_details[ selected_staffmember_id].bookingpress_min_service_capacity; if( service_min_capacity != "undefined" && vm.appointment_step_form_data.bookingpress_selected_bring_members < service_min_capacity ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); } } let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let consider_staff_price = true; if( ( typeof vm.appointment_step_form_data.bpa_datetime_after_staffselection !== "undefined" && vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 ) && ( typeof vm.appointment_step_form_data.is_happy_hours_applied !== "undefined" && vm.appointment_step_form_data.is_happy_hours_applied == 1 ) ) { consider_staff_price = false; } if ( true == consider_staff_price ) { let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } } let step_data = "staffmembers"; let f = 0; let is_club_staff = "0"; if(typeof vm.appointment_step_form_data.is_club_staff != "undefined" && vm.appointment_step_form_data.is_club_staff == "1"){ is_club_staff = "1"; } if( "staffmembers" == vm.bookingpress_current_tab ){ if(is_club_staff == "0"){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, async bookingpress_select_staffmember_legacy(selected_staffmember_id, is_any_staff_option_selected = 0){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined"){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_any_staffmember_id", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.bookingpress_repeat_custom_form_fields( vm.appointment_step_form_data.selected_service ); } } else { postData.selected_bring_members = 1; } return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if( 1 > response.data.staffmember_id ){ for( let s in vm.bookingpress_staffmembers_details ){ let staffmember_details = vm.bookingpress_staffmembers_details[s]; let staffmember_selected_services = staffmember_details.assigned_service_details.includes(vm.appointment_step_form_data.selected_service); if( staffmember_selected_services ){ let staffmember_id = staffmember_details.bookingpress_staffmember_id; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( staffmember_id ) < 0 ){ response.data.staffmember_id = staffmember_id; } } } } vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let set_service_visibility = false; if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } else { if( "staffmembers" == vm.bookingpress_current_tab && "" != vm.appointment_step_form_data.selected_staff_member_id ){ set_service_visibility = true; } } if( "service" == vm.bookingpress_current_tab || true == set_service_visibility ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( response.data.staffmember_id.toString() ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } if( "" != first_service_category ){ for( let c of vm.service_categories ){ if( c.bookingpress_category_id == first_service_category ){ vm.bpa_select_category( c.bookingpress_category_id, c.bookingpress_category_name ); break; } } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( response.data.staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; /* vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); */ } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( response.data.staffmember_id ); } } vm.bpa_select_category( "" ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }else{ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } let step_data = "staffmembers"; let f = 0; if( "staffmembers" == vm.bookingpress_current_tab ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ){ const vm = this; /** Enable Bring Any one if the service has only 1 capacity but the selected staff has more that 1 capacity */ let is_bring_anone_displayed = document.querySelectorAll(".--bpa-sao-guest-module"); if( "" == selected_staffmember_id || 1 > selected_staffmember_id ){ return false; } let selected_service = vm.appointment_step_form_data.selected_service; if( "" == selected_service ){ return false; } let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; if( staffmember_id == selected_staffmember_id ){ let assigned_service_price_list = current_staffmember.assigned_service_price_details; let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( "undefined" == typeof vm.bookingpress_bring_anyone_with_you_details[selected_service] ){ vm.bookingpress_bring_anyone_with_you_details[selected_service] = { "bookingpress_service_id": selected_service, "bookingpress_service_max_capacity": parseInt(max_capacity), "bookingpress_service_min_capacity": parseInt(min_capacity), }; } else { vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_max_capacity = parseInt(max_capacity); vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_min_capacity = parseInt(min_capacity); } vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); } } }, bookingpress_is_in_viewport(element) { const rect = element.getBoundingClientRect(); return ( rect.bottom > 0 && rect.right > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight) && rect.left < (window.innerWidth || document.documentElement.clientWidth) ); }, bookingpress_close_extra_drawer(){ const vm = this; if( "undefined" != typeof vm.bpa_show_extras_drawer && false == vm.bpa_show_extras_drawer ){ return; } let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_focus = document.getElementById("bap-service-" + selected_service); const target = document.querySelector(".bpa-front-dc--service-body"); if(selected_service_focus && this.bookingpress_is_in_viewport(target)){ selected_service_focus.focus(); } vm.appointment_step_form_data.selected_service = ""; vm.appointment_step_form_data.selected_service_name = ""; vm.appointment_step_form_data.selected_service_price = ""; vm.appointment_step_form_data.service_price_without_currency = ""; if( "" != selected_service ){ let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_extras = ( "undefined" != typeof selected_service_data.service_extras ) ? selected_service_data.service_extras : false; if( false != service_extras ){ for( let se in service_extras ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_selected_qty = 1; } } } vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); /** reset bring anyone details */ if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = 1; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; } }, bookingpress_get_service_capacity(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } const vm = this; var postData = { action: "bookingpress_get_service_max_capacity", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.appointment_step_form_data.service_max_capacity = response.data.max_capacity } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_service_advance_see_less(){ const vm = this; vm.service_advance_see_less = "1"; vm.bookingpress_close_extra_drawer(); }, bookingpress_load_more_extras(){ const vm = this; if(vm.is_load_more_extras == "0"){ vm.is_load_more_extras = "1"; }else{ vm.is_load_more_extras = "0"; } }, bpa_focus_select_elm( $el ){ const vm = this; setTimeout(function(){ let elm = $el.querySelector(".el-input.is-focus");// .el-input.is-focus"); let parentNode = vm.BPAGetParents( elm, ".bpa-bd-fields--sel-container" ); if( parentNode.length > 0 ){ let firstParent = parentNode[0]; firstParent.classList.add( "bpa-sel--focus" ); } },100); }, bpa_remove_focus_select_elm($el){ let elm = document.querySelector( ".bpa-sel--focus" ); }, bookingpress_selectpicker_set_position( flag ){ const vm = this; if( true == flag ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( document.querySelector(".bpa-focused-select") != null && is_admin_bar_visible ) { setTimeout(function(){ let top_pos = document.querySelector(".bpa-focused-select").style.top; top_pos = parseInt( top_pos.replace("px","") ); document.querySelector(".bpa-focused-select").style.top = ( top_pos + 32 ) + "px"; },10); } if( document.querySelector(".bpa-focused-select") != null ) { setTimeout(function(){ const allselectcontainer = document.querySelectorAll(".bpa-bd-fields--sel-container"); if(typeof allselectcontainer != "undefined"){ var has_added = false; allselectcontainer.forEach((selcontItem) => { var questyle = selcontItem.querySelector(".bpa-focused-select"); if(typeof questyle != "undefined"){ const display = window.getComputedStyle(questyle).display; if(display != "none" && !has_added){ selcontItem.classList.add( "bpa-sel--focus" ); has_added = true; } } }); } },100); } } if( false == flag ){ if( document.querySelector(".bpa-bd-fields--sel-container") != null ) { let elm = document.querySelector(".bpa-bd-fields--sel-container") const range_inputs = document.querySelectorAll(".bpa-bd-fields--sel-container"); for (const range_input of range_inputs) { range_input.classList.remove( "bpa-sel--focus" ); } } } }, bookingpress_set_datepicker_position( event ){ let popperElm = document.querySelector(".bpa-custom-datepicker"); if( popperElm != null ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( is_admin_bar_visible ){ setTimeout(function(){ let top_pos = popperElm.style.top; top_pos = parseInt( top_pos.replace("px","") ); popperElm.style.top = ( top_pos + 32 ) + "px"; },10); } } }, bookingpress_get_service_categories_from_staffmembers(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_service_cat_details", staffmember_id: vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.service_categories = response.data.service_categories_data; var bookingpress_first_cat_id = response.data.first_cat_id; vm.services_data = []; setTimeout(function(){ vm.selectStepCategory(bookingpress_first_cat_id); }, 500); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_update_staffmember_data( number_of_guests, selected_service_id = "" ){ const vm = this; vm.bookingpress_disabled_staffmember = []; let selected_service = vm.appointment_step_form_data.selected_service; if( selected_service == "" || ( (selected_service_id != "") && (selected_service != selected_service_id) ) ){ selected_service = selected_service_id; } let guests_count = number_of_guests - 1; let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = true; let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; let assigned_service_price_list = current_staffmember.assigned_service_price_details; if( "undefined" != typeof assigned_service_price_list[ selected_service ] ){ let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; if( max_capacity < (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } if( vm.is_bring_anyone_with_you_activated == "1" ){ let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( min_capacity > (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } } } } }, bookingpress_close_extra_drawer_on_mouseup(){ const vm = this; window.addEventListener( "mouseup", function(e){ if( null != document.querySelector(".bpa-front-dc--service-body") ){ let div = document.querySelector(".bpa-front-dc--service-body"); let scrollbarWidth = div.offsetWidth - div.clientWidth; let scrollbarHeight = div.offsetHeight - div.clientHeight; let isVerticalScrollbarClick = (e.offsetX >= div.clientWidth && e.offsetX <= div.offsetWidth ); let isHorizontalScrollbarClick = e.offsetY >= div.clientHeight; if (scrollbarWidth > 0 && isVerticalScrollbarClick) { return; } } let elem = e.target; let htmlWidth = document.querySelector("html").offsetWidth; if( htmlWidth < e.clientX ){ return; } let parentNode = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options" ); let parentNodeBawy = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options-popper" ); let is_mob = false; let bpa_parent_container = document.querySelector( ".bpa-frontend-main-container" ); let is_visible = true; if( null != bpa_parent_container && 1 > bpa_parent_container.offsetWidth ){ is_visible = false; } if( parentNode.length < 1 && parentNodeBawy.length < 1 && "true" == vm.bookingpress_open_extras_drawer && "service" == vm.bookingpress_current_tab && "true" == vm.bookingpress_open_extras_drawer && true == is_visible ){ let allow_close_drawer = wp.hooks.applyFilters( "bpa_allow_close_draer", true, is_visible, elem, parentNode, parentNodeBawy ); if( true == allow_close_drawer ){ let mob_extra = document.querySelector( ".bpa-fm--service__advance-options.--bpa-is-mob" ); if( mob_extra == null ){ vm.bookingpress_close_extra_drawer(); } else { let mob_pos = mob_extra.getBoundingClientRect(); if( mob_pos.width == 0 && mob_pos.height == 0 ){ vm.bookingpress_close_extra_drawer(); } } } } }); }, BPAGetParents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, bookingpress_get_formatted_datetime(event,field_meta_key,is_time_enabled) { if(event != null){ if(is_time_enabled == true) { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_datetime(event); } else { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_date(event); } } }, openExtraServicePopover() { // Access the popover methods directly const vm = this; this.$nextTick( () =>{ vm.$refs.extra_service_desc_popover.doToggle(); }); }, openRecurringSessionPopover() { const vm = this; this.$nextTick( () =>{ // Access the popover methods directly vm.$refs.recurring_session_desc_popover.doToggle(); }); }, BPACustomerFileUpload(response, file, fileList){ const vm = this; let ref = response.reference; if( response.error == 1 ){ vm.$refs[ ref ][0].$options.parent.validateMessage = response.msg; vm.$refs[ ref ][0].$options.parent.validateState = "error"; vm.$refs[ ref ][0].clearFiles(); } else { vm.$refs[ref][0].$options.parent.validateMessage = ""; vm.$refs[ref][0].$options.parent.validateState = ""; const uploadUrl = response.upload_url; const fileRef = response.file_ref; if (Array.isArray(vm.appointment_step_form_data[fileRef])) { vm.appointment_step_form_data[fileRef].push(uploadUrl); } else if (vm.appointment_step_form_data[fileRef]) { vm.appointment_step_form_data[fileRef] = [ vm.appointment_step_form_data[fileRef], uploadUrl, ]; } else { vm.appointment_step_form_data[fileRef] = [uploadUrl]; } vm.appointment_step_form_data.form_fields[fileRef] = vm.appointment_step_form_data[fileRef]; } }, BPACustomerFileUploadError(err, file, fileList){ /** Need to handle error but currently no error is reaching to this function */ if( file.status == "fail" ){ console.log( err ); } }, BPACustomerhandleFileExceed(files, fileList ) { const vm = this; vm.bookingpress_set_error_msg( vm.appointment_step_form_data.bpa_fileupload_max_limit_reach_msg ); }, BPACustomerFileUploadRemove( file, fileList ){ const vm = this; let response = file.response; vm.appointment_step_form_data[ response.file_ref ] = ""; vm.appointment_step_form_data.form_fields[ response.file_ref ] = ""; let postData = { action:"bpa_remove_form_file", _wpnonce: "4ac51a523d", uploaded_file_name: response.upload_file_name }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function( response ){ }).catch( function( error ){ }); }, BPAConvertBytesToMB( bytes){ return (bytes / (1024 * 1024)).toFixed(0); }, bookingpress_reset_selected_timeslot_data(){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && "1" == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ return; } vm.appointment_step_form_data.selected_start_time = ""; }, bookingpress_reset_custom_duration_data() { const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } ; }, bookingpress_step_navigator( current_tab, next_tab, previous_tab ){ let vm = this; let is_strict_validate = false; let current_selected_tab = vm.bookingpress_current_tab; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( current_selected_tab ); /** Current Tab Position */ let selected_tab_pos = sidebar_keys.indexOf( current_tab ); /** Clicked Tab Position */ if( selected_tab_pos < current_tab_pos ){ vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab, 0 ); } else { vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab ); } }, bookingpress_change_service_extras_event( is_checked ){ const vm = this; }, bookingpress_change_service_extras_qty( is_checked ){ const vm = this; vm.$forceUpdate(); }, bookingpress_set_extra_service_error_msg(error_msg){ const vm = this; vm.is_display_extra_service_error = 1; vm.extra_service_error_msg = error_msg; setTimeout(function(){ vm.bookingpress_remove_extra_service_error_msg(); },6000); }, bookingpress_remove_extra_service_error_msg(){ const vm = this; vm.is_display_extra_service_error = "0"; vm.extra_service_error_msg = ""; }, get_formatted_date(iso_date){ if( true == /(\d{2})\T/.test( iso_date ) ){ let date_time_arr = iso_date.split("T"); return date_time_arr[0]; } var __date = new Date(iso_date); var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date; }, get_formatted_datetime(iso_date) { var __date = new Date(iso_date); var hour = __date.getHours(); var minute = __date.getMinutes(); var second = __date.getSeconds(); if (minute < 10) { minute = "0" + minute; } if (second < 10) { second = "0" + second; } var formatted_time = hour + ":" + minute + ":" + second; var __year = __date.getFullYear(); var __month = __date.getMonth()+1; var __day = __date.getDate(); if (__day < 10) { __day = "0" + __day; } if (__month < 10) { __month = "0" + __month; } var formatted_date = __year+"-"+__month+"-"+__day; return formatted_date+" "+formatted_time; }, bookingpress_set_error_msg(error_msg){ const vm = this; let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } vm.is_display_error = "1"; vm.is_error_msg = error_msg; const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ window.scrollTo({ top: pos, behavior: "smooth", }); } setTimeout(function(){ vm.bookingpress_remove_error_msg(); },6000); }, bookingpress_remove_error_msg(){ const vm = this; vm.is_display_error = "0"; vm.is_error_msg = ""; }, checkBeforeBookAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_before_book_appointment",_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if(vm2.is_display_error != "1"){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_save_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; if(response.data.variant == "redirect"){ vm2.bookingpress_remove_error_msg(); vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); }else{ vm2.bookingpress_remove_error_msg(); } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } }.bind(this) ) .catch( function (error) { vm2.bookingpress_set_error_msg(error); }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, bpa_check_browser(){ const vm = this; let userAgent = navigator.userAgent; let browserName; if(userAgent.match(/edg/i)){ browserName = "edge"; } else if(userAgent.match(/opr\//i)){ browserName = "opera"; } else if(userAgent.match(/chrome|chromium|crios/i)){ browserName = "chrome"; } else if(userAgent.match(/firefox|fxios/i)) { browserName = "firefox"; } else if(userAgent.match(/safari/i)) { browserName = "safari"; } else { browserName="Unknown"; } vm.browser_details = browserName; }, bpa_check_browser_version(){ const vm = this; var objappVersion = navigator.appVersion; var browserAgent = navigator.userAgent; var browserName = navigator.appName; var browserVersion = "" + parseFloat(navigator.appVersion); var browserMajorVersion = parseInt(navigator.appVersion, 10); var Offset, OffsetVersion, ix; /* For Chrome */ if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) { browserName = "Chrome"; browserVersion = browserAgent.substring(OffsetVersion + 7); } /* For Microsoft internet explorer */ else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) { browserName = "Microsoft Internet Explorer"; browserVersion = browserAgent.substring(OffsetVersion + 5); } /* For Firefox */ else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) { browserName = "Firefox"; } /* For Safari */ else if ((OffsetVersion = browserAgent.indexOf("Safari")) != -1) { browserName = "Safari"; browserVersion = browserAgent.substring(OffsetVersion + 7); if ((OffsetVersion = browserAgent.indexOf("Version")) != -1) browserVersion = browserAgent.substring(OffsetVersion + 8); } /* For other browser "name/version" is at the end of userAgent */ else if ((Offset = browserAgent.lastIndexOf(" ") + 1) < (OffsetVersion = browserAgent.lastIndexOf("/"))) { browserName = browserAgent.substring(Offset, OffsetVersion); browserVersion = browserAgent.substring(OffsetVersion + 1); if (browserName.toLowerCase() == browserName.toUpperCase()) { browserName = navigator.appName; } } /* Trimming the fullVersion string at */ /* semicolon/space if present */ if ((ix = browserVersion.indexOf(";")) != -1) browserVersion = browserVersion.substring(0, ix); if ((ix = browserVersion.indexOf(" ")) != -1) browserVersion = browserVersion.substring(0, ix); browserMajorVersion = parseInt("" + browserVersion, 10); if (isNaN(browserMajorVersion)) { browserVersion = "" + parseFloat(navigator.appVersion); browserMajorVersion = parseInt(navigator.appVersion, 10); } vm.browser_version = browserMajorVersion; }, focusFirstService(){ if(app.current_screen_size == "desktop"){ this.$nextTick( () =>{ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); if( focusableItems.length ){ focusableItems[0].focus(); } }); } }, focusFirstDate(){ var firstDate = document.querySelectorAll(".vc-day.in-month [aria-disabled=false]"); if(firstDate){ if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); }else if(firstDate.length == 0){ firstDate = document.querySelectorAll(".vc-day.in-month .vc-day-content:not(.is-disabled)"); if(firstDate.length > 1){ firstDate[1].focus(); }else if(firstDate.length > 0){ firstDate[0].focus(); } } } }, focusFirstTimeSlot(){ this.$nextTick( () =>{ if( this.$refs.timeSlotItems.length ){ this.$refs.timeSlotItems[0].focus(); } }); }, focustFirstCategory(){ this.$nextTick(() => { if (this.$refs.categoryItem.length) { this.$refs.categoryItem[0].focus(); } }); }, bpa_handle_service_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--service .bpa-fm--si--col:not([style*='display: none']) .bpa-front-si-card"); // Update with your actual class let currentIndex = -1; let itemsPerRow = 2; if(window.outerWidth >= 1200){ itemsPerRow = 2; }else if(window.outerWidth < 950){ itemsPerRow = 1; } const active_container = document.querySelector(".bpa-front-module--service").offsetWidth; if(active_container && active_container.offsetWidth < 800){ itemsPerRow = 1; } // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); // bpa-fm--service__advance-options __bpa-is-active setTimeout(() => { let extraServiceFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-service-extras .el-checkbox__inner"); let recurringFocus = document.querySelector(".bpa-fm--service__advance-options.__bpa-is-active .--bpa-sao-guest-module .el-input__inner"); if(extraServiceFocus !== null){ extraServiceFocus.focus(); }else if (recurringFocus !== null){ recurringFocus.focus(); } }, 100); } else if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + itemsPerRow) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - itemsPerRow + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); this.bpaMoveFocusToPreviousElement( this.$refs.servicesGroup ); } }, bpa_handle_timeslot_keypress(index, event) { const groups = document.querySelectorAll(".bpa-front--dt__ts-body--row"); // row/groups const focusableItems = document.querySelectorAll(".bpa-front--dt__ts-body .bpa-front--dt__ts-body--item"); // Items let currentIndex = -1; let currentGroupIndex = -1; let itemIndexInGroup = -1; // Find the currently focused item and its group focusableItems.forEach((item, idx) => { if (item === document.activeElement) { currentIndex = idx; // Find which group this item belongs to for (let i = 0; i < groups.length; i++) { if (groups[i].contains(item)) { currentGroupIndex = i; // Find position within the group const groupItems = groups[i].querySelectorAll(".bpa-front--dt__ts-body--item"); for (let j = 0; j < groupItems.length; j++) { if (groupItems[j] === item) { itemIndexInGroup = j; break; } } break; } } } }); if (currentIndex === -1) return; // No focusable item is selected const itemsPerRow = 2; // Based on your screenshot showing 2 time slots per row if (event.key === "ArrowRight") { event.preventDefault(); // If at the end of the group, move to the first item of the next group if (itemIndexInGroup === groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length - 1) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Move to the next item in the same group let nextIndex = currentIndex + 1; if (nextIndex < focusableItems.length) { focusableItems[nextIndex].focus(); } } } else if (event.key === "ArrowDown") { event.preventDefault(); const itemsInCurrentGroup = groups[currentGroupIndex].querySelectorAll(".bpa-front--dt__ts-body--item").length; const rowsInCurrentGroup = Math.ceil(itemsInCurrentGroup / itemsPerRow); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup >= rowsInCurrentGroup - 1 || currentIndex + itemsPerRow >= focusableItems.length) { if (currentGroupIndex < groups.length - 1) { // Focus on the first item of the next group let nextIndex = currentIndex + itemsPerRow; const nextGroupItems = groups[currentGroupIndex + 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if(itemsInCurrentGroup % 2 == 0 && nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); }else if (nextGroupItems.length > 0) { nextGroupItems[0].focus(); } } } else { // Stay in the same group, move down a row let nextIndex = currentIndex + itemsPerRow; if(currentIndex == itemsInCurrentGroup - 2 && itemsInCurrentGroup % 2 == 1 && (nextIndex + 1) < focusableItems.length){ focusableItems[nextIndex + 1].focus(); }else if(nextIndex < focusableItems.length){ focusableItems[nextIndex].focus(); } // if(nextIndex < focusableItems.length) } } else if (event.key === "ArrowLeft") { event.preventDefault(); // If at the beginning of the group, move to the last item of the previous group if (itemIndexInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { prevGroupItems[prevGroupItems.length - 1].focus(); } } } else { // Move to the previous item in the same group let prevIndex = currentIndex - 1; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if (event.key === "ArrowUp") { event.preventDefault(); const currentRowInGroup = Math.floor(itemIndexInGroup / itemsPerRow); if (currentRowInGroup === 0) { if (currentGroupIndex > 0) { // Focus on the last item of the previous group const prevGroupItems = groups[currentGroupIndex - 1].querySelectorAll(".bpa-front--dt__ts-body--item"); if (prevGroupItems.length > 0) { let howMuchMinus = 1; if(itemIndexInGroup == 0 && prevGroupItems.length % 2 == 0){ howMuchMinus = 2; }else if(itemIndexInGroup == 1 && prevGroupItems.length % 2 == 0){ howMuchMinus = 1; }else{ if(itemIndexInGroup == 1 && prevGroupItems.length > 2){ howMuchMinus = 2; } } prevGroupItems[prevGroupItems.length - howMuchMinus].focus(); } } } else { // Stay in the same group, move up a row const prevIndex = currentIndex - itemsPerRow; if (prevIndex >= 0) { focusableItems[prevIndex].focus(); } } } else if ("Tab" == event.key && event.shiftKey && 0 === currentIndex) { event.preventDefault(); this.bpaMoveFocusToPreviousElement(this.$refs.timeSlotItemsGroup); } }, bpa_handle_category_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-cat-items-wrapper .bpa-front-ci-pill"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = document.querySelector(".bpa_search_service_data_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } this.bpaMoveFocusToPreviousElement( this.$refs.categoryGroup, focusElement ); } }, bpa_handle_pg_keypress( index, event ){ const focusableItems = document.querySelectorAll(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "Enter") { event.target.click(); } else if (event.key === "ArrowRight") { // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if (event.key === "ArrowLeft" ) { // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-fm--bs__deposit-payment-module .bpa-front-form-control--radio"); if(focusElement == null){ focusElement = document.querySelector(".bpa-fm--bs-amount-item .bpa-is-tip-edit-icon svg"); if(focusElement == null){ focusElement = document.querySelectorAll(".bpa-fm--bs__coupon-module-textbox .el-button"); focusElement = focusElement[focusElement.length - 1]; if(focusElement == null){ focusElement = document.querySelector(".bpa-front-summary-content__lg .bpa--summary_service_datetime_count_name"); } } } this.bpaMoveFocusToPreviousElement( this.$refs.paymentGatewayItemsGroup, focusElement ); } }, focusFirstPaymentGateway(){ this.$nextTick( () =>{ const paymentGatewayItem = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if( paymentGatewayItem !== null ){ paymentGatewayItem.focus(); } }); }, bpaMoveFocusToPreviousElement( currentElement, focusOnElement = false ){ if(focusOnElement){ focusOnElement.focus(); return; } const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex - 1].focus(); } }, bpaMoveFocusToNextElement( currentElement ){ const focusableElements = document.querySelectorAll( "a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])" ); const focusableArray = Array.from(focusableElements); const currentIndex = focusableArray.indexOf(currentElement); if (currentIndex > 0) { focusableArray[currentIndex + 1].focus(); } }, bpa_select_category( selected_cat_id, selected_cat_name, total_services, total_category){ const vm = this; let category_id = parseInt( selected_cat_id ); vm.isLoadClass = 0; if( 0 == selected_cat_id ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } else { if( vm.bookingpress_all_services_data != "" ){ for( let bpa_service_id in vm.bookingpress_all_services_data ){ let current_service = vm.bookingpress_all_services_data[ bpa_service_id ]; let current_category = current_service.bookingpress_category_id; vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = false; if( current_category == category_id ){ vm.bookingpress_all_services_data[ bpa_service_id ].is_visible = true; } if( ("undefined" != typeof current_service.is_disabled && true == current_service.is_disabled) || ( "undefined" != current_service.hide_for_staff && true == current_service.hide_for_staff ) ){ current_service.is_visible = false; } } } } setTimeout(function(){ vm.isLoadClass = 1; },1); vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; }, selectStepCategory(selected_cat_id, selected_cat_name = "", total_services = 0, total_category="", display_warn = true ){ if( true == display_warn ){ console.trace("Deprecated step category function " ); console.warn("selectStepCategory function is deprecated. Please update the BookingPress lite, premium, and add-ons to the latest version"); } const vm = this; vm.isLoadClass = 0; if( 0 == selected_cat_id ){ let temp_services = []; let m = 0; for( let x in vm.bpa_services_data_from_categories ){ let service_details = vm.bpa_services_data_from_categories[x]; for( let n in service_details ){ let current_service = service_details[n]; if( "undefined" != typeof current_service.bookingpress_staffmembers ){ let selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( current_service.bookingpress_staffmembers.includes( selected_staffmember ) && selected_staffmember != ""){ var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position); temp_services[bookingpress_service_pos] = current_service; } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } } else { var bookingpress_service_pos = parseFloat(current_service.bookingpress_service_position ); temp_services[bookingpress_service_pos] = current_service; } if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } m++; } } var bpa_temp_services= []; temp_services.sort(); for( let n in temp_services ){ if(temp_services[n] != "") { bpa_temp_services[n] = temp_services[n]; } } vm.services_data = bpa_temp_services.sort(); } else { vm.services_data = vm.bpa_services_data_from_categories[selected_cat_id]; if( vm.is_bookingpress_staff_loaded_from_url == "true" && "" != vm.appointment_step_form_data.selected_staff_member_id ){ if( 0 == selected_cat_id ){ let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ current_service.is_visible = true; } else { current_service.is_visible = false; } } else { vm.services_data.forEach( ( current_service, index) => { let staff_member_details = current_service.bookingpress_staffmembers; if( staff_member_details.includes( vm.appointment_step_form_data.selected_staff_member_id.toString() ) ){ vm.services_data[index].is_visible = true; } else { vm.services_data[index].is_visible = false; } }); } } } vm.appointment_step_form_data.selected_category = selected_cat_id; vm.appointment_step_form_data.selected_cat_name = selected_cat_name; setTimeout(function(){ vm.isLoadClass = 1; },1); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } }, async selectDate(selected_service_id, service_name, service_price, service_price_without_currency, is_move_to_next, service_duration_val = "",service_duration_unit = ""){ const vm = this; if(typeof vm.appointment_step_form_data.cart_items == "undefined" && (selected_service_id != vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_date != "")){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date; let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } if( ("undefined" != typeof vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ) && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ vm.appointment_step_form_data.selected_date = newDate; vm.appointment_step_form_data.selected_end_date = newDate; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } } this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && 1 == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ) { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; } if( "undefined" != typeof vm.appointment_step_form_data.selected_staff_member_id && "" != vm.appointment_step_form_data.selected_staff_member_id ){ let current_selected_tab = "service"; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( "service" ); let selected_tab_pos = sidebar_keys.indexOf( "staffmembers" ); if( "undefined" == typeof vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url || vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == "0" ){ if( selected_tab_pos > current_tab_pos || sidebar_step_data.staffmembers.is_display_step == 0 ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } } } let is_drawer_opened = "false"; let use_drawer_flag = false; /* vm.appointment_step_form_data.is_extra_service_exists = "0"; if( vm.bookingpress_is_extra_enable == 1){ use_drawer_flag = true; for( let i in vm.appointment_step_form_data.bookingpress_selected_extra_details ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[i].bookingpress_selected_qty = 1; } for( let n in vm.all_services_data ){ let element = vm.all_services_data[n]; if( element.bookingpress_service_id == selected_service_id && element.extra_service_counter > 0 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; vm.isServiceLoadTimeLoader = "1"; } } } */ if( vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection == "false" && vm.appointment_step_form_data.form_sequence[0] != "staff_selection" ){ for( let index in vm.bookingpress_staffmembers_details ){ let currentValue = vm.bookingpress_staffmembers_details[index]; vm.bookingpress_staffmembers_details[index].is_display_staff = false; if("undefined" != typeof currentValue.assigned_service_price_details && "undefined" != typeof currentValue.assigned_service_price_details[selected_service_id] && "public" == vm.bookingpress_staffmembers_details[index].staffmember_visibility ){ vm.bookingpress_staffmembers_details[index].is_display_staff = true; } } if( "" == vm.appointment_step_form_data.selected_staff_member_id || 0 == vm.appointment_step_form_data.selected_staff_member_id ){ let next_tabname = vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name; if( "datetime" == next_tabname && 1 == vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate ){ vm.bookingpress_sidebar_step_data[ next_tabname ].is_allow_navigate = 0; } } /* let is_staff_exists = 0; let total_staff = 0; let total_private_staff = 0; let deselect_staff = false; let staff_id = vm.appointment_step_form_data.selected_staff_member_id; let available_staffs = []; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(selected_service_id)){ if( currentValue.staffmember_visibility == "private" ){ total_private_staff++; } total_staff++; is_staff_exists = 1; available_staffs.push( currentValue.bookingpress_staffmember_id ); } }); if( available_staffs.length > 0 && staff_id > 0 && !available_staffs.includes( staff_id ) ){ vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; } if( 1 == is_staff_exists ){ if( total_staff == total_private_staff ){ await vm.bookingpress_select_staffmember("any_staff", 1); is_staff_exists = 0; vm.appointment_step_form_data.is_staff_exists = 0; vm.appointment_step_form_data.hide_staff_selection = "true"; } else { vm.isServiceLoadTimeLoader = "1"; is_drawer_opened = "true"; vm.appointment_step_form_data.is_staff_exists = 1; } } */ } if( ("false" == is_move_to_next && "false" == is_drawer_opened) ){ if( (vm.bookingpress_cart_addon == 1 && vm.appointment_step_form_data.hide_service_selection_step == "true" ) ){ is_move_to_next = "false"; } else { is_move_to_next = "true"; } } if( "true" == is_move_to_next && "d" == vm.appointment_step_form_data.selected_service_duration_unit ){ if( 0 == vm.bookingpress_sidebar_step_data.service.is_display_step && "datetime" == vm.bookingpress_current_tab ){ is_move_to_next = false; } } let current_selected_service = vm.appointment_step_form_data.selected_service; vm.bookingpress_remove_extra_service_error_msg(); if( "undefined" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && "" != vm.bookingpress_all_services_data[ selected_service_id ].service_extras && vm.bookingpress_sidebar_step_data.service.is_display_step == 1 ){ vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); const params = new URLSearchParams(window.location.search); if (params.get("book_again") == 1 && vm.is_staffmember_activated == 1) { document.body.classList.remove("--bpa-open-advance-drawer"); } vm.isServiceLoadTimeLoader = "0"; vm.appointment_step_form_data.is_extra_service_exists = "1"; is_drawer_opened = "true"; is_move_to_next = false; } else { vm.appointment_step_form_data.is_extra_service_exists = "0"; } if( selected_service_id != "" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ){ let sidebar_step_data = vm.bookingpress_sidebar_step_data; /** Check if staff member is enabled, visible and after service step */ if( vm.is_staffmember_activated == 1){ if( sidebar_step_data.staffmembers.is_first_step == 0 ){ let max_capacity = 1; let min_capacity = 1; let staffmember_details = vm.bookingpress_staffmembers_details; let staff_capacities = []; let staff_min_capacities = []; staffmember_details.forEach( (element,index) =>{ if( "undefined" == typeof element.assigned_service_price_details[ selected_service_id ] ){ return true; } let staff_services = element.assigned_service_price_details[ selected_service_id ]; let staff_capacity = staff_services.assigned_service_capacity; staff_capacities.push( parseInt(staff_capacity) ); if( vm.is_bring_anyone_with_you_activated == 1 ){ let staff_min_capacity = staff_services.assigned_service_min_capacity; staff_min_capacities.push( parseInt(staff_min_capacity) ); } }); max_capacity = Math.max.apply(null, staff_capacities); vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ min_capacity = Math.min.apply(null, staff_min_capacities); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } else { let staff_id = vm.appointment_step_form_data.selected_staff_member_id; if( "" != staff_id ){ let staff_details; vm.bookingpress_staffmembers_details.forEach( (element,index) => { if( element.bookingpress_staffmember_id == staff_id ){ staff_details = element; return false; } }); if( staff_details != "" ){ let staff_service_data = staff_details.assigned_service_price_details[ selected_service_id ]; let staff_service_capacity = staff_service_data.assigned_service_capacity; let staff_service_min_capacity = staff_service_data.assigned_service_min_capacity; vm.appointment_step_form_data.service_max_capacity = parseInt(staff_service_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(staff_service_min_capacity); if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members, selected_service_id ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } } } } else if( 1 != vm.is_staffmember_activated ){ /* vm.all_services_data.forEach( (element, index) => { if( "" == element.service_max_capacity ){ element.service_max_capacity = 1; } if( element.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.service_max_capacity = parseInt( element.service_max_capacity ); return false; } }); */ vm.appointment_step_form_data.service_max_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.max_capacity; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.appointment_step_form_data.service_min_capacity = vm.bookingpress_all_services_data[ selected_service_id ].services_meta.min_capacity; vm.appointment_step_form_data.bookingpress_selected_bring_members = vm.appointment_step_form_data.service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); vm.bookingpress_repeat_custom_form_fields( selected_service_id ); } } /** Check if service max capacity > 1 and quantity feature is enabled */ if( vm.is_bring_anyone_with_you_activated == 1 && 1 < vm.appointment_step_form_data.service_max_capacity /*&& this.is_service_loaded_from_url != "1" /* && "true" == is_move_to_next */ ){ is_move_to_next = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "1"; } } if( typeof vm.appointment_step_form_data.cart_items == "undefined" ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { if( 0 > vm.appointment_step_form_data.cart_item_edit_index ){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ) { vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); } else { /** Reputelog - need to check custom service duration with cart add-on while edit appointment from cart */ let cart_edit_index_id = vm.appointment_step_form_data.cart_item_edit_index; let cart_item = vm.appointment_step_form_data.cart_items[ cart_edit_index_id ]; let bookingpress_edit_cart_service_id = typeof cart_item.bookingpress_service_id != "undefined" ?cart_item.bookingpress_service_id:0; if(bookingpress_edit_cart_service_id != selected_service_id){ vm.all_services_data.forEach(function(currentvalue5,index5,arr5) { if(selected_service_id != "" && currentvalue5.bookingpress_service_id == selected_service_id ){ vm.appointment_step_form_data.cart_items[cart_edit_index_id].enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.enable_custom_service_duration = currentvalue5.enable_custom_service_duration; vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price = ""; } }); }else{ vm.appointment_step_form_data.enable_custom_service_duration = typeof cart_item.enable_custom_service_duration != "undefined" ? cart_item.enable_custom_service_duration : false; vm.appointment_step_form_data.custom_service_duration_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_duration_real_value = parseInt( cart_item.custom_service_duration_value ); vm.appointment_step_form_data.custom_service_real_price = parseFloat( cart_item.custom_service_real_price ); } } } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ vm.bpa_skip_loading_csd_slot = false; } vm.appointment_step_form_data.selected_service = selected_service_id; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; /* vm.appointment_step_form_data.base_price = service_price; */ vm.appointment_step_form_data.base_price_without_currency = service_price_without_currency; if( "" == service_duration_val ){ service_duration_val = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_val; } if( "" == service_duration_unit ){ service_duration_unit = vm.bookingpress_all_services_data[ selected_service_id ].bookingpress_service_duration_unit; } vm.appointment_step_form_data.selected_service_duration = service_duration_val; vm.appointment_step_form_data.selected_service_duration_unit = service_duration_unit; if(vm.previous_selected_tab_id === 1 || vm.previous_selected_tab_id === 2 || vm.current_selected_tab_id === 1){ vm.displayResponsiveCalendar = "1"; } vm.v_calendar_disable_dates = []; vm.bpa_current_selected_date = ""; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); if( "undefined" != typeof vm.is_staffmember_activated && vm.is_staffmember_activated == 1) { if( ( vm.is_staffmember_activated == 1 && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers" ) ) ){ //vm.appointment_step_form_data.bpa_datetime_after_staff_selection_flag = 1; //vm.hide_capacity_text_flag = true; //alert( "inside this 45 "); vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; vm.appointment_step_form_data.bpa_datetime_before_staffselection = 1; } vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ if( (vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.service.next_tab_name == "datetime" && vm.is_staffmember_activated == 1 && vm.appointment_step_form_data.hide_staff_selection != "true" ) || ( (vm.appointment_step_form_data.hide_service_selection_step == "true" || vm.appointment_step_form_data.hide_service_selection_step == true ) && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 )){ //vm.appointment_step_form_data.bpa_available_staff_member.push(currentValue.bookingpress_staffmember_id); const staffId = currentValue.bookingpress_staffmember_id; if (!vm.appointment_step_form_data.bpa_available_staff_member.includes(staffId)) { vm.appointment_step_form_data.bpa_available_staff_member.push(staffId); } } } }); if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; } } } vm.appointment_step_form_data.store_selected_date = ""; vm.appointment_step_form_data.store_selected_end_date = ""; vm.appointment_step_form_data.store_selected_time = ""; vm.appointment_step_form_data.store_selected_end_time = ""; vm.appointment_step_form_data.store_start_time = ""; vm.appointment_step_form_data.store_end_time = ""; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_end_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; vm.appointment_step_form_data.customer_selected_date = ""; vm.appointment_step_form_data.customer_selected_end_date = ""; vm.appointment_step_form_data.customer_selected_time = ""; vm.appointment_step_form_data.customer_selected_end_time = ""; if(is_move_to_next === "true"){ if( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 ){ if( vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name == "cart" ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } else { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); } } var selected_date = vm.appointment_step_form_data.selected_date; var formatted_date = vm.get_formatted_date(selected_date); vm.bookingpress_remove_error_msg(); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }, dayClickedResponsive( day ){ const vm = this; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "1"; vm.isLoadDateTimeCalendar = "1"; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; } else { vm.service_timing = "-1"; } } vm.dayClicked(day); }, dayClicked(day){ const vm = this; let available_dates = vm.v_calendar_available_dates; let dayId = day.id; let dayString = dayId + " 00:00:00"; if( "undefined" == typeof dayString || "undefined" == typeof available_dates || 0 > available_dates.indexOf( dayString ) || vm.bpa_current_selected_date == dayId || ("undefined" != typeof vm.v_calendar_blocked_dates && vm.v_calendar_blocked_dates.includes( day.id ) ) ){ return false; } vm.service_timing = "-2"; vm.appointment_step_form_data.selected_date = dayId; vm.bpa_current_selected_date = dayId; vm.no_timeslot_available = false; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } setTimeout(function(){ vm.service_timing = vm.bookingpress_categories_timeslots( vm.v_calendar_timeslots_data[ dayId ] ); vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; },10); }, onDayKeyPressed(event){ const vm = this; if(event.event.key == "Enter"){ vm.dayClicked(event); setTimeout(function(){ if(typeof vm.$refs.timeSlotItems !== 'undefined'){ vm.$refs.timeSlotItems[0].focus(); } },11); } let page = {month: event.month, year: event.year}; vm.bpaMoveMonth(page); }, onWholeDayKeyPressed(event, day){ const currentDate = new Date(day.id); let newDate; const vm = this; if(event.key == "Enter"){ event.preventDefault(); vm.dayClicked_v2(day); return; } let page = {month: day.month, year: day.year}; vm.bpaMoveMonth(page); switch(event.key) { case 'ArrowRight': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowLeft': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 1); vm.moveFocusToDate(newDate, day); break; case 'ArrowUp': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() - 7); vm.moveFocusToDate(newDate, day); break; case 'ArrowDown': event.preventDefault(); newDate = new Date(currentDate); newDate.setDate(currentDate.getDate() + 7); vm.moveFocusToDate(newDate, day); break; } }, moveFocusToDate(date, day) { const vm = this; // Format date to match your day.id format (YYYY-MM-DD) const dateString = date.toISOString().split('T')[0]; // Find the element for this date this.$nextTick(() => { let vc_day_content = document.querySelectorAll(".vc-day .vc-day-content"); vc_day_content.forEach((elm) => { elm.setAttribute("tabindex", "-1"); }); const dateElement = document.getElementsByClassName(`id-${dateString}`); // console.log(dateElement); if (dateElement) { if (vm.$refs.bkp_front_calendar) { vm.$refs.bkp_front_calendar.move(dateString); // vm.$refs.bkp_front_calendar.focusDate(day); } if(dateElement[0]){ setTimeout(() => { let date_span = dateElement[0].querySelector(".bpa_day-select span"); if(date_span){ date_span.setAttribute("tabindex", "0"); date_span.focus(); } }, 200); } } }); }, dayClicked_legacy(day) { const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.get_formatted_date( vm.booking_cal_maxdate ); if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_available_date < day.id || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.get_date_timings( day.id ); }, get_date_timings(current_selected_date = ""){ const vm = this; if( window.innerWidth <= 991 ){ vm.service_timing = "-1"; }else{ vm.service_timing = "-2"; } if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if( null == vm.appointment_step_form_data.selected_date ){ vm.appointment_step_form_data.selected_date = new Date("2026-01-16 14:28:54"); } if( current_selected_date == "") { current_selected_date = vm.appointment_step_form_data.selected_date; } vm.appointment_step_form_data.selected_date = current_selected_date; var selected_date = vm.appointment_step_form_data.selected_date; if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(current_selected_date); } let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( selected_date ) ){ let sel_month = selected_date.getMonth() + 1; let sel_year = selected_date.getFullYear(); let sel_date = selected_date.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } selected_date = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = selected_date; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; var selected_service_id = vm.appointment_step_form_data.selected_service; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_front_get_timings", service_id: selected_service_id, selected_date: selected_date, _wpnonce:bkp_wpnonce_pre_fetch, }; postData.bookingpress_timezone = vm.bookingpress_timezone;postData.bookingpress_selected_staffmember = vm.appointment_step_form_data.bookingpress_selected_staff_member_details;postData.service_extra_details = JSON.stringify( vm.appointment_step_form_data.bookingpress_selected_extra_details );postData.enable_custom_service_duration = vm.appointment_step_form_data.enable_custom_service_duration;postData.custom_service_duration_value = vm.appointment_step_form_data.custom_service_duration_value; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ postData.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.no_timeslot_available = false; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { var set_waiting_time_limit = 1500; if(typeof postData.enable_custom_service_duration != "undefined"){ if(postData.enable_custom_service_duration == true || postData.enable_custom_service_duration == "true"){ set_waiting_time_limit = 0; } } setTimeout(function(){ vm.service_timing = response.data; if( response.data.morning_time.length <= 0 && response.data.afternoon_time.length <= 0 && response.data.evening_time.length <= 0 && response.data.night_time.length <= 0 ){ vm.no_timeslot_available = true; } vm.isLoadTimeLoader = "0"; if( "d" != vm.appointment_step_form_data.selected_service_duration_unit && vm.current_screen_size != "desktop"){ vm.displayResponsiveCalendar = "0"; } if(response.data == ""){ vm.service_timing = null; } }, set_waiting_time_limit); vm.service_advance_see_less = "0"; if( vm.is_staffmember_activated == 1 && (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1) ){ let timeslots_details = vm.appointment_step_form_data.bpa_after_select_service_available_staff; let service_details = vm.bpasortedServices; if( "undefined" != typeof timeslots_details ){ if( "undefined" != typeof timeslots_details.available_staffs ){ if( 1 < timeslots_details.available_staffs.length ){ let available_staff_id = timeslots_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( timeslots_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = timeslots_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } } } if( /*vm.bookingpress_is_extra_enable == "1" ||*/ vm.is_bring_anyone_with_you_activated == "1" || vm.is_staffmember_activated == "1" ){ var is_extra_exists = 0; var service_max_length = parseInt(vm.appointment_step_form_data.service_max_capacity); var is_staff_exists = 0; var bpa_tmp_selected_service = vm.appointment_step_form_data.selected_service.toString(); vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ if(currentValue.assigned_service_details.includes(bpa_tmp_selected_service)){ is_staff_exists = 1; } }); if(is_staff_exists == 1){ vm.appointment_step_form_data.is_staff_exists = 1; if(vm.appointment_step_form_data.hide_staff_selection == "true" && vm.is_staff_first_step != "1" && (typeof vm.appointment_step_form_data.custom_service_duration_value == "undefined" || ( vm.appointment_step_form_data.custom_service_duration_value != "undefined" && vm.appointment_step_form_data.custom_service_duration_value == "") ) ){ /* vm.bookingpress_select_staffmember("any_staff", 1); */ } } /* if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length >= 1) || ( vm.appointment_step_form_data.hide_staff_selection != "true" && vm.is_staffmember_activated == "1" && ( vm.is_any_staff_option_enable == 1 || is_staff_exists == 1 ) ) || (vm.appointment_step_form_data.bookingpress_is_load_staff_from_share_url == 1) ){ */ if( (vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 1) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length > 1) ){ vm.bookingpress_open_extras_drawer = "false"; vm.bookingpress_open_extras_drawer = "true"; document.body.classList.add( "--bpa-open-advance-drawer" ); vm.isServiceLoadTimeLoader = "0"; } else{ if((is_staff_exists == 1 && vm.appointment_step_form_data.hide_staff_selection == "true" && vm.bookingpress_current_tab == "datetime") || (vm.appointment_step_form_data.selected_service_duration_unit == "d" && ( ( vm.bookingpress_is_extra_enable == "1" && is_extra_exists == 0) || (vm.is_bring_anyone_with_you_activated == "1" && service_max_length == 1) ))) { /* If staffmember selection step hide and staff member selection is in drawer then do not need to execute next step navigation function */ }else{ /*if(vm.bookingpress_current_tab != "datetime") { vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name) }*/ } }} if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } let selected_service = vm.appointment_step_form_data.selected_service;vm.customer_form_fields.forEach( (element,index) => { if( typeof element.field_options != "undefined" && element.field_options.visibility == "services" ){ let field_services = element.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_type == "2_col" || element.field_type == "3_col" || element.field_type == "4_col" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } else if( element.field_name == "Repeater" ){ let total_inner_fields = element.field_options.inner_fields.length; let total_hidden_fields = 0; if( total_inner_fields > 0 ){ element.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( "2_col" == ielement.field_type || "3_col" == ielement.field_type || "4_col" == ielement.field_type ){ ielement.field_options.inner_fields.forEach( (ielement,iindex) =>{ if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } }); } else { if( ielement.is_blank == "true" ){ total_hidden_fields++; } else { let field_visibility = ielement.field_options.visibility || "always"; if( "services" == field_visibility ){ let field_services = ielement.field_options.selected_services; if( field_services.indexOf( selected_service.toString() ) < 0 ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } else { vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 0; } } else if( "hidden" == field_visibility ){ vm.customer_form_fields[index].field_options.inner_fields[iindex].is_hide = 1; total_hidden_fields++; } } } }); } if( total_hidden_fields >= total_inner_fields ){ vm.customer_form_fields[index].is_hide = 1; } else { vm.customer_form_fields[index].is_hide = 0; } } });vm.appointment_step_form_data.coupon_code = "";vm.coupon_code_msg = "";vm.coupon_applied_status = "error";vm.coupon_discounted_amount = 0;vm.coupon_apply_loader = "0";vm.bpa_coupon_apply_disabled = 0; let current_service_data = vm.bookingpress_all_services_data[selected_service]; if( "undefined" != typeof current_service_data && "undefined" != typeof current_service_data.services_meta ){ let current_service_meta = current_service_data.services_meta; if( "undefined" != typeof current_service_meta.deposit_amount ){ vm.appointment_step_form_data.deposit_payment_amount = current_service_meta.deposit_amount; vm.appointment_step_form_data.deposit_payment_type = current_service_meta.deposit_type; if( "percentage" == current_service_meta.deposit_type ){ vm.appointment_step_form_data.deposit_payment_amount_percentage = current_service_meta.deposit_amount; } } } setTimeout(function(){ vm.is_display_custom_duration_loader = false; },1500); }.bind(this) ) .catch( function (error) { console.log(error); }); }, selectDisableTiming(time_details){ }, selectTiming(selected_start_time, selected_end_time, store_start_time = "", store_end_time = "", store_selected_date = "" ,formated_start_time = "",formated_end_time = "",time_details = ""){ const vm = this; vm.appointment_step_form_data.selected_start_time = selected_start_time; vm.appointment_step_form_data.selected_end_time = selected_end_time; if( "" != formated_end_time && "" != formated_start_time ) { vm.appointment_step_form_data.selected_formatted_start_time = formated_start_time; vm.appointment_step_form_data.selected_formatted_end_time = formated_end_time; } if( "" != time_details.formatted_start_end_time && "undefined" != time_details.formatted_start_end_time ) { vm.appointment_step_form_data.selected_formatted_start_end_time = time_details.formatted_start_end_time; } if("" != store_start_time && "" != store_end_time && "" != store_selected_date ){ vm.appointment_step_form_data.store_start_time = store_start_time; vm.appointment_step_form_data.store_end_time = store_end_time; vm.appointment_step_form_data.client_offset = vm.bookingpress_timezone_offset; vm.appointment_step_form_data.store_selected_date = store_selected_date; vm.appointment_step_form_data.store_selected_end_date = time_details.selected_end_date || store_selected_date; } vm.appointment_step_form_data.customer_selected_date = time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_end_date = time_details.client_end_date || time_details.client_date || vm.appointment_step_form_data.selected_date; vm.appointment_step_form_data.customer_selected_time = time_details.client_start_time || selected_start_time; vm.appointment_step_form_data.customer_selected_end_time = time_details.client_end_time || selected_end_time; vm.appointment_step_form_data.is_next_day = false; vm.appointment_step_form_data.is_both_next_day = false; if( "undefined" != typeof time_details.is_next_day && true == time_details.is_next_day ){ vm.appointment_step_form_data.is_next_day = true; vm.appointment_step_form_data.next_day_selection_date = time_details.selected_date; vm.appointment_step_form_data.selected_end_date = time_details.selected_end_date; } if( ("undefined" != typeof time_details.is_both_next_day_time && true == time_details.is_both_next_day_time) || "undefined" != typeof time_details.is_both_next_day_time_v2 && true == time_details.is_both_next_day_time_v2 ){ vm.appointment_step_form_data.customer_selected_date = time_details.client_end_date; vm.appointment_step_form_data.display_end_date_on_summary = true; vm.appointment_step_form_data.is_both_next_day = time_details.is_both_next_day_time; vm.appointment_step_form_data.is_both_next_day_v2 = time_details.is_both_next_day_time_v2; vm.appointment_step_form_data.is_server_both_next_day = ( "undefined" != typeof time_details.is_overnight_booking_server ) ? time_details.is_overnight_booking_server : false; vm.appointment_step_form_data.is_customer_both_next_day = time_details.is_both_next_day_time_v2 || false; } let bookingpress_is_anystaff_select = true; if( (vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" && vm.bookingpress_sidebar_step_data.service.is_first_step == 1) || ( (vm.appointment_step_form_data.hide_service_selection_step == true || vm.appointment_step_form_data.hide_service_selection_step == "true") && vm.bookingpress_sidebar_step_data.datetime.is_first_step == 1 && ("true" != vm.appointment_step_form_data.hide_staff_selection ) ) ){ let staffmember_details = vm.bookingpress_staffmembers_details; // change the value anystaff not bookingpress_is_anystaff_select = false; if( "undefined" != typeof time_details.available_staffs ) { staffmember_details.forEach(staff => { staff.is_display_staff = time_details.available_staffs.includes(parseInt(staff.bookingpress_staffmember_id)); }); } else { vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 0; staffmember_details.forEach(staff => { staff.is_display_staff = false; }); } vm.no_staffmember_available = staffmember_details.every(staff => !staff.is_display_staff); vm.appointment_step_form_data.bpa_datetime_after_staffselection = 1; vm.appointment_step_form_data.bpa_after_select_datetime_available_staff = time_details; } if( vm.bookingpress_sidebar_step_data["datetime"].next_tab_name == "service" && vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 ){ // change the value anystaff not bookingpress_is_anystaff_select = false; let service_details = vm.bpasortedServices; vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { vm.appointment_step_form_data.is_staff_exists = 1; } //console.log( time_details.unavailable_serivce_ids ); //[ 1 ] // if( "undefined" != typeof time_details.unavailable_serivce_ids ) { //service_details.forEach(service => { //service.is_visible = !time_details.unavailable_serivce_ids.includes( parseInt(service.bookingpress_service_id) ); //}); //} if (typeof time_details.unavailable_serivce_ids !== "undefined") { service_details.forEach(service => { if (time_details.unavailable_serivce_ids.includes( service.bookingpress_service_id ) ) { service.is_visible = false; service.exclude_id = true; } }); } else { service_details.forEach(service => { if( "undefined" != typeof service.exclude_id && service.exclude_id == true ){ service.is_visible = true; } }); } vm.no_service_available = service_details.every( services => !services.is_visible ); if( vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime == 1 ){ vm.appointment_step_form_data.bpa_after_select_service_available_staff = time_details; } if( "undefined" != typeof time_details.available_staffs ){ let available_staffdata = time_details.available_staffs; vm.bpasortedServices.forEach( item => { const hasMatch = Object.keys( item.staff_member_details ).some( key => available_staffdata.includes( Number( key ) ) ); item.is_visible = hasMatch; item.is_visible_with_flag = hasMatch; } ); } } if( "undefined" != typeof time_details.available_staffs && bookingpress_is_anystaff_select && (vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 && vm.appointment_step_form_data.bpa_datetime_after_service_selection != 1 ) ){ if( 1 < time_details.available_staffs.length ){ let available_staff_id = time_details.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } if( vm.bookingpress_staffmembers_details.every(staff => !staff.is_display_staff) ){ vm.is_any_staff_option_enable = 0; } vm.appointment_step_form_data.use_modified_duration = false; if( "undefined" != typeof time_details.use_slot_duration && true == time_details.use_slot_duration && "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && 1 == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ vm.appointment_step_form_data.use_modified_duration = true; let remaining_minutes = time_details.duration_unit_next_break; vm.slot_duration_till_break = remaining_minutes; let allSortedServices = Object.assign( [], vm.bpasortedServices ); let totalHiddenServices = 0; allSortedServices.forEach( (element, index) => { let service_duration_unit = element.bookingpress_service_duration_unit; element.is_visible_with_service_step = true; if( "d" == service_duration_unit ){ element.is_visible_with_service_step = false; totalHiddenServices++; } else { let service_duration = ( "h" == service_duration_unit ) ? parseInt( element.bookingpress_service_duration_val * 60 ) : parseInt( element.bookingpress_service_duration_val ); if( service_duration > remaining_minutes ){ element.is_visible_with_service_step = false; totalHiddenServices++; } } }); vm.bpasortedServices.forEach( (elm, index) => { if( "undefined" != typeof elm.is_hide_with_step && true == elm.is_hide_with_step ){ elm.is_visible = true; } if( "undefined" != typeof allSortedServices[index].is_visible_with_service_step && false == allSortedServices[index].is_visible_with_service_step ){ elm.is_visible = false; elm.is_hide_with_step = true; } }); console.log( vm.bpasortedServices ); console.log( totalHiddenServices ); vm.no_service_available = false; if( vm.bpasortedServices.length == totalHiddenServices ){ vm.no_service_available = true; } } vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name, vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].previous_tab_name); vm.bookingpress_update_timestep_token(); }, resetForm(){ const vm2 = this; vm2.appointment_formdata.appointment_selected_customer = "0"; vm2.appointment_formdata.appointment_selected_service = ""; vm2.appointment_formdata.appointment_booked_date = "2026-01-16"; vm2.appointment_formdata.appointment_booked_time = ""; }, select_service(selected_service_id){ const vm = this; vm.appointment_step_form_data.selected_service = selected_service_id; }, automatic_next_page(next_tab_id){ const vm = this; if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; vm.current_selected_tab_id = parseInt(next_tab_id); vm.bookingpress_remove_error_msg(); var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, next_page(customer_form = "", current_selected_element = "", next_selection_element = ""){ const vm = this; var current_selected_tab = bpa_selected_tab = parseFloat(vm.current_selected_tab_id); vm.previous_selected_tab_id = parseInt(current_selected_tab); if(current_selected_element != undefined && current_selected_element != null){ current_selected_tab = parseInt(current_selected_element); } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); if(current_selected_tab === 1 || vm.previous_selected_tab_id === 1){ vm.is_display_error = "0"; if(vm.appointment_step_form_data.selected_service == "" || vm.appointment_step_form_data.selected_service == undefined || vm.appointment_step_form_data.selected_service == "undefined"){ vm.bookingpress_set_error_msg("Selecteer een dienst om een afspraak te maken."); vm.current_selected_tab_id = 1; return false; }else{ if(vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == ""){ vm.bookingpress_set_error_msg("Selecteer een medewerker om verder te gaan"); vm.current_selected_tab_id = 1; return false; }; if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } } }else if(current_selected_tab === 2){ if(current_selected_element != undefined && current_selected_element == 2 && vm.appointment_step_form_data.selected_start_time == "" && bpa_selected_tab == "2" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } if(vm.appointment_step_form_data.selected_service != "" && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_service_duration_unit != "d") { vm.selectDate(vm.appointment_step_form_data.selected_service, vm.appointment_step_form_data.selected_service_name, vm.appointment_step_form_data.selected_service_price, vm.appointment_step_form_data.service_price_without_currency, "true",vm.appointment_step_form_data.selected_service_duration,vm.appointment_step_form_data.selected_service_duration_unit); } if(vm.is_display_error != "1"){ if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } vm.bookingpress_remove_error_msg() }else{ if(vm.is_error_msg == ""){ vm.bookingpress_set_error_msg("Er is iets fout gegaan") } } }else if(current_selected_tab === 3){ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; }else{ vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element }else{ current_selected_tab = current_selected_tab; } } }); } }else{ if(vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.is_enable_validations == 1 && vm.appointment_step_form_data.selected_service_duration_unit != "d"){ vm.bookingpress_set_error_msg("Selecteer een tijdstip om verder te gaan met boeken."); vm.current_selected_tab_id = 2; return false; } else { vm.$refs[customer_form].validate((valid) => { if (valid) { if(next_selection_element != ""){ current_selected_tab = next_selection_element; }else{ current_selected_tab = current_selected_tab; } }else{ current_selected_tab = 3; } }); } } if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_start_time == "" && vm.appointment_step_form_data.selected_date != "" ) { vm.get_date_timings(); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(current_selected_tab === 2 && vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.next_selected_tab_id = 3; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } }, previous_page(previous_selection_tab_id = ""){ const vm = this; var current_selected_tab = parseFloat(vm.current_selected_tab_id); if(previous_selection_tab_id != ""){ current_selected_tab = previous_selection_tab_id; }else{ vm.previous_selected_tab_id = parseInt(current_selected_tab); current_selected_tab = current_selected_tab - 1; } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } vm.current_selected_tab_id = parseInt(current_selected_tab); if(vm.previous_selected_tab_id == "1"){ vm.displayResponsiveCalendar = 1; } var bookingpress_scroll_pos = document.querySelector("#bookingpress_booking_form_"+vm.appointment_step_form_data.bookingpress_uniq_id); bookingpress_scroll_pos = bookingpress_scroll_pos.getBoundingClientRect(); var bookingpress_scroll_position = (bookingpress_scroll_pos.top + window.scrollY) - 300; window.scrollTo({ top: bookingpress_scroll_position, }); }, select_payment_method(payment_method){ const vm = this; vm.appointment_step_form_data.selected_payment_method = payment_method; var bookingpress_allowed_payment_gateways_for_card_fields = []; if( "undefined" == typeof vm.skip_checking_final_step_validation || true != vm.skip_checking_final_step_validation ){ vm.bookingpress_get_final_step_amount(); } ; if(bookingpress_allowed_payment_gateways_for_card_fields.includes(payment_method)){ vm.is_display_card_option = 1; }else{ vm.is_display_card_option = 0; } }, displayCalendar(){ const vm = this; if( "" == vm.appointment_step_form_data.selected_date || ( "undefined" != typeof vm.v_calendar_available_dates && 1 > vm.v_calendar_available_dates.length ) ){ return false; } vm.displayResponsiveCalendar = "1"; }, Change_front_appointment_description(service_id) { const vm = this; vm.services_data.forEach(function(item, index, arr){ if(item.bookingpress_service_id == service_id ){ if(item.display_details_more == 0 && item.display_details_less == 1) { item.display_details_less = 0; item.display_details_more = 1; } else { item.display_details_more = 0; item.display_details_less = 1; } } }); }, bookingpress_phone_country_change_func(bookingpress_country_obj){ const vm = this; var bookingpress_selected_country = bookingpress_country_obj.iso2; vm.appointment_step_form_data.customer_phone_country = bookingpress_selected_country; vm.appointment_step_form_data.customer_phone_dial_code = bookingpress_country_obj.dialCode; let exampleNumber = window.intlTelInputUtils.getExampleNumber( bookingpress_selected_country, true, 1 ); if( typeof vm.bookingpress_phone_default_placeholder == "undefined" && "" != exampleNumber ){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } else if(vm.bookingpress_phone_default_placeholder == "false" && "" != exampleNumber){ vm.bookingpress_tel_input_props.inputOptions.placeholder = exampleNumber; } }, bookingpress_phone_country_open( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".el-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); } } } }, bookingpress_phone_country_close( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.customer_phone; console.log("called ... " + phoneValue); if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { console.log("inside this..... one") this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_get_parents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, async bookingpress_disable_date( bpa_selected_service = "", bpa_selected_date = "" ){ let bpa_is_called = false; var bookingpress_is_allow_modify = ""; var bookingpress_staff_loaded_from_url = "0"; this.isLoadTimeLoader = "1"; this.isLoadDateTimeCalendarLoad = "1"; let staff_id = this.appointment_step_form_data.selected_staff_member_id; if( 0 == staff_id ){ staff_id = ""; } this.service_timing = "-3"; if( 0 === this.bookingpress_sidebar_step_data["staffmembers"].is_display_step && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 == this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1); } bpa_is_called = true; } let form_sequence_first; if( "object" == typeof this.appointment_step_form_data.form_sequence ){ form_sequence_first = this.appointment_step_form_data.form_sequence[0]; } else { form_sequence_first = this.appointment_step_form_data.form_sequence; } if( false == bpa_is_called && 1 == this.hide_category_service && "service_selection" == form_sequence_first && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && 1 != this.hide_category_service && "true" == this.appointment_step_form_data.hide_staff_selection && false == this.is_staff_member_set_from_url && "" == staff_id ){ if(bookingpress_is_allow_modify == "0" && bookingpress_staff_loaded_from_url != 0){ this.bookingpress_select_staffmember(bookingpress_staff_loaded_from_url, 0); }else{ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); } bpa_is_called = true; } if( false == bpa_is_called && "" == staff_id && "true" == this.appointment_step_form_data.select_any_staffmember ){ const d = await this.bookingpress_select_staffmember("any_staff", 1 ); bpa_is_called = true; } /** for the datetime re-arrange step */ if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_sidebar_step_data["service"].is_first_step == 1 && this.bookingpress_sidebar_step_data["datetime"].next_tab_name == "staffmembers" ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; } if( "datetime" != this.bookingpress_next_tab && "datetime" == this.bookingpress_current_tab && this.bookingpress_current_tab != this.bookingpress_next_tab && ( "undefined" != typeof this.appointment_step_form_data.any_staff_selected && 1 == this.appointment_step_form_data.any_staff_selected ) ){ this.appointment_step_form_data.selected_staff_member_id = ""; this.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; this.bookingpress_select_staffmember( "any_staff", 1 ); } let selected_sid = this.appointment_step_form_data.selected_service; if(selected_sid != "" && "undefined" != typeof this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && "" != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date && null != this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date ) { this.booking_cal_maxdate = this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date; const currentDate = new Date(); const targetDate = new Date(this.bookingpress_all_services_data[ selected_sid ].bookingpress_service_expiration_date); let diff_in_time = targetDate.getTime() - currentDate.getTime(); let diff_in_days = ( Math.round( diff_in_time / ( 1000 * 3600 * 24 ) ) ) + 1; const bookingpress_period_available_for_booking = 180; if(bookingpress_period_available_for_booking < diff_in_days){ /*If max period avilable is less than service expiry date then set limit for the Max period avilable days*/ this.booking_cal_maxdate = new Date( Date.now() + ( 3600 * 1000 * ( 24 * 180 ) ) ); } } let use_legacy = "false"; if( "true" == use_legacy ){ this.bookingpress_disable_date_xhr( bpa_selected_service, bpa_selected_date ); } else { this.bookingpress_disable_date_xhr_v2( bpa_selected_service, bpa_selected_date ); } }, bookingpress_update_timestep_token( force_update = false, cart_force_update = false ){ const vm = this; let use_legacy = "false"; let current_tab = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name; if( ( "undefined" == typeof vm.bookingpress_cart_addon && ( ( true == force_update && typeof vm.v_calendar_time_token_data != "undefined" ) || ( "datetime" == vm.bookingpress_sidebar_step_data[ vm.bookingpress_current_tab ].previous_tab_name && "d" != vm.appointment_step_form_data.selected_service_duration_unit && "datetime" != vm.bookingpress_current_tab && "false" == use_legacy ) ) ) ||( "undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1 && ( ( ( "undefined" != vm.is_staffmember_activated && 1 == vm.is_staffmember_activated && vm.appointment_step_form_data.selected_staff_member_id != 0 ) && ( "undefined" != typeof vm.appointment_step_form_data.selected_service && vm.appointment_step_form_data.selected_service != 0 ) ) && ( "undefined" != typeof vm.appointment_step_form_data.location_activated && 1 == vm.appointment_step_form_data.location_activated && vm.appointment_step_form_data.selected_location != "" ) || cart_force_update != false ) ) ){ let appointment_selected_date = vm.appointment_step_form_data.store_selected_date || vm.appointment_step_form_data.selected_date; if( "undefined" != typeof vm.appointment_step_form_data.is_next_day && true == vm.appointment_step_form_data.is_next_day && "undefined" != typeof vm.appointment_step_form_data.next_day_selection_date ){ appointment_selected_date = vm.appointment_step_form_data.next_day_selection_date; } let selected_token_data = vm.v_calendar_time_token_data[ appointment_selected_date ][0]; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; }else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_set_timeslot_token", tokenData: selected_token_data, selectedDate: appointment_selected_date, _wpnonce:bkp_wpnonce_pre_fetch }; vm.is_bookingpress_updating_token = true; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.is_bookingpress_updating_token = false; vm.is_bookingpress_token_updated = true; }.bind(this) ) .catch( function (error) { }); } }, bookingpress_working_dates_data( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let is_client_timezone = ""; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; let overnight_booking = ("undefined" != typeof response_data.overnight_booking_dates ) ? response_data.overnight_booking_dates : []; let sorted_working_hours = []; for( let wdate in working_hour_details ){ let x = 0; let n = 0; let is_overnight_booking = overnight_booking.includes( wdate ) || false; let is_overnight_booking_server = is_overnight_booking; let overnight_booking_date = ""; sorted_working_hours[wdate] = working_hour_details[ wdate ]; sorted_working_hours[wdate].sort( (a,b) => { return ( parseInt( a.counter_pos ) < parseInt( b.counter_pos ) ) ? -1 : 1; } ); for( let wh_data of sorted_working_hours[wdate] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.selected_end_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; if( false == is_overnight_booking ){ is_overnight_booking = wp.hooks.applyFilters( "bookingpress_consider_overnight_booking", is_overnight_booking, wh_data ); } let stTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", start_datetime, wh_data, "start", true ); let etTimeNew = wp.hooks.applyFilters( "bookingpress_modify_datetime_with_timezone", end_datetime, wh_data, "end", true ); let updated_wdate; if( "string" == typeof stTimeNew ){ updated_wdate = wdate; } else { updated_wdate = stTimeNew.toISOString().split("T")[0]; } let updated_edate; if( "string" == typeof etTimeNew ){ updated_edate = wh_data.selected_end_date; } else { updated_edate = etTimeNew.toISOString().split("T")[0]; } if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; if( false == is_overnight_booking && !available_dates.includes( updated_wdate + " 00:00:00" ) ){ available_dates.push( updated_wdate + " 00:00:00" ); } n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = ( "undefined" != typeof response_data.pre_selected_date && true == response_data.pre_selected_date && "undefined" != typeof vm.open_customer_reschedule_appointment_modal && true == vm.open_customer_reschedule_appointment_modal ) ? response_data.selected_date : updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; if( true == is_overnight_booking && "" == overnight_booking_date ){ overnight_booking_date = updated_wdate; if( "undefined" == typeof updated_working_hour_details[ overnight_booking_date ] ){ updated_working_hour_details[ overnight_booking_date ] = []; } } wh_data.is_both_next_day_time_v2 = false; if( true == is_overnight_booking ){ if( "true" == is_client_timezone ){ wh_data.is_next_day = false; } if( updated_edate > updated_wdate ){ wh_data.is_next_day = true; } if( updated_edate == updated_wdate && updated_wdate > overnight_booking_date ){ wh_data.is_both_next_day_time_v2 = true; wh_data.is_overnight_booking_server = is_overnight_booking_server; wh_data.is_next_day = true; wh_data.client_date = wh_data.client_end_date; } } if( true == wh_data.is_both_next_day_time && wh_data.client_end_date > wh_data.client_date ){ wh_data.client_date = wh_data.client_end_date; } let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + " naar " + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; wh_data.slot_timestamp = new Date( `${wh_data.client_date} ${wh_data.client_start_time}` ).getTime(); if( true == is_overnight_booking ){ if( "undefined" != typeof updated_working_hour_details[ overnight_booking_date ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ overnight_booking_date ] ).length; } updated_working_hour_details[ overnight_booking_date ][x] = wh_data; if( !available_dates.includes( overnight_booking_date + " 00:00:00" ) ){ available_dates.push( overnight_booking_date + " 00:00:00" ); } } else { if( "undefined" != typeof updated_working_hour_details[ updated_wdate ][x] && x == 0){ x = Object.keys( updated_working_hour_details[ updated_wdate ] ).length; } updated_working_hour_details[ updated_wdate ][x] = wh_data; } x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_working_dates_data_legacy( working_hour_details, response_data ){ const vm = this; let timeformat = "5"; let updated_working_hour_details = {}; let available_dates = []; let response = {}; let firstAvailableDate = ""; for( let wdate in working_hour_details ){ let x = 0; let n = 0; for( let wh_data of working_hour_details[ wdate ] ){ let start_datetime = wh_data.store_service_date + " " + wh_data.store_start_time; let end_datetime = wh_data.store_service_date + " " + wh_data.store_end_time; let timezone = wh_data.store_offset; let stTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_start_time, wh_data, "start" ); wh_data.client_start_time = stTime; let etTime = wp.hooks.applyFilters( "bookingpress_modify_time_with_timezone", wh_data.store_end_time, wh_data, "end" ); wh_data.client_end_time = etTime; let updated_wdate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wdate, wh_data ); let updated_edate = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", wh_data.selected_end_date, wh_data ); if( "undefined" != typeof wh_data.is_day_service && true == wh_data.is_day_service ){ if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] && updated_wdate >= vm.jsCurrentDate.toISOString().split("T")[0] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } else { continue; } } else { if( "undefined" == typeof updated_working_hour_details[ updated_wdate ] ){ updated_working_hour_details[ updated_wdate ] = []; available_dates.push( updated_wdate + " 00:00:00" ); n++; } } if( "" == firstAvailableDate ){ firstAvailableDate = updated_wdate; } wh_data.client_date = updated_wdate; wh_data.client_end_date = updated_edate; let startTimeHour = stTime.split(":")[0]; let formatted_startTime = vm.bookingpress_format_time( stTime ); let formatted_endTime = vm.bookingpress_format_time( etTime ); let formatted_datetime = formatted_startTime + " - " + formatted_endTime; if( "1" == timeformat || "2" == timeformat ){ formatted_datetime = formatted_startTime + "naar" + formatted_endTime; } else if ( "5" == timeformat || "6" == timeformat ){ formatted_datetime = formatted_startTime + " - " + formatted_endTime; } else if( "3" == timeformat || "4" == timeformat ){ formatted_datetime = formatted_startTime; } wh_data.formatted_start_time = formatted_startTime; wh_data.formatted_end_time = formatted_endTime; wh_data.formatted_start_end_time = formatted_datetime; wh_data.start_hour = startTimeHour; updated_working_hour_details[ updated_wdate ][x] = wh_data; x++; } } available_dates = wp.hooks.applyFilters( "bookingpress_modify_available_dates_with_day_service", available_dates, working_hour_details, response_data, vm ); firstAvailableDate = wp.hooks.applyFilters( "bookingpress_modify_first_available_date_with_day_service", firstAvailableDate, available_dates, vm ); response.available_dates = available_dates; response.updated_working_hour_details = updated_working_hour_details; response.selected_date = firstAvailableDate; return response; }, bookingpress_disable_date_xhr_v2( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; }; let preselect_date = false; if( "" != bpa_selected_date ){ preselect_date = true; } if( "" == bpa_selected_date ){ vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } let startTime = new Date().getTime(); var postData = { action: "bookingpress_fetch_timeslot_data", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, is_preselect: preselect_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { let request_time = new Date().getTime() - startTime; /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; let working_hour_details = response.data.working_details; let selectedDate = response.data.selected_date; let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); let preselected_date = ""; if( "undefined" != typeof response.data.pre_selected_date && true == response.data.pre_selected_date ){ preselected_date = response.data.selected_date; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } vm.appointment_step_form_data.selected_date = ""; selectedDate = ( "" != preselected_date ) ? preselected_date : ( wh_details.selected_date || selectedDate ); vm.v_calendar_available_dates = wh_details.available_dates; vm.v_calendar_timeslots_data = wh_details.updated_working_hour_details; vm.no_timeslot_available = false; let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); if( !v_available_dates_only.includes( selectedDate ) && wh_details.selected_date != selectedDate && wh_details.selected_date != "" ){ selectedDate = wh_details.selected_date; } vm.v_calendar_available_only_date = v_available_dates_only; if( "undefined" != typeof selectedDate && "" != selectedDate ){ (function( $ref_ ){ setTimeout(function(){ vm.appointment_step_form_data.selected_date = selectedDate; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof $ref_.bkp_front_calendar ){ const calendar = $ref_.bkp_front_calendar; try{ calendar.move( selectedDate ); } catch( e ){ console.log( e ); } } if( "undefined" != typeof $ref_.bkp_front_calendar_responsive ){ const calendar_r = $ref_.bkp_front_calendar_responsive; try{ calendar_r.move( selectedDate ); } catch( e ){ console.log( e ); } } },10); })( this.$refs ); } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } /* V-date-picker attributes */ vm.v_calendar_default_label = response.data.max_capacity_capacity; vm.v_calendar_time_token_data = response.data.working_hour_timing_token; if( "undefined" != typeof wh_details.updated_working_hour_details[ selectedDate ] ){ vm.service_timing = vm.bookingpress_categories_timeslots( wh_details.updated_working_hour_details[ selectedDate ] ); } else { vm.service_timing = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; vm.no_timeslot_available = true; } if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } vm.isLoadTimeLoader = "0"; vm.isLoadDateTimeCalendarLoad = "0"; if( "undefined" == typeof response.data.stop_check || false == response.data.stop_check ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, 1 ); } setTimeout(function(){ if( "undefined" != typeof vm.is_bookingpress_token_updated && true == vm.is_bookingpress_token_updated ){ // condition update if( ("undefined" != typeof vm.bookingpress_cart_addon && vm.bookingpress_cart_addon == 1) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && ( vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "staffmembers") || (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && vm.appointment_step_form_data.bpa_datetime_after_service_selection == 1))) && ( "undefined" != typeof vm.is_staffmember_activated || 1 != vm.is_staffmember_activated && "undefined" != typeof vm.appointment_step_form_data.location_activated || 1 != vm.appointment_step_form_data.location_activated && vm.bookingpress_sidebar_step_data.service.is_first_step == 1 && vm.bookingpress_sidebar_step_data.datetime.next_tab_name == "location" ) ){ vm.bookingpress_update_timestep_token( true, true ); } else { vm.bookingpress_update_timestep_token( true ); } } },10); setTimeout(() => { vm.focusFirstDate(); if( "undefined" != typeof working_hour_details && working_hour_details.length == 0){ let focusCancelBtn = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer button"); if(focusCancelBtn !== null){ focusCancelBtn.focus(); } } const unavailable_date_calendar_input = document.querySelector(".el-form-item .bpa-unavailable-popup-datepicker .el-input__inner"); if(unavailable_date_calendar_input !== null){ unavailable_date_calendar_input.focus(); } }, 500); if( "undefined" != typeof selectedDate ){ let selected_date = selectedDate.split(" ")[0]; let timeslot_data = vm.v_calendar_timeslots_data[ selected_date ]; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details( next_month_date = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); if( 4 == counter ){ vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; return false; } else { vm.isHoldBookingRequest = true; } let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } let vcal_capacity_attrs = response.data.vcal_capacity_attrs; if( "undefined" != typeof vcal_capacity_attrs && vcal_capacity_attrs.length != "" ){ for( let vcal_date_v2 in vcal_capacity_attrs ){ let vcal_data_v2 = vcal_capacity_attrs[ vcal_date_v2 ]; vcal_date_v2 = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date_v2, {"store_service_date":vcal_date_v2,"store_start_time":"00:00:00","store_offset":"+01:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; ++counter; counter = wp.hooks.applyFilters( "bookingpress_modify_next_month_check_counter", counter, response.data ); if( "undefined" == typeof response.data.stop_check || response.data.stop_check == false ){ vm.bookingpress_retrieve_future_month_details( response.data.next_month_date, counter ); } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_future_month_details_single( next_month_date = "", next_month_dates = "", counter = 1 ){ const vm = this; let startDate = next_month_date != "" ? next_month_date : vm.v_calendar_available_dates.at(-1); vm.v_calendar_check_month_dates = true; vm.v_calendar_next_month_dates = next_month_date; vm.isHoldBookingRequest = false; let postData = { action: "bookingpress_retrieve_entire_month_details", from_date: startDate, counter: counter }; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } postData._wpnonce = bkp_wpnonce_pre_fetch; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); if( ("true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader) || ( "undefined" != typeof vm.bpa_choose_from_csd && true == vm.bpa_choose_from_csd ) ){ postData.bpa_choose_from_csd = true; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof postData.bpa_choose_from_csd ){ vm.bpa_choose_from_csd = true; } let working_hour_details = response.data.working_details let wh_details = vm.bookingpress_working_dates_data( working_hour_details, response.data ); vm.v_calendar_available_dates = vm.v_calendar_available_dates.concat( wh_details.available_dates ); vm.v_calendar_time_token_data = Object.assign( {},vm.v_calendar_time_token_data, response.data.working_hour_timing_token ); let v_available_dates_only = []; vm.v_calendar_available_dates.forEach( function( i,e ){ v_available_dates_only.push( i.split(" ")[0] ); }); let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_date = wp.hooks.applyFilters( "bookingpress_modify_date_with_timezone", vcal_date, {"store_service_date":vcal_date,"store_start_time":"00:00:00","store_offset":"+01:00"} ); vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_available_only_date = v_available_dates_only; vm.v_calendar_timeslots_data = Object.assign({},vm.v_calendar_timeslots_data, wh_details.updated_working_hour_details ); vm.isLoadDateTimeCalendarLoad = 0; vm.bookingpress_retrieve_future_month_details( next_month_dates, counter ); }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_format_time(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("nl_NL").format(default_time_format) }, bookingpress_categories_timeslots( timeslot_details ){ let afternoon_slot_timings = parseInt( "12" ); let evening_slot_timings = parseInt( "18" ); let night_slot_timings = parseInt( "" ); if( "undefined" == typeof timeslot_details ){ return {}; } let service_timings_data = { "morning_time":[], "afternoon_time":[], "evening_time":[], "night_time":[] }; let x = 0; for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && ( "undefined" == typeof timeslot_data.is_next_day || timeslot_data.is_next_day == false) ){ let startHour = parseInt( timeslot_data.start_hour ); if( startHour >= 0 && startHour < afternoon_slot_timings ){ service_timings_data.morning_time.push( timeslot_data ); } else if( startHour >= afternoon_slot_timings && ( "" == evening_slot_timings || startHour < evening_slot_timings ) ){ service_timings_data.afternoon_time.push( timeslot_data ); } else if ( startHour >= evening_slot_timings && ( "" == night_slot_timings || startHour < night_slot_timings ) ){ service_timings_data.evening_time.push( timeslot_data ); } else { service_timings_data.night_time.push( timeslot_data ); } x++; } } if( timeslot_details.length > x ){ for( let timeslot_data of timeslot_details ){ if( "undefined" != typeof timeslot_data && "undefined" != typeof timeslot_data.is_next_day && timeslot_data.is_next_day == true ){ let startHour = parseInt( timeslot_data.start_hour ); service_timings_data.night_time.push( timeslot_data ); } } } let sorted_timings_data = {}; for( let timing_item in service_timings_data ){ let timing_details = Object.assign( [], service_timings_data[ timing_item ] ); timing_details.sort( ( a, b ) => { return ( parseInt( a.slot_timestamp ) < parseInt( b.slot_timestamp ) ) ? -1 : 1; }); sorted_timings_data[ timing_item ] = timing_details; } return sorted_timings_data; }, bookingpress_disable_date_xhr( bpa_selected_service = "", bpa_selected_date = "", showLoader = true ){ const vm = this; if( true == showLoader ){ vm.isLoadTimeLoader = "1"; vm.isLoadDateTimeCalendarLoad = "1"; } vm.service_timing = "-3"; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if( "" == bpa_selected_service && "" != vm.appointment_step_form_data.selected_service ){ bpa_selected_service = vm.appointment_step_form_data.selected_service; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ vm.appointment_step_form_data.client_dst_timezone = vm.bookingpress_dst_timezone; } if( typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ){ vm.appointment_step_form_data.bookingpress_form_token = vm.appointment_step_form_data.bookingpress_uniq_id + "_" + ( Math.random().toString(36).slice(2) ); } var postData = { action: "bookingpress_get_disable_date", service_id: bpa_selected_service, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch }; postData.disabled_dates = JSON.stringify( vm.v_calendar_disable_dates ); postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } vm.no_timeslot_available = false; vm.v_calendar_check_month_dates = false; vm.v_calendar_next_month_dates = {}; vm.days_off_disabled_dates = ""; if(typeof vm.is_display_custom_duration_loader !== "undefined" && typeof vm.is_display_custom_duration_day_loader !== "undefined"){ if(vm.appointment_step_form_data.selected_service_duration_unit == "d" && (vm.is_display_custom_duration_loader == true || vm.is_display_custom_duration_day_loader == true)){ vm.isLoadDateTimeCalendarLoad = "0"; postData.bpa_choose_from_csd = "true"; } } if( "true" == vm.is_display_custom_duration_loader || true == vm.is_display_custom_duration_loader ){ postData.bpa_choose_from_csd = true; } if( "undefined" != typeof vm.bpa_skip_loading_csd_slot && true == vm.bpa_skip_loading_csd_slot ){ postData.bpa_choose_from_csd = true; postData.is_preselect = true; postData.selected_date = vm.appointment_step_form_data.selected_date; } if( "undefined" != typeof vm.appointment_step_form_data.custom_service_duration_value && "" != vm.appointment_step_form_data.custom_service_duration_value ){ postData.bpa_choose_from_csd = true; } ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm.service_timing = []; if(response.data.variant == "success" && (response.data.selected_date != undefined && response.data.days_off_disabled_dates != undefined)){ /* Changes to add disable dates class start */ if( "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } /* Changes to add disable dates class end */ if(typeof response.data.bookingpress_custom_service_durations_slot !== "undefined"){ vm.bookingpress_custom_service_durations_slot = response.data.bookingpress_custom_service_durations_slot; if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 1; document.querySelector(".bpa-front--dt__col").style.order = 2; } } else { if (null != document.querySelector(".bpa-front-dt__timeslot-col")) { document.querySelector(".bpa-front-dt__timeslot-col").style.order = 2; document.querySelector(".bpa-front--dt__col").style.order = 1; } } vm.is_display_custom_duration_loader = false; vm.is_display_custom_duration_day_loader = false; vm.days_off_disabled_dates = ""; /*V-Calendar disabled dates change start*/ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); vm.v_calendar_disable_dates = []; for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } /*V-Calendar disabled dates change end*/ let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } let resp_selected_date = response.data.selected_date; if( vm.current_screen_size != "desktop" && vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.displayResponsiveCalendar = 0; } /* V-date-picker attributes */ let vcal_attributes = response.data.vcal_attributes; if( "undefined" != typeof vcal_attributes && vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } vm.v_calendar_attributes = vcal_attr_data; vm.v_calendar_attributes_current = Object.assign( {}, vm.v_calendar_attributes_current, vcal_attr_data_current ); } vm.v_calendar_default_label = response.data.max_capacity_capacity; /* V-date-picker attributes */ vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.appointment_step_form_data.selected_date = response.data.selected_date; vm.bookingpress_select_multi_day_range(); if( "undefined" != typeof response.data.front_timings ){ vm.service_timing = response.data.front_timings; if( response.data.front_timings.length <= 0 ){ vm.no_timeslot_available = true; } } if( "undefined" != typeof this.$refs.bkp_front_calendar ){ const calendar = this.$refs.bkp_front_calendar; calendar.move(vm.appointment_step_form_data.selected_date); } vm.isLoadTimeLoader = "0"; if( "undefined" != typeof response.data.empty_front_timings && true == response.data.empty_front_timings ){ vm.isLoadDateTimeCalendarLoad = "1"; vm.appointment_step_form_data.selected_date = response.data.next_available_date; vm.bookingpress_disable_date( bpa_selected_service, response.data.next_available_date ); return; } else { /* Check full day appointments block */ if( false == response.data.prevent_next_month_check ){ let postDataAction = "bookingpress_get_whole_day_appointments"; if( true == response.data.check_for_multiple_days_event ){ postDataAction = "bookingpress_get_whole_day_appointments_multiple_days"; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: postDataAction,days_off_disabled_dates: vm.days_off_disabled_dates, service_id: bpa_selected_service, max_available_year: response.data.max_available_year, max_available_month:response.data.max_available_month, selected_service:bpa_selected_service, selected_date:bpa_selected_date, service_id:bpa_selected_service,_wpnonce:bkp_wpnonce_pre_fetch, "next_month": response.data.next_month, "next_year": response.data.next_year, "counter": 1 }; postData.bpa_change_store_date = false; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ postData.client_timezone_offset = vm.bookingpress_timezone_offset; postData.bpa_change_store_date = true; } postData.appointment_data_obj = JSON.stringify( vm.appointment_step_form_data ); postData.staffmember_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( vm.bookingpress_is_extra_enable == 1 ){ postData.service_extra_details = vm.appointment_step_form_data.bookingpress_selected_extra_details; }; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } setTimeout(function(){ vm.isLoadDateTimeCalendarLoad = "0" },200); } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, bookingpress_retrieve_daysoff_for_booked_appointment( postData ){ const vm = this; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ).then( function( response ) { vm.days_off_disabled_dates = response.data.days_off_disabled_dates; vm.isLoadDateTimeCalendarLoad = 0; if(false == response.data.prevent_next_month_check && response.data.counter <= 3 ){ /** Currently data will be checked for next 3 months */ postData.days_off_disabled_dates = vm.days_off_disabled_dates; postData.next_month = response.data.next_month; postData.next_year = response.data.next_year; postData.counter++; if( postData.counter < 4 ){ vm.isHoldBookingRequest = true; vm.bookingpress_retrieve_daysoff_for_booked_appointment( postData ); } else { vm.v_calendar_check_month_dates = true; let next_month_year = { "month": parseInt( response.data.next_month ), "year": response.data.next_year, "postData": postData }; vm.v_calendar_next_month_dates = next_month_year; vm.isHoldBookingRequest = false; } /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } let use_legacy = "false"; let pro_version = "false"; if( "true" == use_legacy && "false" == pro_version ){ let min_date = vm.jsCurrentDate; let max_date = vm.booking_cal_maxdate; let loop = new Date( min_date ); let available_dates = []; while( loop <= max_date ){ let dt = loop.toISOString().split("T")[0] + " 00:00:00"; if( dt.indexOf( vm.v_calendar_disable_dates ) == -1 ){ available_dates.push( dt ); } loop.setDate( loop.getDate() + 1 ); } vm.v_calendar_available_dates = available_dates; } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } else { /* V-Calendar disabled dates change start */ if( "" != response.data.days_off_disabled_dates_string ){ let bpa_disable_date = response.data.days_off_disabled_dates_string.split(","); for( let temp_date in bpa_disable_date ){ let disabled_date = bpa_disable_date[temp_date]; if( "string" != typeof disabled_date ){ continue; } if( "undefined" != typeof vm.browser_details && "safari" == vm.browser_details && 16 > vm.browser_version ){ let disable_date_data = disabled_date.split(" "); vm.v_calendar_disable_dates.push( disable_date_data[0] ); } else { vm.v_calendar_disable_dates.push( disabled_date ); } } } /* V-Calendar disabled dates change end */ if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.booking_before_block_dates ){ var booking_before_block_dates = response.data.booking_before_block_dates.split(","); if( booking_before_block_dates.length != "" && booking_before_block_dates.length != 0){ for( let d in booking_before_block_dates ){ let booking_before_block_date = booking_before_block_dates[d]; vm.bookingpress_booking_before_block_date.push( booking_before_block_date ); } } } if( postData.action == "bookingpress_get_whole_day_appointments_multiple_days" && "undefined" != typeof response.data.vcal_attributes ){ let vcal_attributes = response.data.vcal_attributes; vm.bookingpress_select_multi_day_range(); if( vcal_attributes.length != "" ){ let vcal_attr_data = []; let vcal_attr_data_current = {}; let k = 1; for( let vcal_date in vcal_attributes ){ let vcal_data = vcal_attributes[ vcal_date ]; vcal_attr_data_current[ vcal_date ] = vcal_data; let vcal_attr_obj = { key: k, dates: vcal_date, customData:{ title: vcal_data } }; vcal_attr_data.push( vcal_attr_obj ); k++; } if( vm.v_calendar_attributes.length > 0 ){ vm.v_calendar_attributes = vm.v_calendar_attributes.concat( vcal_attr_data ); } else { vm.v_calendar_attributes = vcal_attr_data; } if( "" != vm.v_calendar_attributes_current ){ let joined_cal_attr_current = { ...vm.v_calendar_attributes_current, ...vcal_attr_data_current }; vm.v_calendar_attributes_current = joined_cal_attr_current; } else { vm.v_calendar_attributes_current = vcal_attr_data_current; } } } } }); }, bpaMoveMonthResponsive( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); counter = 0 - monthDiff; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, counter ); } setTimeout(() => { vm.focusFirstDate(); }, 500); } } }, bpaMoveMonth( page ){ const vm = this; if( "undefined" != typeof vm.v_calendar_check_month_dates && true == vm.v_calendar_check_month_dates && "undefined" != typeof vm.v_calendar_next_month_dates && false == vm.isHoldBookingRequest ){ let current_month = page.month; let current_year = page.year; let next_page_month = parseInt( vm.v_calendar_next_month_dates.split("-")[1] ) || null; let next_page_year = parseInt( vm.v_calendar_next_month_dates.split("-")[0] ) || null; if( null != next_page_month && null != next_page_year ){ if( current_year == next_page_year && current_month == next_page_month ){ vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details( vm.v_calendar_next_month_dates, 1 ); } else if( (current_year == next_page_year && current_month > next_page_month) || current_year > next_page_year ){ let current_date = new Date( `${current_year}-${current_month}-1` ); let next_page_date = new Date( `${next_page_year}-${next_page_month}-1` ); const monthDiff = current_date.getMonth() - next_page_date.getMonth(); let month_ = ( current_month.toString().length == 1 ) ? ( "0" + current_month.toString() ) : current_month; let nextMonthDate = current_year + "-" + month_ + "-01"; counter = 0 - monthDiff; vm.isLoadDateTimeCalendarLoad = 1; vm.bookingpress_retrieve_future_month_details_single( nextMonthDate, vm.v_calendar_next_month_dates, counter ); } } } }, bookingpress_get_all_parent_node_with_overflow_hidden( elem ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { let computed_style = getComputedStyle( elem ); if( computed_style.overflow == "hidden" || computed_style.overflowX == "hidden" || computed_style.overflowY == "hidden" ){ parents.push(elem); } } return parents; }, bookingpress_onload_func(){ const vm = this; vm.current_screen_size = "desktop"; if(window.outerWidth >= 1200){ vm.current_screen_size = "desktop"; }else if(window.outerWidth < 1200 && window.outerWidth >= 768){ vm.current_screen_size = "tablet"; }else if(window.outerWidth < 768){ vm.current_screen_size = "mobile"; } let is_mobile_device = ""; if( "mobile" != vm.current_screen_size && ("true" == is_mobile_device || true == is_mobile_device) ){ vm.current_screen_size = "mobile"; } if(window.innerWidth <= 576){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let parents_with_hidden_overflow = vm.bookingpress_get_all_parent_node_with_overflow_hidden( bookingpress_container ); let apply_overflow = ( parents_with_hidden_overflow.length > 0 ) ? true : false; window.addEventListener("scroll", function(e){ let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky" ; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky"; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.add("--bpa-is-overflow-visible"); } } } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ if( apply_overflow ){ for( let i = 0; i < parents_with_hidden_overflow.length; i++ ){ let parent = parents_with_hidden_overflow[i]; parent.classList.remove("--bpa-is-overflow-visible"); } } } }); } window.addEventListener("resize", function(e){ if( window.innerWidth <= 576 ){ vm.bookingpress_container_dynamic_class = ""; let bookingpress_container = vm.$el; let bookingpress_scrollTop = bookingpress_container.getBoundingClientRect().top; let bookingpress_scrollBottom = bookingpress_container.getBoundingClientRect().bottom; let bpa_current_scroll = window.scrollY; bookingpress_scrollBottom = bpa_current_scroll + bookingpress_scrollBottom + bookingpress_scrollTop; let targetBottom = bookingpress_container.getBoundingClientRect().bottom; let viewportHeight = window.innerHeight || document.documentElement.clientHeight; if( bookingpress_scrollTop < 50 && bpa_current_scroll >= bookingpress_scrollTop && targetBottom >= viewportHeight ){ vm.bookingpress_container_dynamic_class = "bpa-front__mc--is-sticky"; vm.bookingpress_footer_dynamic_class = "__bpa-is-sticky" /* Change this string */ } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; /* Change this string */ } } }); }, bookingpress_step_navigation(current_tab, next_tab, previous_tab, is_strict_validate = 1){ const vm = this; var bookingpress_is_validate = 0; vm.bookingpress_remove_error_msg(); var bookingpress_validate_fields_arr = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validate_fields; if( "staffmembers" == vm.bookingpress_current_tab && "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected && true == vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected ){ is_strict_validate = 0; } if("service" == vm.bookingpress_current_tab){ if( vm.bookingpress_is_extra_enable == "1" && typeof vm.appointment_step_form_data.selected_service != "" ){ let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if(typeof selected_service_data != "undefined") { let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ bpa_selected_service_extra_count++; } } if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count < selected_service_data.bookingpress_min_no_extra_service){ bookingpress_is_validate = 1; let errorMsg = "Please select at least [x] extra service"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_min_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } else if("undefined" != selected_service_data.service_extras && "" != selected_service_data.service_extras && bpa_selected_service_extra_count > selected_service_data.bookingpress_max_no_extra_service ){ bookingpress_is_validate = 1; let errorMsg = "You can select maximum [x] extra services"; errorMsg = errorMsg.replace("[x]", selected_service_data.bookingpress_max_no_extra_service); vm.bookingpress_set_extra_service_error_msg(errorMsg); } } } } if((vm.bookingpress_current_tab == "basic_details") && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } }); if(bookingpress_is_validate == 0 && is_strict_validate == 1){ var customer_form = "appointment_step_form_data"; vm.$refs[customer_form].validate((valid) => { if (!valid) { bookingpress_is_validate = 1; }else{ bookingpress_is_validate = 0; } }); } }else{ if(is_strict_validate == 1){ bookingpress_validate_fields_arr.forEach(function(currentValue, index, arr){ if(vm.bookingpress_current_tab == vm.bookingpress_current_tab && vm.appointment_step_form_data[currentValue] == "" && vm.bookingpress_current_tab != next_tab && current_tab != previous_tab){ if( currentValue == "selected_start_time" && vm.appointment_step_form_data[currentValue] == "" ) { if( vm.appointment_step_form_data.selected_service_duration_unit != "d" ){ vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } else { vm.bookingpress_set_error_msg(vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].validation_msg[currentValue]); bookingpress_is_validate = 1; } } }); } } if( "service" == current_tab && "service" != vm.bookingpress_current_tab ){ var bookingpress_selected_date = vm.appointment_step_form_data.selected_date+"T00:00:00+00:00"; var bookingpress_disable_dates_arr = vm.days_off_disabled_dates.split(","); if(bookingpress_disable_dates_arr.includes(bookingpress_selected_date)){ let newDate = new Date("2026-01-16 14:28:54"); let pattern = /(\d{4}\-\d{2}\-\d{2})/; if( !pattern.test( newDate ) ){ let sel_month = newDate.getMonth() + 1; let sel_year = newDate.getFullYear(); let sel_date = newDate.getDate(); if( sel_month < 10 ){ sel_month = "0" + sel_month; } if( sel_date < 10 ){ sel_date = "0" + sel_date; } newDate = sel_year + "-" + sel_month + "-" + sel_date; } vm.appointment_step_form_data.selected_date = newDate; } } if( ("basic_details" == current_tab && "service" == vm.bookingpress_current_tab) || ("summary" == current_tab && "service" == vm.bookingpress_current_tab) ){ if(vm.appointment_step_form_data.selected_service_duration_unit != "d"){ if(vm.appointment_step_form_data.selected_start_time == ""){ bookingpress_is_validate = 1; } } } if(bookingpress_is_validate == 0){ vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; let current_selected_tab = vm.bookingpress_current_tab; vm.bookingpress_current_tab = current_tab; vm.bookingpress_next_tab = next_tab; vm.bookngpress_previous_tab = previous_tab; vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].is_allow_navigate = 1; if( "datetime" == current_tab ){ let selected_service_id = vm.appointment_step_form_data.selected_service; vm.bookingpress_disable_date(selected_service_id,vm.appointment_step_form_data.selected_date); } } if( window.innerWidth <= 576 ){ let container = vm.$el; let pos = 0; if( null != container ){ pos = container.getBoundingClientRect().top + window.scrollY; } const myVar = Error().stack; let allow_scroll = true; if( /mounted/.test( myVar ) ){ allow_scroll = false; } if( allow_scroll ){ setTimeout(function(){ window.scrollTo({ top: pos, behavior: "smooth", }); }, 500); } } if( "summary" == current_tab && "summary" == vm.bookingpress_current_tab ) { const vm = this; var total_payment_div_count = document.querySelectorAll(".bpa-front-module--pm-body__item").length; if(total_payment_div_count == 1){ var total_payment_div = document.querySelector(".bpa-front-module--pm-body__item"); if( null != total_payment_div && "undefined" != typeof total_payment_div) { vm.prevent_verification_on_load = true; total_payment_div.click(); vm.prevent_verification_on_load = false; } } vm.bookingpress_activate_payment_gateway_total_counter = vm.bookingpress_activate_payment_gateway_counter; if( vm.paypal_payment == "paypal" ){ let total_counter_payment_gateway = vm.bookingpress_activate_payment_gateway_total_counter + 1; vm.bookingpress_activate_payment_gateway_total_counter = total_counter_payment_gateway; } if( total_payment_div_count == 0 && vm.is_only_onsite_enabled == "1" ){ vm.appointment_step_form_data.selected_payment_method = "on-site"; vm.skip_checking_final_step_validation = true; vm.select_payment_method("on-site"); } } if(current_tab == "datetime" || next_tab == "datetime"){ setTimeout(() => { const custom_duration_select = document.querySelector(".bpa-front-module--date-and-time .bpa-custom-duration-select .el-input__inner"); if(custom_duration_select !== null){ custom_duration_select.focus(); } vm.focusFirstDate(); window.is_focused = false; /* const recurring_date_picker = document.querySelector(".bpa-recurring-appointment-head-row .bpa-front-form-control--date-picker .el-input__inner"); if(recurring_date_picker !== null){ recurring_date_picker.focus(); } */ const calendar_btn_mobile = document.querySelector(".bpa-front--dt__ts-sm-back-btn .el-button"); if(calendar_btn_mobile !== null){ calendar_btn_mobile.focus(); } }, 1000); } if(current_tab == "basic_details" || next_tab == "basic_details"){ setTimeout(() => { document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active") ?.querySelector("input:not([readonly]):not([disabled]):not([type='hidden']), select:not([disabled]), textarea:not([readonly]):not([disabled])") ?.focus(); }, 10); } if(next_tab == "summary"){ setTimeout(() => { let find_first_pg = document.querySelector(".bpa-front-module--payment-methods .bpa-front-module--pm-body__item"); if(find_first_pg !== null){ find_first_pg.focus(); }else { find_first_pg = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa-front-dc--footer .summery-book-appointment-btn"); if(find_first_pg !== null){ find_first_pg.focus(); } } }, 10); } if(current_tab == "service" || next_tab == "service"){ setTimeout(() => { let find_first_service = document.querySelector(".bpa-front-module--service-item .bpa-front-si-card"); if(find_first_service !== null){ find_first_service.focus(); } }, 10); } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ if (typeof vm.appointment_step_form_data.cart_items == "undefined" || vm.appointment_step_form_data.cart_items.length == 0 ) { let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ]; if( "undefined" != typeof selected_service_data.enable_custom_service_duration && true == selected_service_data.enable_custom_service_duration ){ } else { let service_extras = selected_service_data.service_extras; let service_extra_price = 0; for( let extra_id in service_extras ){ if( "undefined" != typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ] && true == vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_is_selected ){ let extra_price = parseFloat( service_extras[ extra_id ].bookingpress_extra_service_price ); let extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[ extra_id ].bookingpress_selected_qty || 1; service_extra_price += ( extra_price * extra_qty ); } } let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; if( true == vm.use_base_price_for_calculation ){ total_payable_amount = vm.appointment_step_form_data.base_price_without_currency; } let final_price_with_extra = parseFloat( total_payable_amount ) + parseFloat( service_extra_price ); vm.appointment_step_form_data.service_price_without_currency = final_price_with_extra; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( final_price_with_extra ); } } } if( "summary" == next_tab && "summary" == vm.bookingpress_current_tab && bookingpress_is_validate == 0 ){ let total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; let is_cart = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined") { if( vm.appointment_step_form_data.bookingpress_cart_total != vm.appointment_step_form_data.bookingpress_cart_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; } is_cart = true; } let is_recurring = false; if (typeof vm.appointment_step_form_data.is_recurring_appointments != "undefined") { if(vm.appointment_step_form_data.is_recurring_appointments == true){ if( vm.appointment_step_form_data.bookingpress_recurring_total != vm.appointment_step_form_data.bookingpress_recurring_original_total ){ total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_original_total; } else { total_payable_amount = vm.appointment_step_form_data.bookingpress_recurring_total; } is_recurring = true; } } total_payable_amount = parseFloat( total_payable_amount ); if(typeof vm.appointment_step_form_data.tax_percentage_temp == "undefined"){ vm.appointment_step_form_data.tax_percentage_temp = vm.appointment_step_form_data.tax_percentage; } else { vm.appointment_step_form_data.tax_percentage = vm.appointment_step_form_data.tax_percentage_temp; } let tax_percentage = vm.appointment_step_form_data.tax_percentage; let tax_display_opt = vm.appointment_step_form_data.tax_price_display_options; /* Country wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ const field_meta_key = Object.keys(vm.appointment_step_form_data.bookingpress_front_field_data).find(key => vm.appointment_step_form_data.bookingpress_front_field_data[key] === vm.appointment_step_form_data.countryselectedField); if(field_meta_key) { let meta_key_exists_repeater_field = false; if(vm.appointment_step_form_data && typeof vm.appointment_step_form_data.bookingpress_repeater_fields_key != undefined){ meta_key_exists_repeater_field = Object.values(vm.appointment_step_form_data.bookingpress_repeater_fields_key).some(nestedObj => field_meta_key in nestedObj); } if(!meta_key_exists_repeater_field) { //if field is not in repeater field then consider tax for that country field. const form_field_details = vm.appointment_step_form_data.form_fields; const form_field_value = form_field_details[field_meta_key]; const taxPercentage = vm.appointment_step_form_data.country_wise_tax_details.find(item => item.selectedOption === form_field_value)?.bookingpress_country_wise_tax_per; if(taxPercentage != "" && typeof taxPercentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(taxPercentage); tax_percentage = parseFloat(taxPercentage); } } } } /* Country wise tax calcualtion */ /* Location wise tax calcualtion */ if(typeof vm.appointment_step_form_data.enable_location_wise_tax != "undefined" && vm.appointment_step_form_data.enable_location_wise_tax == "true"){ let bookingpress_selected_location = ""; if(typeof vm.appointment_step_form_data.selected_location != "undefined" && vm.appointment_step_form_data.selected_location != "" && typeof vm.appointment_step_form_data.location_wise_tax_details != "undefined"){ let bookingpress_selected_location = vm.appointment_step_form_data.selected_location; const taxDetail = vm.appointment_step_form_data.location_wise_tax_details.find(tax => tax.bookingpress_location_id == vm.appointment_step_form_data.selected_location); let applied_tax_percentage = taxDetail ? taxDetail.bookingpress_location_tax_percentage : vm.appointment_step_form_data.tax_percentage; if(applied_tax_percentage != "" && typeof applied_tax_percentage != "undefined") { vm.appointment_step_form_data.tax_percentage = parseFloat(applied_tax_percentage); tax_percentage = parseFloat(applied_tax_percentage); } } } /* Location wise tax calcualtion */ if( "exclude_taxes" == tax_display_opt ){ let calculated_tax_amount = total_payable_amount * ( tax_percentage / 100 ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); let final_tax_amount = total_payable_amount + calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = calculated_tax_amount; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); if( true == is_cart ){ vm.appointment_step_form_data.bookingpress_cart_total = total_payable_amount + calculated_tax_amount; } if( true == is_recurring ){ vm.appointment_step_form_data.bookingpress_recurring_total = total_payable_amount + calculated_tax_amount; } vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } else { let calculated_tax_amount = ( parseFloat(total_payable_amount) * parseFloat( tax_percentage ) ) / ( 100 + parseFloat(tax_percentage) ); calculated_tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount, true ); vm.appointment_step_form_data.tax_amount_without_currency = 0; vm.appointment_step_form_data.tax_amount = vm.bookingpress_price_with_currency_symbol( calculated_tax_amount ); vm.appointment_step_form_data.calculated_tax_amount_org = calculated_tax_amount; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true"){ vm.bookingpress_remove_coupon_code(); } if(typeof vm.appointment_step_form_data.gift_card_code != "undefined" && vm.appointment_step_form_data.gift_card_code != "" && typeof vm.appointment_step_form_data.enable_country_wise_tax != "undefined" && vm.appointment_step_form_data.enable_country_wise_tax == "true" && typeof vm.bookingpress_remove_gift_code === "function" ){ vm.bookingpress_remove_gift_code(); } } if((vm.bookingpress_current_tab == "basic_details")){ if(vm.bookingpress_has_password_field == "1"){ if(typeof vm.appointment_step_form_data.form_fields.customer_email != "undefined" && vm.appointment_step_form_data.form_fields.customer_email != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_email); } if(typeof vm.appointment_step_form_data.form_fields.customer_username != "undefined" && vm.appointment_step_form_data.form_fields.customer_username != ""){ vm.bpa_check_password_validation(vm.appointment_step_form_data.form_fields.customer_username); } } if( (vm.bookingpress_is_extra_enable == "1" ) ){ let bpa_selected_service_extra_count = 0; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == true){ let service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price; let service_extra_qty = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_selected_qty; if( service_extra_qty != ""){ if(typeof vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] != "undefined"){ service_extra_price = vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"]; } let bpa_final_extra_price = service_extra_price * service_extra_qty; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key]["bookingpress_extra_price_org"] = service_extra_price; vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_extra_price = vm.bookingpress_price_with_currency_symbol(bpa_final_extra_price); } bpa_selected_service_extra_count++; } } vm.appointment_step_form_data.bookingpress_selected_extra_service_count = bpa_selected_service_extra_count; } } if( ( previous_tab == "staffmembers" || ( typeof vm.is_staff_first_step != "undefined" && vm.is_staff_first_step == 1 )) && "service" == current_tab && "true" == vm.appointment_step_form_data.select_any_staffmember && 0 == vm.appointment_step_form_data.selected_staff_member_id && vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime != 1 ){ vm.isLoadServiceLoader = "1"; vm.bookingpress_select_staffmember("any_staff", 1 ); } if(current_tab == "staffmembers" || next_tab == "staffmembers"){ setTimeout(() => { let staff_member_first_card = document.querySelector(".bpa-front-module--staff .bpa-front-sm-card"); if(staff_member_first_card !== null){ staff_member_first_card.focus(); } }, 10); } if((vm.bookingpress_is_extra_enable == "0" || vm.bookingpress_service_extras.length == 0 || vm.appointment_step_form_data.is_extra_service_exists == "0") && (vm.is_bring_anyone_with_you_activated == "0" || vm.bookingpress_bring_anyone_with_you_details.length == "0" || parseInt(vm.appointment_step_form_data.service_max_capacity) == "") && (vm.is_staffmember_activated == "0" || vm.appointment_step_form_data.is_staff_exists == "0" || vm.appointment_step_form_data.form_sequence == "staff_selection")){ vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); } var bpa_selected_staff_from_url = "0"; for(var extra_key in vm.appointment_step_form_data.bookingpress_selected_extra_details){ if(vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected == "true"){ vm.appointment_step_form_data.bookingpress_selected_extra_details[extra_key].bookingpress_is_selected = true; } } var bpa_selected_staff_id = vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id; if( "summary" == vm.bookingpress_current_tab && "summary" == next_tab && bookingpress_is_validate == 0 ){ /* vm.bookingpress_calculate_service_addons_price(vm.appointment_step_form_data.selected_service); */ vm.bookingpress_get_final_step_amount(); /* vm.bookingpress_recalculate_payable_amount(); */ } if( "service" == vm.bookingpress_sidebar_step_data[ current_tab ].previous_tab_name ){ document.body.classList.remove( "--bpa-open-advance-drawer" ); } if( "service" == current_tab && "true" == vm.bookingpress_open_extras_drawer ){ document.body.classList.add( "--bpa-open-advance-drawer" ); } ; }, bookingpress_select_multi_day_range(day = ""){ const vm = this; if(vm.appointment_step_form_data.selected_date){ day = vm.appointment_step_form_data.selected_date; vm.bookingpress_selected_date_range = []; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_end_date = vm.appointment_step_form_data.selected_date; var selected_date = new Date(day); var selected_service_duration = vm.appointment_step_form_data.selected_service_duration; var bookingpress_selected_date_range = []; var new_date = new Date(day + " 00:00:00"); bookingpress_selected_date_range.push(day); for(var i = 1; i < selected_service_duration; i++) { new_date.setDate(new_date.getDate() + 1); var month = "" + (new_date.getMonth() + 1), day = "" + new_date.getDate(), year = new_date.getFullYear(); if (month.length < 2){ month = "0" + month; } if (day.length < 2){ day = "0" + day; } var add_date = [year, month, day].join("-"); bookingpress_selected_date_range.push(add_date); if(i == selected_service_duration-1) { vm.appointment_step_form_data.selected_end_date = add_date; } } if(bookingpress_selected_date_range.length > 0){ vm.bookingpress_selected_date_range = bookingpress_selected_date_range; } } } }, async bookingpress_select_multi_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0){ var vm = this; }, bpa_is_select_multistaff_member(staff_member_id){ var vm = this; return false; }, bpa_search_service( value ){ const vm = this; value = value.toLowerCase(); vm.bpasortedServices.forEach( ( element,index ) =>{ vm.bpasortedServices[index].show_with_search = false; if( element.bookingpress_service_name.toLowerCase().includes( value ) ){ vm.bpasortedServices[index].show_with_search = true; } }); }, bpa_search_staff( value ){ const vm = this; value = value.toLowerCase(); vm.bookingpress_staffmembers_details.forEach( ( element,index ) => { vm.bookingpress_staffmembers_details[index].show_with_staff_search = false; if( (element.bookingpress_staffmember_firstname.toLowerCase().includes( value )) || element.bookingpress_staffmember_lastname.toLowerCase().includes( value ) ){ vm.bookingpress_staffmembers_details[index].show_with_staff_search = true; } }); }, bookingpress_validatePhoneField(event) { this.$nextTick(() => { if (!this.$refs.appointment_step_form_data) return; const phoneValue = this.appointment_step_form_data.form_fields.customer_phone; if (/^[\d\+\s\-\(\)]+$/.test(phoneValue.trim())) { this.$refs.appointment_step_form_data.clearValidate(["customer_phone"]); } }); }, bookingpress_phone_country_open_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-field-main-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.add("bpa-active-col"); let parent_upper = vm.bookingpress_get_parents( parent[0], ".el-col" ); if( 0 < parent_upper.length && null != parent_upper[0] ){ //parent_upper[0].classList.add("bpa-active-col"); } } } } }, bookingpress_phone_country_close_repeater( vmodel ){ const vm = this; if( "" != vmodel ){ let elm = document.querySelector(`div[data-tel-id="${vmodel}"]`); if( null != elm ){ let parent = vm.bookingpress_get_parents( elm, ".bpa-active-col" ); if( 0 < parent.length && null != parent[0] ){ parent[0].classList.remove("bpa-active-col"); } } } }, bpa_check_space_validation(bpa_input_value,v_modal_data){ var vm = this; if(bpa_input_value.trim() == ""){ vm.appointment_step_form_data["form_fields"][v_modal_data] = ""; return ""; } return bpa_input_value; }, bpa_check_password_validation( bpa_email_value ) { const vm = this; if( "undefined" == typeof vm.appointment_step_form_data.form_fields.customer_password || vm.bpa_check_user_login == 1 ){ return; } var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_password_validation_check", _wpnonce:bkp_wpnonce_pre_fetch, _email: bpa_email_value }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "undefined" != typeof response.data.bpa_password_already_exists ){ if( response.data.bpa_password_already_exists == true ){ if(this.$refs.appointment_step_form_data){ this.$refs.appointment_step_form_data.clearValidate("customer_password"); } vm.appointment_step_form_data.bpa_password_already_exists = true; vm.customer_details_rule.customer_password[0].required = false; vm.appointment_step_form_data.bpa_user_email_already_exists = true; vm.appointment_step_form_data.form_fields["customer_password"] = ""; } } else { vm.appointment_step_form_data.bpa_password_already_exists = false; vm.customer_details_rule.customer_password[0].required = true; vm.appointment_step_form_data.bpa_user_email_already_exists = false; } }.bind(this) ) .catch( function (error) { console.log(error); }); }, dayClicked_v2( day ){ const vm = this; vm.dayClicked( day ); vm.bookingpress_select_multi_day_range( day ); let timeslot_data = vm.v_calendar_timeslots_data[ day.id ]; let max_available_date = vm.booking_cal_maxdate; ; if( "undefined" != typeof timeslot_data ){ vm.appointment_step_form_data.store_service_date = timeslot_data[0].store_service_date; vm.appointment_step_form_data.store_selected_date = timeslot_data[0].store_service_date; } }, bookingpress_day_click(day){ const vm = this; let disable_dates = vm.v_calendar_disable_dates; let max_available_date = vm.booking_cal_maxdate; ; let max_date_value = false; if( max_available_date instanceof Date ){ max_date_value = ( max_available_date < ( new Date( day.id ) ) ); } else { max_date_value = ( max_available_date < day.id ); } if( disable_dates.includes( day.id + " 00:00:00" ) || disable_dates.includes( day.id ) || max_date_value || (day.date < vm.jsCurrentDateFormatted && false == day.isToday) ){ return false; } vm.appointment_step_form_data.selected_date = day.id; vm.bookingpress_select_multi_day_range(day); vm.dayClicked( day ); }, bookingpress_get_final_step_amount() { const vm = this; var payment_method = vm.appointment_step_form_data.selected_payment_method; var total_payable_amount = vm.appointment_step_form_data.service_price_without_currency; var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( "" == tax_amount ){ tax_amount = 0; } let total_payable_amount_without_tax = parseFloat(total_payable_amount); if(typeof tax_amount != "undefined"){ total_payable_amount = parseFloat(total_payable_amount) + parseFloat(tax_amount); } let is_cart_addon = false; if (typeof vm.appointment_step_form_data.cart_items != "undefined" && ("undefined" == typeof vm.is_club_service || vm.is_club_service != true ) ) { /* total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; */ total_payable_amount = vm.appointment_step_form_data.bookingpress_cart_total; total_payable_amount_without_tax = parseFloat(total_payable_amount); if( typeof tax_amount != "undefined" ){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( tax_amount ); if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != "" && typeof vm.appointment_step_form_data.tax_amount_before_coupon_without_currency != "undefined"){ total_payable_amount_without_tax = parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.tax_amount_before_coupon_without_currency ); } } } /* console.trace( "INSIDE CART CONDITION ===>>> " + vm.appointment_step_form_data.bookingpress_cart_total ); */ is_cart_addon = true; } var coupon_code = vm.appointment_step_form_data.coupon_code; var selected_service = vm.appointment_step_form_data.selected_service; var selected_staff_member_id = vm.appointment_step_form_data.selected_staff_member_id; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } var subtotal_price = total_payable_amount; /* apply coupon */ if( 1 == vm.is_coupon_activated ){ if(vm.appointment_step_form_data.coupon_code != ""){ if(typeof vm.appointment_step_form_data.coupon_discount_amount != "undefined" && vm.appointment_step_form_data.coupon_discount_amount != 0){ if(vm.appointment_step_form_data.tax_percentage != ""){ var tax_percentage = parseFloat(vm.appointment_step_form_data.tax_percentage); if(typeof vm.appointment_step_form_data.tax_price_display_options != "undefined" && vm.appointment_step_form_data.tax_price_display_options == "include_taxes"){ tax_amount = (total_payable_amount_without_tax * tax_percentage) / (100+tax_percentage); total_payable_amount_without_tax = total_payable_amount_without_tax - tax_amount; } } let f_payable_amount = total_payable_amount_without_tax - vm.appointment_step_form_data.coupon_discount_amount; if( 0 == f_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = f_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( f_payable_amount, true ); } var tax_amount = vm.appointment_step_form_data.tax_amount_without_currency; if( typeof tax_amount != "undefined" ){ vm.appointment_step_form_data.total_payable_amount = vm.appointment_step_form_data.total_payable_amount + tax_amount; }else { tax_amount = 0; } vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount, true ); vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.total_payable_amount ); subtotal_price = f_payable_amount + tax_amount; if( "undefined" != vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency && 1 == vm.bookingpress_is_deposit_payment_activate ){ if( vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price" || vm.appointment_step_form_data.bookingpress_deposit_payment_method == "allow_customer_to_pay_full_amount" ){ if(is_cart_addon){ let cart_items_deposite_amount = 0; vm.appointment_step_form_data.cart_items.forEach((current_cart_item, cart_item_index) => { cart_items_deposite_amount = parseFloat(cart_items_deposite_amount) + parseFloat(current_cart_item.bookingpress_deposit_price); }); if( cart_items_deposite_amount < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } }else{ if( vm.appointment_step_form_data.deposit_payment_type == "fixed") { if( vm.appointment_step_form_data.deposit_payment_amount < subtotal_price ){ vm.appointment_step_form_data.bookingpress_remove_deposit = 0; vm.appointment_step_form_data.calculate_deposit = true; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } else if( vm.appointment_step_form_data.deposit_payment_type == "percentage") { let bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(vm.appointment_step_form_data.deposit_payment_amount) / 100); if( bookingpress_deposit_amt < subtotal_price ){ vm.appointment_step_form_data.calculate_deposit = true; vm.appointment_step_form_data.bookingpress_remove_deposit = 0; } else { vm.appointment_step_form_data.calculate_deposit = false; vm.appointment_step_form_data.bookingpress_remove_deposit = 1; } } } } } } } else { vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); if( 0 == total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount, true ); } vm.appointment_step_form_data.bookingpress_remove_deposit = 0; subtotal_price = total_payable_amount; } } /* If deposit payment module enabled then calculate deposit amount */ var deposit_method = vm.appointment_step_form_data.bookingpress_deposit_payment_method; var deposit_type = vm.appointment_step_form_data.deposit_payment_type; var deposit_value = vm.appointment_step_form_data.deposit_payment_amount; var bookingpress_deposit_amt = 0; var bookingpress_deposit_due_amt = 0; if(payment_method != "" && 1 == vm.bookingpress_is_deposit_payment_activate && vm.appointment_step_form_data.bookingpress_remove_deposit != 1 && ( "undefined" == typeof vm.appointment_step_form_data.is_clubbed_service || false == vm.appointment_step_form_data.is_clubbed_service ) ){ var bookingpress_check_deposit_avaliable = false; if( 1 == is_cart_addon ){ if (typeof vm.appointment_step_form_data.cart_items != "undefined"){ var cart_items_temp_data = vm.appointment_step_form_data.cart_items; if(cart_items_temp_data != "" && cart_items_temp_data.length != 0){ cart_items_temp_data.forEach(function(currentValue, index, arr){ if (typeof cart_items_temp_data[index].bookingpress_deposit_due_amount != "undefined"){ if(parseFloat(cart_items_temp_data[index].bookingpress_deposit_due_amount) > 0){ bookingpress_check_deposit_avaliable = true; } } }); } } }else{ if(typeof vm.appointment_step_form_data.deposit_payment_type != undefined && typeof vm.appointment_step_form_data.deposit_payment_amount_percentage != undefined){ if(vm.appointment_step_form_data.deposit_payment_type == "percentage" && vm.appointment_step_form_data.deposit_payment_amount_percentage == 100){ bookingpress_check_deposit_avaliable = false; }else{ bookingpress_check_deposit_avaliable = true; } } } if(bookingpress_check_deposit_avaliable && payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "") && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ if(deposit_method == "deposit_or_full_price"){ //if( true == is_cart_addon ){ //subtotal_price = total_payable_amount_without_tax; /* vm.bookingpress_price_with_currency_symbol( total_payable_amount_without_tax, true ); */ //} if(deposit_type == "percentage"){ bookingpress_deposit_amt = total_payable_amount_without_tax * ( parseFloat(deposit_value) / 100); bookingpress_deposit_amt = bookingpress_deposit_amt; /* vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); */ bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } else if(deposit_type == "fixed") { bookingpress_deposit_amt = deposit_value; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } } else if(deposit_method == "allow_customer_to_pay_full_amount") { bookingpress_deposit_amt = subtotal_price; bookingpress_deposit_due_amt = subtotal_price - bookingpress_deposit_amt; } let total_payable_amount_temp = bookingpress_deposit_amt; if(typeof vm.appointment_step_form_data.tip_amount != undefined && vm.appointment_step_form_data.tip_amount> 0 && vm.appointment_step_form_data.bookingpress_deposit_total != undefined && vm.appointment_step_form_data.bookingpress_deposit_payment_method == "deposit_or_full_price"){ total_payable_amount_temp = parseFloat(vm.appointment_step_form_data.bookingpress_deposit_total) + parseFloat(vm.appointment_step_form_data.tip_amount); } vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt, true ); vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp ); if( 0 == total_payable_amount_temp ){ vm.appointment_step_form_data.total_payable_amount = total_payable_amount_temp; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( total_payable_amount_temp, true ); } /* 26 April 2023 changes */ if( 1 == is_cart_addon ){ if( "allow_customer_to_pay_full_amount" == deposit_method ){ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bookingpress_deposit_due_amt + tax_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt + tax_amount ); } else { if( 1 == vm.is_tax_activated ){ /* let tax_method = vm.appointment_step_form_data.tax_price_display_options; */ /* if( "exclude_taxes" == tax_method ){ */ let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); } else { vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } else { let bpa_deposit_due_amount_total = ( parseFloat( total_payable_amount ) - parseFloat( vm.appointment_step_form_data.bookingpress_deposit_total ) ); if( 1 == vm.is_coupon_activated){ let coupon_discount = vm.appointment_step_form_data.coupon_discount_amount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total - coupon_discount; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( vm.appointment_step_form_data.bookingpress_deposit_due_amount_total ); }else{ vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = bpa_deposit_due_amount_total; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol( bpa_deposit_due_amount_total ); } } } } /* 26 April 2023 changes */ } else { vm.appointment_step_form_data.bookingpress_deposit_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_amt ); vm.appointment_step_form_data.bookingpress_deposit_amt_without_currency = bookingpress_deposit_amt; vm.appointment_step_form_data.bookingpress_deposit_due_amt = vm.bookingpress_price_with_currency_symbol( bookingpress_deposit_due_amt ); vm.appointment_step_form_data.bookingpress_deposit_due_amt_without_currency = bookingpress_deposit_due_amt; vm.appointment_step_form_data.total_payable_amount_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); if( 0 == subtotal_price ){ vm.appointment_step_form_data.total_payable_amount = subtotal_price; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( subtotal_price, true ); } if(payment_method != "on-site" && (typeof vm.appointment_step_form_data.bookingpress_package_applied_data == "undefined" || (typeof vm.appointment_step_form_data.bookingpress_package_applied_data != "undefined") && vm.appointment_step_form_data.bookingpress_package_applied_data == "")){ var bookingpress_is_recurring_appointment_active = false; if(typeof vm.appointment_step_form_data.recurring_appointments != "undefined"){ if(vm.appointment_step_form_data.is_recurring_appointments == true || vm.appointment_step_form_data.is_recurring_appointments == "true"){ bookingpress_is_recurring_appointment_active = true; } } if( 1 == is_cart_addon && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = total_payable_amount; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( total_payable_amount ); } if(bookingpress_is_recurring_appointment_active && (typeof vm.appointment_step_form_data.gift_card_data == "undefined" || (typeof vm.appointment_step_form_data.gift_card_data != "undefined") && vm.appointment_step_form_data.gift_card_data == "")){ vm.appointment_step_form_data.bookingpress_deposit_total = subtotal_price; vm.appointment_step_form_data.bookingpress_deposit_total_with_currency = vm.bookingpress_price_with_currency_symbol( subtotal_price ); vm.appointment_step_form_data.bookingpress_deposit_due_amount_total = 0; vm.appointment_step_form_data.bookingpress_deposit_due_amount_total_with_currency = vm.bookingpress_price_with_currency_symbol(0); } } } } if(vm.appointment_step_form_data.selected_payment_method != " - " && vm.appointment_step_form_data.selected_payment_method != ""){ vm.appointment_step_form_data.selected_payment_method_org = vm.appointment_step_form_data.selected_payment_method; } var paypal_payment_method_type = "lagacy"; if(vm.appointment_step_form_data.total_payable_amount == 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { var final_document_divnew = document.getElementById("paypal-button-container"); vm.show_paypal_popup_button = "false"; if(final_document_divnew){ document.getElementById("paypal-button-container").style.display = "none"; } } else if(vm.appointment_step_form_data.total_payable_amount != 0 && typeof vm.appointment_step_form_data.selected_payment_method_org != "undefined" && vm.appointment_step_form_data.selected_payment_method_org == "paypal" && paypal_payment_method_type == "popup" ) { vm.show_paypal_popup_button = "true"; document.getElementById("paypal-button-container").style.display = "block"; vm.appointment_step_form_data.selected_payment_method = vm.appointment_step_form_data.selected_payment_method_org; } if( "undefined" == typeof vm.prevent_verification_on_load || false == vm.prevent_verification_on_load ){ this.bookingpress_verify_total_payment_amount(); } }, bookingpress_verify_total_payment_amount_v2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; } }.bind(this) ) .catch( function (error) { }); }, bookingpress_verify_total_payment_amount(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } vm.bkp_processing_token = true; let bpk_payable_data = { action: "bookingpress_pre_booking_verify_details", booking_token: vm.appointment_step_form_data.bookingpress_uniq_id, booking_data: JSON.stringify( vm.appointment_step_form_data ), _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bpk_payable_data ) ) .then( function (response) { if( "undefined" != typeof response.data.verification_token ){ vm.appointment_step_form_data.authorized_token = response.data.verification_token; vm.appointment_step_form_data.authorized_time = response.data.verification_time; vm.bkp_processing_token = false; } if( vm.bkp_process_booking == true ){ vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { }); }, bookingpress_recalculate_payable_amount(){ return false; const vm = this; var bookingpress_recalculate_data = {}; bookingpress_recalculate_data.action = "bookingpress_recalculate_appointment_data"; bookingpress_recalculate_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_recalculate_data._wpnonce = bkp_wpnonce_pre_fetch; if( "undefined" != typeof vm.bookingpress_timezone_offset ){ bookingpress_recalculate_data.client_timezone_offset = vm.bookingpress_timezone_offset; } if( "undefined" != typeof vm.bookingpress_dst_timezone ){ bookingpress_recalculate_data.client_dst_timezone = vm.bookingpress_dst_timezone; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_recalculate_data ) ) .then( function (response) { vm.appointment_step_form_data = response.data.appointment_data }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error) }); }, bookingpress_apply_coupon_code(final_call = false){ const vm = this; vm.coupon_apply_loader = "1"; var bookingpress_apply_coupon_data = {}; bookingpress_apply_coupon_data.action = "bookingpress_apply_coupon_code"; bookingpress_apply_coupon_data.appointment_details = JSON.stringify( vm.appointment_step_form_data ); var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_apply_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_apply_coupon_data ) ) .then( function (response) { vm.coupon_apply_loader = "0"; vm.coupon_applied_status = response.data.variant; if(response.data.variant == "error"){ vm.coupon_code_msg = response.data.msg; vm.appointment_step_form_data.coupon_discount_amount = 0; /* for the coupon code error display */ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "flex"; } }else{ vm.coupon_code_msg = response.data.msg; vm.coupon_discounted_amount = "-" + response.data.discounted_amount; vm.bpa_coupon_apply_disabled = 1; vm.appointment_step_form_data.applied_coupon_res = { "coupon_data": response.data.coupon_data }; } vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; if(response.data.coupon_discount_amount > 0 ) { vm.appointment_step_form_data.bookingpress_temp_subtotal = response.data.bookingpress_temp_subtotal; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = response.data.bookingpress_temp_subtotal_with_currency; vm.appointment_step_form_data.coupon_discount_amount = response.data.coupon_discount_amount; vm.appointment_step_form_data.coupon_discount_amount_with_currecny = response.data.coupon_discount_amount_with_currecny; if( typeof response.data.tax_amount != "undefined" ){ vm.appointment_step_form_data.tax_amount_before_coupon = vm.appointment_step_form_data.tax_amount; vm.appointment_step_form_data.tax_amount_before_coupon_without_currency = vm.appointment_step_form_data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount = response.data.tax_amount; vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.total_payable_amount_with_currency; vm.appointment_step_form_data.calculated_tax_amount_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = response.data.tax_amount_without_currency; vm.appointment_step_form_data.tax_amount_org = response.data.tax_amount; } if( 0 == response.data.total_payable_amount ){ vm.appointment_step_form_data.total_payable_amount = response.data.total_payable_amount; } else { vm.appointment_step_form_data.total_payable_amount = vm.bookingpress_price_with_currency_symbol( response.data.total_payable_amount, true ); } } vm.bookingpress_get_final_step_amount(); }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); }, bookingpress_remove_coupon_code(final_call = false){ const vm = this; let bookingpress_remove_coupon_data = { action: "bookingpress_remove_coupon_code", coupon_code: vm.appointment_step_form_data.coupon_code, }; let bkp_wpnonce_pre = "4ac51a523d"; let bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } bookingpress_remove_coupon_data._wpnonce = bkp_wpnonce_pre_fetch; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_remove_coupon_data ) ) .then( function (response) { }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); vm.appointment_step_form_data.coupon_code = ""; vm.appointment_step_form_data.applied_coupon_res = ""; vm.coupon_code_msg = ""; /* vm.bookingpress_recalculate_payable_amount() */ vm.bpa_coupon_apply_disabled = 0; vm.coupon_applied_status = "error"; vm.coupon_discounted_amount = ""; vm.appointment_step_form_data.coupon_discount_amount = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal = 0; vm.appointment_step_form_data.bookingpress_temp_subtotal_with_currency = ""; if(typeof vm.appointment_step_form_data.tax_amount_before_coupon != "undefined") { vm.appointment_step_form_data.tax_amount = vm.appointment_step_form_data.tax_amount_before_coupon; vm.appointment_step_form_data.tax_amount_without_currency = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.calculated_tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_without_currency_org = vm.appointment_step_form_data.tax_amount_before_coupon_without_currency; vm.appointment_step_form_data.tax_amount_org = vm.appointment_step_form_data.tax_amount_before_coupon; } vm.bookingpress_get_final_step_amount(); }, generateSpamCaptchav2(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_generate_spam_captcha", _wpnonce:bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.variant != "error" && (response.data.captcha_val != "" && response.data.captcha_val != undefined)){ }else{ var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch!="undefined" && bkp_wpnonce_pre_fetch!=null && response.data.updated_nonce!=""){ document.getElementById("_wpnonce").value = response.data.updated_nonce; } else { vm.$notify({ title: response.data.title, message: response.data.msg, type: response.data.variant, customClass: "error_notification" }); } if( "undefined" != typeof response.data.updated_ics_nonce && "" != response.data.updated_ics_nonce && null != document.getElementById( "bpa_ics_nonce" ) ){ document.getElementById( "bpa_ics_nonce" ).value = response.data.updated_ics_nonce; } } }.bind(this) ) .catch( function (error) { console.log(error); }); }, async bookingpress_render_thankyou_content(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; await vm.generateSpamCaptchav2(); var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_render_thankyou_content", bookingpress_uniq_id: vm.appointment_step_form_data.bookingpress_uniq_id, _wpnonce:bkp_wpnonce_pre_fetch }; if( "undefined" != typeof vm.load_synchronized_thankyou_page && true == vm.load_synchronized_thankyou_page ){ return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; const link = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item a"); const button = document.querySelector(".bpa-front-module--atc-wrapper .bpa-front-module--atc__item button"); // Focus on whichever element exists (prioritizing the link if both exist) if (link) { link.focus(); } else if (button) { button.focus(); } },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } else { axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ var bookingpress_appointment_id = response.data.appointment_id; document.getElementById("bpa-thankyou-screen-div").innerHTML = response.data.thankyou_content; document.getElementById("bpa-failed-screen-div").innerHTML = response.data.failed_content; wp.hooks.doAction("bpa_calendar_js_init", bookingpress_appointment_id); if( null != document.getElementById("bookingpress_google_calendar") ){ document.getElementById("bookingpress_google_calendar").setAttribute( "href", response.data.bpa_google_cal_link ); } if( null != document.getElementById("bookingpress_yahoo_calendar") ) { document.getElementById("bookingpress_yahoo_calendar").setAttribute( "href", response.data.bpa_yahoo_cal_link ); } setTimeout(function(){ vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; },1000); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); vm.bkp_process_booking = false; vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }); } }, checkBeforeBookProAppointment(){ const vm = this; setTimeout(function(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_pro_before_book_appointment", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm.appointment_step_form_data ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "error"){ vm.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm.service_timing = []; } vm.isLoadBookingLoader = "0"; vm.isBookingDisabled = false; }else{ vm.bookingpress_remove_error_msg(); vm.bookingpress_process_to_book_appointment(); } }.bind(this) ) .catch( function (error) { vm.bookingpress_set_error_msg(error); }); },1500); }, bookingpress_book_appointment(){ const vm2 = this; vm2.isLoadBookingLoader = "1"; vm2.isBookingDisabled = true; /* for the coupon code error hide start */ if( 1 == vm2.is_coupon_activated ){ if( document.querySelector(".bpa-bs__coupon-validation.--is-error") != null ){ document.querySelector(".bpa-bs__coupon-validation.--is-error").style.display = "none"; } } /* for the coupon code error hide end */ vm2.bookingpress_process_to_book_appointment(); }, async bookingpress_process_to_book_appointment(){ const vm2 = this; if( "undefined" != typeof vm2.bkp_processing_token && true == vm2.bkp_processing_token ){ vm2.bkp_process_booking = true; return false; } if(vm2.is_display_error != "1"){ /* vm2.appointment_step_form_data.service_timing = vm2.service_timing */ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action:"bookingpress_book_appointment_booking", _wpnonce:bkp_wpnonce_pre_fetch }; postData.appointment_data = JSON.stringify( vm2.appointment_step_form_data ); const cdata = await this.bookingpress_reload_captcha(); let updateData = JSON.parse( postData.appointment_data ); for (let bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { updateData[ bookingpress_grecaptcha_field_v3 ] = cdata; } postData.appointment_data = JSON.stringify( updateData ); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { vm2.bkp_process_booking = false; var bookingpress_redirection_mode = "external_redirection"; if(bookingpress_redirection_mode == "external_redirection"){ if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else if(response.data.variant == "error"){ vm2.bookingpress_set_error_msg(response.data.msg); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else{ vm2.bookingpress_remove_error_msg(); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } setTimeout(function(){ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },2000); }else{ var bookingpress_uniq_id = vm2.appointment_step_form_data.bookingpress_uniq_id; if( "undefined" != typeof wp.hooks ){ wp.hooks.doAction("bookingpress_after_book_appointment"); } if(response.data.variant != "error"){ vm2.bookingpress_render_thankyou_content(); vm2.bookingpress_remove_error_msg(); if(response.data.variant == "redirect"){ vm2.bookingpress_external_html = response.data.redirect_data; setTimeout(function(){ var scripts = document.getElementById("bpa-external-script").querySelectorAll("script"); if(scripts.length > 0){ var text = scripts[scripts.length - 1].textContent; eval(text); } vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; },50); vm2.bookingpress_remove_error_msg(); }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "1"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed != "undefined" && response.data.is_transaction_completed == "0"){ vm2.bookingpress_remove_error_msg(); document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "block"; document.getElementById("bpa-thankyou-screen-div").style.display = "none"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }else if(response.data.variant == "redirect_url" && typeof response.data.is_transaction_completed == "undefined"){ vm2.bookingpress_remove_error_msg(); window.location.href = response.data.redirect_data; }else{ vm2.appointment_step_form_data.is_transaction_completed = 1; document.getElementById("bookingpress_booking_form_"+bookingpress_uniq_id).style.display = "none"; document.getElementById("bpa-failed-screen-div").style.display = "none"; document.getElementById("bpa-thankyou-screen-div").style.display = "block"; vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; vm2.appointment_step_form_data.is_transaction_completed = ""; vm2.bookingpress_set_error_msg(response.data.msg); if(response.data.error_type == "dayoff"){ vm2.service_timing = []; } } } }.bind(this) ) .catch( function (error) { let errorText = ("undefined" != typeof error.response.statusText ) ? error.response.statusText : error; vm2.bookingpress_set_error_msg( error.response.status + " " + errorText); vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; }); }else{ vm2.isLoadBookingLoader = "0"; vm2.isBookingDisabled = false; } }, inputFormat() { let text = this.appointment_step_form_data.card_number.split(" ").join(""); /* this.cardVdid is not formated in 4 spaces */ this.cardVadid = text; if (text.length > 0) { /* regExp 4 in 4 number add an space between */ text = text.match(new RegExp(/.{1,4}/, "g")).join(" ") /* accept only numbers */ .replace(new RegExp(/[^\d]/, "ig"), " "); } /* this.appointment_step_form_data.card_number is formated on 4 spaces */ this.appointment_step_form_data.card_number = text; /* after formatd they callback cardType for choose a type of the card */ this.GetCardType(this.cardVadid); }, /* loop for the next 9 years for expire data on credit card */ expirationDate() { let yearNow = new Date().getFullYear(); for (let i = yearNow; i < yearNow + this.timeToExpire; i++) { this.years.push({ year: i }); } }, validCreditCard(value) { let inputValidate = document.getElementById("cardNumber"); /* luhn algorithm */ let numCheck = 0, bEven = false; value = value.toString().replace(new RegExp(/\D/g, "")); for (let n = value.length - 1; n >= 0; n--) { let cDigit = value.charAt(n), digit = parseInt(cDigit, 10); if (bEven && (digit *= 2) > 9) digit -= 9; numCheck += digit; bEven = !bEven; } let len = value.length; /* true: return valid number */ /* this.cardType return true if have an valid number on regx array */ if (numCheck % 10 === 0 && len === 16 && this.cardType) { inputValidate.classList.remove("notValid"); inputValidate.classList.add("valid"); this.isBookingDisabled = false; } /* false: return not valid number */ else if (!(numCheck % 10 === 0) && len === 16) { inputValidate.classList.remove("valid"); inputValidate.classList.add("notValid"); this.isBookingDisabled = true; /* if not have number on input */ } else { inputValidate.classList.remove("valid"); inputValidate.classList.remove("notValid"); this.isBookingDisabled = false; } }, /* get the name of the card name */ GetCardType(number) { this.regx.forEach((item) => { if (number.match(item.re) != null) { this.cardType = item.logo; /* cClass add a class with the name of cardName to manipulate with css */ this.cClass = item.name.toLowerCase(); } else if (!number) { this.cardType = ""; this.cClass = ""; } }); /* after choose a cardtype return the number for the luhn algorithm */ this.validCreditCard(number); }, /* mouse down on btn */ mouseDw() { this.btnClassName = "btn__active"; }, /* mouse up on btn */ mouseUp() { this.btnClassName = ""; }, blr() { let cr = document.getElementsByClassName("card--credit__card")[0]; if( null != cr && "undefined" != typeof cr.classList ){ cr.classList.remove("cvv-active") } }, async bookingpress_set_timezone(){ const vm = this; var bookingpress_timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; let clientTimezoneOffset = new Date().getTimezoneOffset(); /** get client timezone offset in minutes from UTC 0. If client is in UTC -10:00 timezone, then this line will return 600 minutes. If timezone is in daylight saving timezone then it will return 540 minutes ( 09:00 hours ) */ let client_timezone_offset = -1 * ( clientTimezoneOffset / 60 ); /** converted minutes into hours - returns -2 */ let offset_minute = client_timezone_offset % 1; /** Retrieve remaining minutes in case if the minutes falls with decimal numbers */ let final_offset = clientTimezoneOffset; /* hours + "" + minute; /** concate the hours and minutes */ vm.bookingpress_timezone = bookingpress_timezone; vm.bookingpress_timezone_offset = final_offset; vm.appointment_step_form_data.selected_date = vm.get_formatted_date( new Date() ); let is_dst_time = 0; let current_datetime = new Date(); let jan1 = new Date( current_datetime.getFullYear(), 0, 1, 0, 0, 0, 0 ); let temp = jan1.toGMTString(); let jan2 = new Date( temp.substring(0, temp.lastIndexOf(" ") - 1 ) ); let std_tz_offset = ( jan1 - jan2 ) / ( 1000 * 60 * 60 ); let june1 = new Date(current_datetime.getFullYear(), 6, 1, 0, 0, 0, 0); temp = june1.toGMTString(); let june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); let daylight_time_offset = (june1 - june2) / (1000 * 60 * 60); if( std_tz_offset != daylight_time_offset ){ is_dst_time = 1; } vm.bookingpress_dst_timezone = is_dst_time; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var bookingpress_postdata = { action: "bookingpress_set_clients_timezone", clients_timezone: bookingpress_timezone, _wpnonce: bkp_wpnonce_pre_fetch }; return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( bookingpress_postdata ) ) .then( function (response){ } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_calculate_service_addons_price(service_id, service_name = "", service_price = "", service_price_without_currency = ""){}, bookingpress_calculate_service_addons_price_legacy(service_id, service_name = "", service_price = "", service_price_without_currency = ""){ const vm = this; vm.appointment_step_form_data.selected_service = service_id; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } if(service_name != "" && service_price != "" && service_price_without_currency != ""){ vm.appointment_step_form_data.selected_service_name = service_name; vm.appointment_step_form_data.selected_service_price = service_price; vm.appointment_step_form_data.service_price_without_currency = service_price_without_currency; } var postData = { action: "bookingpress_calculate_service_addons_price", selected_service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if(vm.appointment_step_form_data.selected_service == service_id){ vm.appointment_step_form_data.selected_service_price = response.data.selected_service_total_price; vm.appointment_step_form_data.total_payable_amount = response.data.price_without_currency; vm.appointment_step_form_data.total_payable_amount_with_currency = response.data.price_with_currency; vm.appointment_step_form_data.service_price_without_currency = response.data.price_without_currency; if(response.data.is_tax_calculated == 1){ vm.appointment_step_form_data.tax_amount = response.data.tax_amount; if(typeof vm.appointment_step_form_data.tax_amount_without_currency != "undefined") { vm.appointment_step_form_data.tax_amount_without_currency = response.data.tax_amount_without_currency; } } } } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_modify_front_dates_as_service(){ const vm = this; var service_id = vm.appointment_step_form_data.selected_service; if(vm.is_loaded_service_disabled_dates !== "undefined" && vm.is_loaded_service_disabled_dates != service_id){ vm.appointment_step_form_data.selected_date = vm.appointment_step_form_data.default_selected_date; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_change_front_calendar_dates", service_obj: vm.appointment_step_form_data, _wpnonce: bkp_wpnonce_pre }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ /* vm.days_off_disabled_dates = response.data.disabled_dates */ vm.appointment_step_form_data.selected_date = response.data.next_selected_date; vm.is_loaded_service_disabled_dates = service_id; } } .bind( this ) ) .catch( function (error) { console.log(error); }); } }, bookingpress_hide_show_extra_description(bookingpress_extra_service_id){ const vm = this; let selected_service_data = vm.bookingpress_all_services_data[ vm.appointment_step_form_data.selected_service ].service_extras; let selected_extra = selected_service_data[ bookingpress_extra_service_id ]; if( "undefined" != typeof selected_extra ){ if( "0" == selected_extra.bookingpress_is_display_description ){ selected_extra.bookingpress_is_display_description = "1"; } else { selected_extra.bookingpress_is_display_description = "0"; } } }, bookingpress_select_any_staffmember(){ const vm = this; let step_data = vm.bookingpress_sidebar_step_data["staffmembers"]; vm.appointment_step_form_data.select_any_staffmember = "true"; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = 0; vm.appointment_step_form_data.selected_staff_member_id = 0; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = true; if( vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 && "undefined" != typeof vm.appointment_step_form_data.bpa_after_select_datetime_available_staff ){ let time_details_arr = vm.appointment_step_form_data.bpa_after_select_datetime_available_staff; if( 1 < time_details_arr.available_staffs.length ){ let available_staff_id = time_details_arr.available_staffs; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null){ bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } let postData = { action: "bpa_assign_staffmember", slot_details: JSON.stringify( time_details_arr ), service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; } else { postData.selected_bring_members = 1; } axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if( "success" == response.data.variant ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = (typeof service_staff_details.bookingpress_service_price != "undefined")?service_staff_details.bookingpress_service_price:0; if( ("undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1) && ("undefined" != typeof time_details.happy_hour_data ) ) { vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } if( "undefined" != typeof vm.bookingpress_refresh_cart_details ){ vm.bookingpress_cart_item_calculations(); vm.bookingpress_refresh_cart_details( false, false, -1, true ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); } else { let available_staff_id = time_details_arr.available_staffs[0]; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = available_staff_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = 1; vm.appointment_step_form_data.selected_staff_member_id = available_staff_id; let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ available_staff_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); let event = vm.appointment_step_form_data.custom_service_duration_real_value; let bpa_selected_staffmember_id = vm.appointment_step_form_data.selected_staff_member_id; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { if( bpa_selected_staffmember_id != "" && ( "undefined" != typeof vm.any_staff_selected && vm.any_staff_selected == 1 ) ){ let staffmember_custom_data = item.staff_price_arr.find(staff => parseInt( staff.staff_id ) === parseInt( bpa_selected_staffmember_id) ); vm.appointment_step_form_data.selected_service_price = staffmember_custom_data.staff_price_with_currency; vm.appointment_step_form_data.service_price_without_currency = staffmember_custom_data.staff_price; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(staffmember_custom_data.staff_price); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } else { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } } }); } } else { if( "service" == step_data.next_tab_name && vm.bookingpress_sidebar_step_data[step_data.next_tab_name].is_display_step == 1 ){ vm.appointment_step_form_data.selected_service = ""; } vm.appointment_step_form_data.bpa_all_available_staff_member = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" && vm.appointment_step_form_data.selected_service == "" && vm.appointment_step_form_data.select_any_staffmember && vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected == true){ vm.appointment_step_form_data.bpa_anystaff_step_first_before_datetime = 1; vm.bookingpress_staffmembers_details.forEach(function(currentValue, index, arr){ vm.appointment_step_form_data.bpa_all_available_staff_member.push( currentValue.bookingpress_staffmember_id ); }); } for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; } else { vm.bpasortedServices[x].is_visible = false; } } } vm.bookingpress_step_navigation(step_data.next_tab_name, step_data.next_tab_name, step_data.previous_tab_name, 0); }, async bookingpress_select_staffmember(selected_staffmember_id, is_any_staff_option_selected = 0, event){ if(event){ event.preventDefault(); if(event.key === "Enter"){ if(event.target.classList.contains("bpa-front-staff-rat-cb__item")){ return; } } } const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; vm.v_calendar_blocked_dates = []; vm.v_calendar_attributes_current = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined" && ( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && vm.appointment_step_form_data.bpa_datetime_before_staffselection != 1 ) ){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } vm.appointment_step_form_data.bpa_available_staffwise_service = []; if( vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name == "datetime" ){ vm.appointment_step_form_data.bpa_datetime_hide_capacity = true; } if( (vm.bookingpress_sidebar_step_data.staffmembers.is_first_step == 1 && "datetime" == vm.bookingpress_sidebar_step_data.staffmembers.next_tab_name && vm.appointment_step_form_data.selected_service == "") && ( "undefined" == typeof vm.is_multi_staffmember_activate && vm.is_multi_staffmember_activate != 1 ) || ( "service" == vm.bookingpress_sidebar_step_data.datetime.next_tab_name && vm.appointment_step_form_data.selected_service == "" && (vm.appointment_step_form_data.hide_staff_selection == "true" || vm.appointment_step_form_data.hide_staff_selection == true)) ){ vm.appointment_step_form_data.bpa_datetime_after_service_selection = 1; let service_data_arr = vm.bookingpress_all_services_data; if (vm.bookingpress_staffmembers_details.length === 1) { selected_staffmember_id = vm.bookingpress_staffmembers_details[0].bookingpress_staffmember_id; } if( "any_staff" != selected_staffmember_id ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if( "undefined" != typeof service_arr.assigned_staffmembers ) { if (service_arr.assigned_staffmembers.includes(selected_staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); } } } } if( "any_staff" == selected_staffmember_id && "undefined" != vm.appointment_step_form_data.happy_hours_activated && 1 == vm.appointment_step_form_data.happy_hours_activated ){ for (let key in service_data_arr) { let service_arr = service_data_arr[key]; if ("undefined" != typeof service_arr.assigned_staffmembers) { for (let i = 0; i < vm.appointment_step_form_data.bpa_all_available_staff_member.length; i++) { let staffmember_id = vm.appointment_step_form_data.bpa_all_available_staff_member[i]; if (service_arr.assigned_staffmembers.includes(staffmember_id)) { vm.appointment_step_form_data.bpa_available_staffwise_service.push(service_arr.bookingpress_service_id); break; } } } } } } let service_id = vm.appointment_step_form_data.selected_service; let service_data = vm.bookingpress_all_services_data[ service_id ]; let use_legacy_any_staff = false; if( selected_staffmember_id == "any_staff" && "undefined" != typeof service_data && "undefined" != typeof service_data.bookingpress_service_duration_unit && "d" == service_data.bookingpress_service_duration_unit ){ use_legacy_any_staff = true; } vm.appointment_step_form_data.any_staff_selected = 0; if( true == use_legacy_any_staff ){ return await vm.bookingpress_select_staffmember_legacy( selected_staffmember_id, is_any_staff_option_selected ); } else if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.any_staff_selected = 1; if( "" != vm.appointment_step_form_data.selected_service ){ vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } let assigned_staffs = []; service_data.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); let choose_from_url = false; let assigned_updated_staffs = []; if( 0 < bookingpress_is_selected_staff_from_url && 0 < assigned_staffs.length ){ let staff_id_from_url = bookingpress_is_selected_staff_from_url; if( assigned_staffs.includes( staff_id_from_url ) ){ assigned_staffs = [staff_id_from_url]; choose_from_url = true; } } if( 1 == assigned_staffs.length ){ vm.appointment_step_form_data.any_staff_selected = 0; let selected_staffmember_id = ( true == choose_from_url ) ? assigned_staffs[0] : service_data.assigned_staffmembers[0]; /*Added for applying selected staff memebr price */ let service_staff_details = service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); /*Added for applying selected staff memebr price */ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.hide_capacity_text_flag = false; } else { vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; } } else { if( "service" == vm.bookingpress_current_tab ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; let assigned_staffs = []; for (let x in vm.bpasortedServices) { let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && false == elm.is_disabled ){ elm.assigned_staffmembers.forEach( function(staff_id){ assigned_staffs.push( staff_id ); }); vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if ("" == first_service_category) { first_service_category = elm.bookingpress_category_id; } } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } vm.appointment_step_form_data.available_staffs = assigned_staffs; vm.hide_capacity_text_flag = true; let hidden_category_for_staff = []; for (let ci in vm.service_categories) { let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; /* if (category_staff.indexOf(response.data.staffmember_id.toString()) < 0) { hidden_category_for_staff.push(category_id); } */ } if ("" != first_service_category) { for (let c in vm.bookingpress_all_categories) { vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if (current_category.category_id == first_service_category) { vm.bpa_select_category(current_category.category_id, current_category.category_name); } else { if (hidden_category_for_staff.indexOf(current_category.category_id.toString()) > -1) { vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; if( "undefined" != typeof vm.isLoadLocationLoader ){ vm.isLoadLocationLoader = "0"; } } vm.hide_capacity_text_flag = false; } } else { vm.hide_capacity_text_flag = false; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.available_staffs = []; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; if( vm.is_bring_anyone_with_you_activated == 1 ){ let service_min_capacity = selected_service_data.staff_member_details[ selected_staffmember_id].bookingpress_min_service_capacity; if( service_min_capacity != "undefined" && vm.appointment_step_form_data.bookingpress_selected_bring_members < service_min_capacity ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = service_min_capacity; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; vm.bookingpress_update_staffmember_data( vm.appointment_step_form_data.bookingpress_selected_bring_members ); } } let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let consider_staff_price = true; if( ( typeof vm.appointment_step_form_data.bpa_datetime_after_staffselection !== "undefined" && vm.appointment_step_form_data.bpa_datetime_after_staffselection == 1 ) && ( typeof vm.appointment_step_form_data.is_happy_hours_applied !== "undefined" && vm.appointment_step_form_data.is_happy_hours_applied == 1 ) ) { consider_staff_price = false; } if ( true == consider_staff_price ) { let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } } let step_data = "staffmembers"; let f = 0; let is_club_staff = "0"; if(typeof vm.appointment_step_form_data.is_club_staff != "undefined" && vm.appointment_step_form_data.is_club_staff == "1"){ is_club_staff = "1"; } if( "staffmembers" == vm.bookingpress_current_tab ){ if(is_club_staff == "0"){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, async bookingpress_select_staffmember_legacy(selected_staffmember_id, is_any_staff_option_selected = 0){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } var bookingpress_is_selected_staff_from_url = "0"; vm.v_calendar_disable_dates = []; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( selected_staffmember_id ) > -1 ){ return false; } if(typeof vm.appointment_step_form_data.cart_items == "undefined"){ vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } if(selected_staffmember_id == "any_staff" ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_any_staffmember_id", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; if( "undefined" != vm.appointment_step_form_data.bookingpress_selected_bring_members && 0 < vm.appointment_step_form_data.bookingpress_selected_bring_members ){ postData.selected_bring_members = vm.appointment_step_form_data.bookingpress_selected_bring_members; if( vm.is_bring_anyone_with_you_activated == 1 ){ vm.bookingpress_repeat_custom_form_fields( vm.appointment_step_form_data.selected_service ); } } else { postData.selected_bring_members = 1; } return axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ if( 1 > response.data.staffmember_id ){ for( let s in vm.bookingpress_staffmembers_details ){ let staffmember_details = vm.bookingpress_staffmembers_details[s]; let staffmember_selected_services = staffmember_details.assigned_service_details.includes(vm.appointment_step_form_data.selected_service); if( staffmember_selected_services ){ let staffmember_id = staffmember_details.bookingpress_staffmember_id; if( "undefined" != typeof vm.bookingpress_disabled_staffmember && vm.bookingpress_disabled_staffmember.indexOf( staffmember_id ) < 0 ){ response.data.staffmember_id = staffmember_id; } } } } vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.selected_staff_member_id = response.data.staffmember_id; vm.appointment_step_form_data.is_staff_exists = "1"; let set_service_visibility = false; if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ response.data.staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } else { if( "staffmembers" == vm.bookingpress_current_tab && "" != vm.appointment_step_form_data.selected_staff_member_id ){ set_service_visibility = true; } } if( "service" == vm.bookingpress_current_tab || true == set_service_visibility ){ let f = 0; vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( response.data.staffmember_id.toString() ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ response.data.staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } if( "" != first_service_category ){ for( let c of vm.service_categories ){ if( c.bookingpress_category_id == first_service_category ){ vm.bpa_select_category( c.bookingpress_category_id, c.bookingpress_category_name ); break; } } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( response.data.staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ vm.bookingpress_all_categories[c].is_visible = true; let current_category = vm.bookingpress_all_categories[c]; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } vm.isLoadServiceLoader = "0"; /* vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); */ } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( response.data.staffmember_id ); } } vm.bpa_select_category( "" ); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }else{ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = selected_staffmember_id; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.is_any_staff_option_selected = is_any_staff_option_selected; vm.appointment_step_form_data.selected_staff_member_id = selected_staffmember_id; if( vm.is_staff_first_step == 1 ){ vm.appointment_step_form_data.selected_category = "-1"; vm.appointment_step_form_data.selected_service = ""; let visible_service_ids = []; let first_service_category = ""; for( let x in vm.bpasortedServices ){ let elm = vm.bpasortedServices[x]; if( "undefined" != typeof elm.assigned_staffmembers && -1 < elm.assigned_staffmembers.indexOf( selected_staffmember_id ) && false == elm.is_disabled ){ vm.bpasortedServices[x].is_visible = true; vm.bpasortedServices[x].hide_for_staff = false; if( "" == first_service_category ){ first_service_category = elm.bookingpress_category_id; } vm.appointment_step_form_data.base_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; vm.bpasortedServices[x].service_price_without_currency = vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price; let selected_staffprice = vm.bookingpress_price_with_currency_symbol( vm.bpasortedServices[x].staff_member_details[ selected_staffmember_id ].bookingpress_service_price ); vm.bpasortedServices[x].bookingpress_service_price = selected_staffprice; visible_service_ids.push( elm.bookingpress_service_id ); } else { vm.bpasortedServices[x].is_visible = false; vm.bpasortedServices[x].hide_for_staff = true; } } let hidden_category_for_staff = []; for( let ci in vm.service_categories ){ let current_category = vm.service_categories[ci]; let category_id = current_category.bookingpress_category_id; let category_staff = current_category.bookingpress_staffmembers; if( category_staff.indexOf( selected_staffmember_id.toString() ) < 0 ){ hidden_category_for_staff.push( category_id ); } } if( "" != first_service_category ){ for( let c in vm.bookingpress_all_categories ){ let current_category = vm.bookingpress_all_categories[c]; vm.bookingpress_all_categories[c].is_visible = true; if( current_category.category_id == first_service_category ){ vm.bpa_select_category( current_category.category_id, current_category.category_name ); } else { if( hidden_category_for_staff.indexOf( current_category.category_id.toString() ) > -1 ){ vm.bookingpress_all_categories[c].is_visible = false; } } } } } else { if( "" != vm.appointment_step_form_data.selected_service ){ let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_staff_details = selected_service_data.staff_member_details[ selected_staffmember_id ]; let selected_staff_price = service_staff_details.bookingpress_service_price; vm.appointment_step_form_data.service_price_without_currency = selected_staff_price; vm.appointment_step_form_data.base_price_without_currency = selected_staff_price; vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol( selected_staff_price ); } } let step_data = "staffmembers"; let f = 0; if( "staffmembers" == vm.bookingpress_current_tab ){ vm.bookingpress_step_navigation(vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].next_tab_name, vm.bookingpress_sidebar_step_data[step_data].previous_tab_name, 1); } else { if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ); } } } vm.bpa_select_category( "" ); }, bookingpress_show_bring_anyone_on_staffselection( selected_staffmember_id ){ const vm = this; /** Enable Bring Any one if the service has only 1 capacity but the selected staff has more that 1 capacity */ let is_bring_anone_displayed = document.querySelectorAll(".--bpa-sao-guest-module"); if( "" == selected_staffmember_id || 1 > selected_staffmember_id ){ return false; } let selected_service = vm.appointment_step_form_data.selected_service; if( "" == selected_service ){ return false; } let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; if( staffmember_id == selected_staffmember_id ){ let assigned_service_price_list = current_staffmember.assigned_service_price_details; let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( "undefined" == typeof vm.bookingpress_bring_anyone_with_you_details[selected_service] ){ vm.bookingpress_bring_anyone_with_you_details[selected_service] = { "bookingpress_service_id": selected_service, "bookingpress_service_max_capacity": parseInt(max_capacity), "bookingpress_service_min_capacity": parseInt(min_capacity), }; } else { vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_max_capacity = parseInt(max_capacity); vm.bookingpress_bring_anyone_with_you_details[selected_service].bookingpress_service_min_capacity = parseInt(min_capacity); } vm.appointment_step_form_data.service_max_capacity = parseInt(max_capacity); vm.appointment_step_form_data.service_min_capacity = parseInt(min_capacity); } } }, bookingpress_is_in_viewport(element) { const rect = element.getBoundingClientRect(); return ( rect.bottom > 0 && rect.right > 0 && rect.top < (window.innerHeight || document.documentElement.clientHeight) && rect.left < (window.innerWidth || document.documentElement.clientWidth) ); }, bookingpress_close_extra_drawer(){ const vm = this; if( "undefined" != typeof vm.bpa_show_extras_drawer && false == vm.bpa_show_extras_drawer ){ return; } let selected_service = vm.appointment_step_form_data.selected_service; let selected_service_focus = document.getElementById("bap-service-" + selected_service); const target = document.querySelector(".bpa-front-dc--service-body"); if(selected_service_focus && this.bookingpress_is_in_viewport(target)){ selected_service_focus.focus(); } vm.appointment_step_form_data.selected_service = ""; vm.appointment_step_form_data.selected_service_name = ""; vm.appointment_step_form_data.selected_service_price = ""; vm.appointment_step_form_data.service_price_without_currency = ""; if( "" != selected_service ){ let selected_service_data = vm.bookingpress_all_services_data[ selected_service ]; let service_extras = ( "undefined" != typeof selected_service_data.service_extras ) ? selected_service_data.service_extras : false; if( false != service_extras ){ for( let se in service_extras ){ vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_is_selected = false; vm.appointment_step_form_data.bookingpress_selected_extra_details[ se ].bookingpress_selected_qty = 1; } } } vm.bookingpress_open_extras_drawer = "false"; document.body.classList.remove( "--bpa-open-advance-drawer" ); /** reset bring anyone details */ if( 1 == vm.is_bring_anyone_with_you_activated ){ vm.appointment_step_form_data.bookingpress_selected_bring_members = 1; let members = vm.appointment_step_form_data.bookingpress_selected_bring_members; let uniqueId = vm.appointment_step_form_data.bookingpress_uniq_id; let uniqueId2 = uniqueId.split("").reverse().join(""); let salt = `${uniqueId}${members}${uniqueId2}`; let token = btoa( salt ); vm.appointment_step_form_data.multiple_quantity_token = token; } }, bookingpress_get_service_capacity(){ var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } const vm = this; var postData = { action: "bookingpress_get_service_max_capacity", service_id: vm.appointment_step_form_data.selected_service, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.appointment_step_form_data.service_max_capacity = response.data.max_capacity } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_service_advance_see_less(){ const vm = this; vm.service_advance_see_less = "1"; vm.bookingpress_close_extra_drawer(); }, bookingpress_load_more_extras(){ const vm = this; if(vm.is_load_more_extras == "0"){ vm.is_load_more_extras = "1"; }else{ vm.is_load_more_extras = "0"; } }, bpa_focus_select_elm( $el ){ const vm = this; setTimeout(function(){ let elm = $el.querySelector(".el-input.is-focus");// .el-input.is-focus"); let parentNode = vm.BPAGetParents( elm, ".bpa-bd-fields--sel-container" ); if( parentNode.length > 0 ){ let firstParent = parentNode[0]; firstParent.classList.add( "bpa-sel--focus" ); } },100); }, bpa_remove_focus_select_elm($el){ let elm = document.querySelector( ".bpa-sel--focus" ); }, bookingpress_selectpicker_set_position( flag ){ const vm = this; if( true == flag ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( document.querySelector(".bpa-focused-select") != null && is_admin_bar_visible ) { setTimeout(function(){ let top_pos = document.querySelector(".bpa-focused-select").style.top; top_pos = parseInt( top_pos.replace("px","") ); document.querySelector(".bpa-focused-select").style.top = ( top_pos + 32 ) + "px"; },10); } if( document.querySelector(".bpa-focused-select") != null ) { setTimeout(function(){ const allselectcontainer = document.querySelectorAll(".bpa-bd-fields--sel-container"); if(typeof allselectcontainer != "undefined"){ var has_added = false; allselectcontainer.forEach((selcontItem) => { var questyle = selcontItem.querySelector(".bpa-focused-select"); if(typeof questyle != "undefined"){ const display = window.getComputedStyle(questyle).display; if(display != "none" && !has_added){ selcontItem.classList.add( "bpa-sel--focus" ); has_added = true; } } }); } },100); } } if( false == flag ){ if( document.querySelector(".bpa-bd-fields--sel-container") != null ) { let elm = document.querySelector(".bpa-bd-fields--sel-container") const range_inputs = document.querySelectorAll(".bpa-bd-fields--sel-container"); for (const range_input of range_inputs) { range_input.classList.remove( "bpa-sel--focus" ); } } } }, bookingpress_set_datepicker_position( event ){ let popperElm = document.querySelector(".bpa-custom-datepicker"); if( popperElm != null ){ let is_admin_bar_visible = ( document.getElementById("wpadminbar") != null && document.getElementById("wpadminbar").getBoundingClientRect().width > 0 && document.getElementById("wpadminbar").getBoundingClientRect().height > 0 ) ? true : false; if( is_admin_bar_visible ){ setTimeout(function(){ let top_pos = popperElm.style.top; top_pos = parseInt( top_pos.replace("px","") ); popperElm.style.top = ( top_pos + 32 ) + "px"; },10); } } }, bookingpress_get_service_categories_from_staffmembers(){ const vm = this; var bkp_wpnonce_pre = "4ac51a523d"; var bkp_wpnonce_pre_fetch = document.getElementById("_wpnonce"); if(typeof bkp_wpnonce_pre_fetch=="undefined" || bkp_wpnonce_pre_fetch==null) { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre; } else { bkp_wpnonce_pre_fetch = bkp_wpnonce_pre_fetch.value; } var postData = { action: "bookingpress_get_service_cat_details", staffmember_id: vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id, _wpnonce: bkp_wpnonce_pre_fetch }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { if(response.data.variant == "success"){ vm.service_categories = response.data.service_categories_data; var bookingpress_first_cat_id = response.data.first_cat_id; vm.services_data = []; setTimeout(function(){ vm.selectStepCategory(bookingpress_first_cat_id); }, 500); } } .bind( this ) ) .catch( function (error) { console.log(error); }); }, bookingpress_update_staffmember_data( number_of_guests, selected_service_id = "" ){ const vm = this; vm.bookingpress_disabled_staffmember = []; let selected_service = vm.appointment_step_form_data.selected_service; if( selected_service == "" || ( (selected_service_id != "") && (selected_service != selected_service_id) ) ){ selected_service = selected_service_id; } let guests_count = number_of_guests - 1; let staffmember_details = vm.bookingpress_staffmembers_details; for( let s in staffmember_details ){ vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = true; let current_staffmember = staffmember_details[s]; let staffmember_id = current_staffmember.bookingpress_staffmember_id; let assigned_service_price_list = current_staffmember.assigned_service_price_details; if( "undefined" != typeof assigned_service_price_list[ selected_service ] ){ let max_capacity = assigned_service_price_list[ selected_service ].assigned_service_capacity; if( max_capacity < (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } if( vm.is_bring_anyone_with_you_activated == "1" ){ let min_capacity = assigned_service_price_list[ selected_service ].assigned_service_min_capacity; if( min_capacity > (guests_count + 1) ){ if( "undefined" == typeof vm.bookingpress_disabled_staffmember ){ vm.bookingpress_disabled_staffmember = []; } vm.bookingpress_disabled_staffmember.push( staffmember_id ); vm.bookingpress_staffmembers_details[s].is_display_staff_with_flag = false; if( vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id == staffmember_id ){ vm.appointment_step_form_data.bookingpress_selected_staff_member_details.selected_staff_member_id = ""; vm.appointment_step_form_data.selected_staff_member_id = ""; vm.appointment_step_form_data.bookingpress_selected_staff_member_details.staff_member_id = ""; } } } } } }, bookingpress_close_extra_drawer_on_mouseup(){ const vm = this; window.addEventListener( "mouseup", function(e){ if( null != document.querySelector(".bpa-front-dc--service-body") ){ let div = document.querySelector(".bpa-front-dc--service-body"); let scrollbarWidth = div.offsetWidth - div.clientWidth; let scrollbarHeight = div.offsetHeight - div.clientHeight; let isVerticalScrollbarClick = (e.offsetX >= div.clientWidth && e.offsetX <= div.offsetWidth ); let isHorizontalScrollbarClick = e.offsetY >= div.clientHeight; if (scrollbarWidth > 0 && isVerticalScrollbarClick) { return; } } let elem = e.target; let htmlWidth = document.querySelector("html").offsetWidth; if( htmlWidth < e.clientX ){ return; } let parentNode = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options" ); let parentNodeBawy = vm.BPAGetParents( elem, ".bpa-fm--service__advance-options-popper" ); let is_mob = false; let bpa_parent_container = document.querySelector( ".bpa-frontend-main-container" ); let is_visible = true; if( null != bpa_parent_container && 1 > bpa_parent_container.offsetWidth ){ is_visible = false; } if( parentNode.length < 1 && parentNodeBawy.length < 1 && "true" == vm.bookingpress_open_extras_drawer && "service" == vm.bookingpress_current_tab && "true" == vm.bookingpress_open_extras_drawer && true == is_visible ){ let allow_close_drawer = wp.hooks.applyFilters( "bpa_allow_close_draer", true, is_visible, elem, parentNode, parentNodeBawy ); if( true == allow_close_drawer ){ let mob_extra = document.querySelector( ".bpa-fm--service__advance-options.--bpa-is-mob" ); if( mob_extra == null ){ vm.bookingpress_close_extra_drawer(); } else { let mob_pos = mob_extra.getBoundingClientRect(); if( mob_pos.width == 0 && mob_pos.height == 0 ){ vm.bookingpress_close_extra_drawer(); } } } } }); }, BPAGetParents( elem, selector ){ if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } var parents = []; for (; elem && elem !== document; elem = elem.parentNode) { if (selector) { if (elem.matches(selector)) { parents.push(elem); } continue; } parents.push(elem); } return parents; }, bookingpress_get_formatted_datetime(event,field_meta_key,is_time_enabled) { if(event != null){ if(is_time_enabled == true) { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_datetime(event); } else { this.appointment_step_form_data["form_fields"][field_meta_key] = this.get_formatted_date(event); } } }, openExtraServicePopover() { // Access the popover methods directly const vm = this; this.$nextTick( () =>{ vm.$refs.extra_service_desc_popover.doToggle(); }); }, openRecurringSessionPopover() { const vm = this; this.$nextTick( () =>{ // Access the popover methods directly vm.$refs.recurring_session_desc_popover.doToggle(); }); }, BPACustomerFileUpload(response, file, fileList){ const vm = this; let ref = response.reference; if( response.error == 1 ){ vm.$refs[ ref ][0].$options.parent.validateMessage = response.msg; vm.$refs[ ref ][0].$options.parent.validateState = "error"; vm.$refs[ ref ][0].clearFiles(); } else { vm.$refs[ref][0].$options.parent.validateMessage = ""; vm.$refs[ref][0].$options.parent.validateState = ""; const uploadUrl = response.upload_url; const fileRef = response.file_ref; if (Array.isArray(vm.appointment_step_form_data[fileRef])) { vm.appointment_step_form_data[fileRef].push(uploadUrl); } else if (vm.appointment_step_form_data[fileRef]) { vm.appointment_step_form_data[fileRef] = [ vm.appointment_step_form_data[fileRef], uploadUrl, ]; } else { vm.appointment_step_form_data[fileRef] = [uploadUrl]; } vm.appointment_step_form_data.form_fields[fileRef] = vm.appointment_step_form_data[fileRef]; } }, BPACustomerFileUploadError(err, file, fileList){ /** Need to handle error but currently no error is reaching to this function */ if( file.status == "fail" ){ console.log( err ); } }, BPACustomerhandleFileExceed(files, fileList ) { const vm = this; vm.bookingpress_set_error_msg( vm.appointment_step_form_data.bpa_fileupload_max_limit_reach_msg ); }, BPACustomerFileUploadRemove( file, fileList ){ const vm = this; let response = file.response; vm.appointment_step_form_data[ response.file_ref ] = ""; vm.appointment_step_form_data.form_fields[ response.file_ref ] = ""; let postData = { action:"bpa_remove_form_file", _wpnonce: "4ac51a523d", uploaded_file_name: response.upload_file_name }; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function( response ){ }).catch( function( error ){ }); }, BPAConvertBytesToMB( bytes){ return (bytes / (1024 * 1024)).toFixed(0); }, bookingpress_reset_selected_timeslot_data(){ const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_after_service_selection && "1" == vm.appointment_step_form_data.bpa_datetime_after_service_selection ){ return; } vm.appointment_step_form_data.selected_start_time = ""; }, bookingpress_reset_custom_duration_data() { const vm = this; if( "undefined" != typeof vm.appointment_step_form_data.bpa_datetime_before_staffselection && 1 != vm.appointment_step_form_data.bpa_datetime_before_staffselection ){ vm.appointment_step_form_data.custom_service_duration_value = ""; vm.appointment_step_form_data.custom_service_duration_real_value = ""; vm.appointment_step_form_data.custom_service_real_price ="" ; vm.appointment_step_form_data.selected_date = ""; vm.appointment_step_form_data.selected_start_time = ""; } if(vm.is_coupon_activated == "1" && vm.appointment_step_form_data.coupon_code != ""){ vm.bookingpress_remove_coupon_code(); } ; }, bookingpress_step_navigator( current_tab, next_tab, previous_tab ){ let vm = this; let is_strict_validate = false; let current_selected_tab = vm.bookingpress_current_tab; let sidebar_step_data = vm.bookingpress_sidebar_step_data; let sidebar_keys = Object.keys( sidebar_step_data ); let current_tab_pos = sidebar_keys.indexOf( current_selected_tab ); /** Current Tab Position */ let selected_tab_pos = sidebar_keys.indexOf( current_tab ); /** Clicked Tab Position */ if( selected_tab_pos < current_tab_pos ){ vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab, 0 ); } else { vm.bookingpress_step_navigation( current_tab, next_tab, previous_tab ); } }, bookingpress_change_service_extras_event( is_checked ){ const vm = this; }, bookingpress_change_service_extras_qty( is_checked ){ const vm = this; vm.$forceUpdate(); }, bookingpress_set_extra_service_error_msg(error_msg){ const vm = this; vm.is_display_extra_service_error = 1; vm.extra_service_error_msg = error_msg; setTimeout(function(){ vm.bookingpress_remove_extra_service_error_msg(); },6000); }, bookingpress_remove_extra_service_error_msg(){ const vm = this; vm.is_display_extra_service_error = "0"; vm.extra_service_error_msg = ""; }, bookingpress_change_custom_duration(event) { const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_day_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_day_loader = true; vm.bpa_skip_loading_csd_slot = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, bookingpress_change_custom_duration_first(event){ const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_loader = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, handle_staff_key_events(event){ const focusableItems = document.querySelectorAll(".bpa-front-module--staff-item-row .bpa-front-sm--col:not([style*='display: none']) .bpa-front-sm-card"); // Update with your actual class let currentIndex = -1; // Find the currently focused item focusableItems.forEach((item, index) => { if (item === document.activeElement) { currentIndex = index; } }); if (currentIndex === -1) return; // No focusable item is selected if (event.key === "ArrowRight") { event.preventDefault(); // Move to the next item let nextIndex = (currentIndex + 1) % focusableItems.length; focusableItems[nextIndex].focus(); } else if(event.key === "ArrowDown"){ event.preventDefault(); let nextIndex = (currentIndex + 3) % focusableItems.length; focusableItems[nextIndex].focus(); }else if (event.key === "ArrowLeft" ) { event.preventDefault(); // Move to the previous item let prevIndex = (currentIndex - 1 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if(event.key === "ArrowUp"){ event.preventDefault(); let prevIndex = (currentIndex - 3 + focusableItems.length) % focusableItems.length; focusableItems[prevIndex].focus(); }else if( "Tab" == event.key && event.shiftKey && 0 === currentIndex ){ event.preventDefault(); let focusElement = ""; focusElement = document.querySelector(".bpa-front-tabs--panel-body.__bpa-is-active .bpa_search_service_data_cls .bpa_search_cls .el-input__inner"); if(focusElement == null){ focusElement = document.querySelector(".bpa-front-tab-menu--item.__bpa-is-active"); } if(typeof this.bpaMoveFocusToPreviousElement !== "undefined"){ this.bpaMoveFocusToPreviousElement( this.$refs.staffmemberItemsGroup, focusElement); } } }, focusFirstStaff(){ this.$nextTick( () =>{ const is_any_staff_col = document.querySelectorAll(".bpa-front-module--staff-item-row .--bpa-sm-is-any-staff-col .bpa-front-sm-card"); if(is_any_staff_col.length){ is_any_staff_col[0].focus(); }else if( this.$refs.staffmember.length ){ this.$refs.staffmember[0].focus(); } }); }, bookingpress_change_custom_duration(event) { const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_day_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_day_loader = true; vm.bpa_skip_loading_csd_slot = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, bookingpress_change_custom_duration_first(event){ const vm = this; vm.bookingpress_custom_service_durations_slot.forEach(function(item,index,arr){ if(item.value == event ) { vm.appointment_step_form_data.selected_service_price = item.service_price; vm.appointment_step_form_data.service_price_without_currency = item.service_price_without_currency; vm.appointment_step_form_data.custom_service_duration_real_value = item.real_value; vm.appointment_step_form_data.custom_service_real_price = item.real_price; if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.appointment_step_form_data.selected_service_price = vm.bookingpress_price_with_currency_symbol(item.service_price_without_currency); vm.appointment_step_form_data.selected_service_duration = (item.real_value)/(24*60); vm.appointment_step_form_data.selected_date = ""; } } }); if(vm.appointment_step_form_data.selected_service_duration_unit == "d"){ vm.is_display_custom_duration_loader = true; vm.v_calendar_attributes = []; vm.bookingpress_booking_before_block_date = []; vm.bookingpress_disable_date(); }else{ vm.is_display_custom_duration_loader = true; let selected_service = app.appointment_step_form_data.selected_service; let selected_date = app.appointment_step_form_data.selected_date; vm.bookingpress_disable_date_xhr_v2( selected_service, selected_date, true ); } }, loadCaptchaJs(is_listing = false){ const vm = this var script_url = "https://www.google.com/recaptcha/api.js?hl=nl&render=6LfhuZkbAAAAABH5vT_KSnfZuSHl2aGYWFncFZC1" if(is_listing == false) { script_url = script_url+"&onload=render_bookingpress_captcha_v3" } var script = document.createElement("script") script.src = script_url script.async = true var bookingpress_captcha_v3 = "bookingpress_captcha_"+bookingpress_uniq_id_js_var vm[bookingpress_captcha_v3] = "" var dsize = "normal" window.addEventListener("load", function() { (function($) { jQuery(document).ready(function (){ if( !window["bookingpress_recaptcha_v3"] ){ window["bookingpress_recaptcha_v3"] = {} } window["bookingpress_recaptcha_v3"][bookingpress_captcha_v3] = { size : dsize }; }); })(jQuery); }) document.head.appendChild(script) }, initMap(){ const vm = this var bookingpress_grecaptcha_site_key = "6LfhuZkbAAAAABH5vT_KSnfZuSHl2aGYWFncFZC1" var bookingpress_grecaptcha_language = "nl" if(vm.enable_google_captcha == "true" && bookingpress_grecaptcha_site_key != "" && bookingpress_grecaptcha_language != "") { vm.loadCaptchaJs() } window.render_bookingpress_captcha_v3 = function() { if (typeof window["bookingpress_captcha_v3"] != "undefined" && typeof grecaptcha != "undefined") { grecaptcha.ready(function() { grecaptcha.execute(bookingpress_grecaptcha_site_key).then(function(bookingpress_recaptcha_token) { for (var bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { var bookingpress_grecaptcha_fields_v3 = bookingpress_grecaptcha_field_v3 var bookingpress_grecaptcha_size = window["bookingpress_recaptcha_v3"][bookingpress_grecaptcha_field_v3]["size"] bookingpress_grecaptcha_fields_v3 = grecaptcha.render(bookingpress_grecaptcha_field_v3, { "sitekey": bookingpress_grecaptcha_site_key, "size": bookingpress_grecaptcha_size, }) vm["appointment_step_form_data"][bookingpress_grecaptcha_field_v3] = bookingpress_recaptcha_token } }); }); }else{ var bookingpress_captcha_int = 0 var bookingpress_captcha_interval = setInterval(function(){ if (typeof(window["bookingpress_recaptcha_v3"]) != "undefined"){ grecaptcha.ready(function() { grecaptcha.execute(bookingpress_grecaptcha_site_key).then(function(bookingpress_recaptcha_token) { for (var bookingpress_grecaptcha_field_v3 in window["bookingpress_recaptcha_v3"]) { var bookingpress_grecaptcha_fields_v3 = bookingpress_grecaptcha_field_v3; var bookingpress_grecaptcha_size = window["bookingpress_recaptcha_v3"][bookingpress_grecaptcha_field_v3]["size"] bookingpress_grecaptcha_fields_v3 = grecaptcha.render(bookingpress_grecaptcha_field_v3, { "sitekey": bookingpress_grecaptcha_site_key, "size": bookingpress_grecaptcha_size, }) vm["appointment_step_form_data"][bookingpress_grecaptcha_field_v3] = bookingpress_recaptcha_token clearInterval(bookingpress_captcha_interval) } }); }); }else{ bookingpress_captcha_int++; if(bookingpress_captcha_int == 10){ clearInterval(bookingpress_captcha_interval) } } }, 1500) } } }, bookingpress_reload_captcha() { var bookingpress_grecaptcha_site_key = "6LfhuZkbAAAAABH5vT_KSnfZuSHl2aGYWFncFZC1"; if (typeof(window["bookingpress_recaptcha_v3"]) != "undefined" && typeof(grecaptcha) != "undefined") { return new Promise( (res,rej) => { grecaptcha.ready( () =>{ grecaptcha.execute(bookingpress_grecaptcha_site_key).then(function(bookingpress_recaptcha_token) { return res(bookingpress_recaptcha_token); }) } ); } ); } }, start(e) { const vm = this; e.preventDefault(); let metakey = e.target.getAttribute("data-metakey" ); vm.appointment_step_form_data.drawing[metakey] = true; }, stop(e) { const vm = this; let metakey = e.target.getAttribute("data-metakey" ); vm.appointment_step_form_data.drawing[metakey] = false; vm.appointment_step_form_data.prevX[metakey] = vm.appointment_step_form_data.prevY[metakey] = null; let signatureValue = e.target.toDataURL(); vm.appointment_step_form_data.form_fields[ e.target.getAttribute("data-metakey" ) ] = signatureValue; }, draw(e) { const vm = this; let metakey = e.target.getAttribute("data-metakey" ); if (!vm.appointment_step_form_data.drawing[metakey]) return; let clientX, clientY; if (e.type === 'touchmove') { clientX = e.touches[0].clientX; clientY = e.touches[0].clientY; } else { clientX = e.clientX; clientY = e.clientY; } const canvas = document.querySelector("canvas[data-metakey=\"" + metakey + "\" ]"); if(canvas && metakey != ""){ const rect = canvas.getBoundingClientRect(); vm.currX = clientX - rect.left; vm.currY = clientY - rect.top; if (vm.appointment_step_form_data.prevX[metakey] === null || vm.appointment_step_form_data.prevY[metakey] === null) { vm.appointment_step_form_data.prevX[metakey] = vm.currX; vm.appointment_step_form_data.prevY[metakey] = vm.currY; } if(typeof vm.appointment_step_form_data.ctx[metakey] === "undefined"){ vm.appointment_step_form_data.ctx[metakey] = canvas.getContext("2d"); } vm.appointment_step_form_data.ctx[metakey].beginPath(); vm.appointment_step_form_data.ctx[metakey].moveTo(vm.appointment_step_form_data.prevX[metakey], vm.appointment_step_form_data.prevY[metakey]); vm.appointment_step_form_data.ctx[metakey].lineTo(vm.currX, vm.currY); vm.appointment_step_form_data.ctx[metakey].strokeStyle = 'black'; vm.appointment_step_form_data.ctx[metakey].lineWidth = 2; vm.appointment_step_form_data.ctx[metakey].stroke(); vm.appointment_step_form_data.ctx[metakey].closePath(); vm.appointment_step_form_data.prevX[metakey] = vm.currX; vm.appointment_step_form_data.prevY[metakey] = vm.currY; } }, clearSignature(e) { let metakey = e.target.getAttribute("data-metakey" ); const vm = this; const canvas = document.querySelector("canvas[data-metakey=\"" + metakey + "\" ]"); vm.appointment_step_form_data.ctx[metakey].clearRect(0, 0, canvas.width, canvas.height); vm.signature = ""; vm.appointment_step_form_data.prevX[metakey] = vm.appointment_step_form_data.prevY[metakey] = null; vm.appointment_step_form_data.form_fields[ metakey ] = ""; vm.appointment_step_form_data.drawing[metakey] = false; vm.appointment_step_form_data.prevX[metakey] = vm.appointment_step_form_data.prevY[metakey] = null; vm.appointment_step_form_data.form_fields[ e.target.getAttribute("data-metakey" ) ] = ""; }, }, }); } //# sourceURL=bookingpress_elements_locale-js-after /* ]]> */