<\/svg>","next_tab_name":"datetime","next_tab_label":"","previous_tab_name":"","validate_fields":["selected_service"],"auto_focus_tab_callback":[],"validation_msg":{"selected_service":"S\u00e9lectionnez un service pour prendre rendez-vous."},"is_allow_navigate":1,"is_navigate_to_next":false,"is_display_step":1,"sorting_key":"service_selection"},"datetime":{"tab_name":"Data e ora","tab_value":"datetime","tab_icon":" <\/svg>","next_tab_name":"basic_details","previous_tab_name":"service","auto_focus_tab_callback":{"bookingpress_disable_date":[]},"validate_fields":["selected_date","selected_start_time"],"validation_msg":{"selected_date":"Seleziona la data dell'appuntamento per procedere con la prenotazione.","selected_start_time":"Seleziona una fascia oraria per procedere con la prenotazione."},"is_allow_navigate":0,"is_display_step":1,"is_navigate_to_next":false,"sorting_key":"datetime_selection"},"basic_details":{"tab_name":"Informazioni di base","tab_value":"basic_details","tab_icon":" <\/g><\/svg>","auto_focus_tab_callback":[],"next_tab_name":"summary","previous_tab_name":"datetime","validate_fields":[],"is_allow_navigate":0,"is_display_step":1,"is_navigate_to_next":false,"sorting_key":"basic_details_selection"},"summary":{"tab_name":"Riepilogo","tab_value":"summary","tab_icon":" <\/svg>","next_tab_name":"summary","auto_focus_tab_callback":[],"previous_tab_name":"basic_details","validate_fields":[],"is_allow_navigate":0,"is_display_step":1,"is_navigate_to_next":false,"sorting_key":"summary_selection"}},"isLoadClass":1,"bookingpress_external_html":"","bookingpress_is_display_external_html":true,"bookingpress_decimal_points":2,"bookingpress_currency_separator":"comma-dot","bookingpress_currency_name":"CHF","bookingpress_currency_symbol":"CHF","bookingpress_currency_symbol_position":"before","bookingpress_custom_comma_separator":"","bookingpress_custom_thousand_separator":"","bookingpress_selected_date_range":[],"vue_tel_mode":"international","vue_tel_auto_format":true,"show_paypal_popup_button":"false","paypal_button_loader":"false","paypal_success_url":"","paypal_cancel_url":"","paypal_booking_form_redirection_mode":""}; bookingpress_return_data["jsCurrentDate"] = new Date("2025/05/18 12:24:50"); bookingpress_return_data["jsCurrentDateFormatted"] = new Date ("2025-05-18 00:00:00"); if( "Invalid Date" == bookingpress_return_data["jsCurrentDateFormatted"] ){ bookingpress_return_data["jsCurrentDateFormatted"] = new Date( "2025-05-18T00:00:00+00:00" ); } bookingpress_return_data["jsCurrentOnlyDate"] = bookingpress_return_data["jsCurrentDateFormatted"].toISOString().split("T")[0]; bookingpress_return_data["appointment_step_form_data"]["stime"] = 1747586011; bookingpress_return_data["appointment_step_form_data"]["spam_captcha"] = ""; bookingpress_return_data["hide_category_service"] = "0"; bookingpress_return_data["default_date_format"] = "MM/DD/YYYY"; bookingpress_return_data["customer_details_rule"] = {"customer_firstname":[{"required":true,"message":"Entrez votre prenom","trigger":"blur"}],"customer_lastname":[{"required":true,"message":"Inserisci il tuo cognome","trigger":"blur"}],"customer_email":[{"required":true,"message":"Entrez votre adresse email","trigger":"blur"},{"type":"email","message":"Inserisci un indirizzo email valido","trigger":"blur"}],"customer_phone":[{"required":true,"message":"Entrez votre num\u00e9ro de t\u00e9l\u00e9phone","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":"Prenom","placeholder":"Entrez votre prenom","error_message":"Entrez votre prenom","is_hide":false,"field_position":2,"v_model_value":"customer_firstname"},{"id":3,"field_name":"lastname","field_type":"Text","is_edit":false,"is_required":true,"label":"Nom","placeholder":"Entrez votre nom","error_message":"Inserisci il tuo cognome","is_hide":false,"field_position":3,"v_model_value":"customer_lastname"},{"id":4,"field_name":"email_address","field_type":"Email","is_edit":false,"is_required":true,"label":"Adresse email","placeholder":"Entrez votre adresse email","error_message":"Entrez votre adresse email","is_hide":false,"field_position":4,"v_model_value":"customer_email"},{"id":5,"field_name":"phone_number","field_type":"Dropdown","is_edit":false,"is_required":true,"label":"Num\u00e9ro de t\u00e9l\u00e9phone","placeholder":"Inserisci il tuo numero di telefono","error_message":"Entrez votre num\u00e9ro de t\u00e9l\u00e9phone","is_hide":false,"field_position":5,"v_model_value":"customer_phone"},{"id":6,"field_name":"note","field_type":"Textarea","is_edit":false,"is_required":false,"label":"Note","placeholder":"Entrez les d\u00e9tails de la note","error_message":"Entrez une note pour le rendez-vous","is_hide":false,"field_position":6,"v_model_value":"appointment_note"}]; 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"] = "it"; bookingpress_return_data["appointment_step_form_data"]["bookingpress_uniq_id"] = "6829d19264631"; var bookingpress_captcha_key = "bookingpress_captcha_6829d19264631"; 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 = "MM/DD/YYYY"; return moment(String(value)).locale("it_IT").format(default_date_format) }, bookingpress_format_time: function(value){ var default_time_format = "HH:mm"; return moment(String(value), "HH:mm:ss").locale("it_IT").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(); this.bookingpress_onload_func();this.appointment_step_form_data.bookingpress_customer_timezone = new Date().getTimezoneOffset();if(this.hide_category_service == "1" || this.is_service_loaded_from_url == "1"){ this.bookingpress_current_tab = "datetime"; } 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; ; } }, 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 = "0e3f4a9c25"; 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); } }; 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 = "0e3f4a9c25"; 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 = "0e3f4a9c25"; 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 ); 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; if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) { browserName = "Chrome"; browserVersion = browserAgent.substring(OffsetVersion + 7); } else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) { browserName = "Microsoft Internet Explorer"; browserVersion = browserAgent.substring(OffsetVersion + 5); } else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) { browserName = "Firefox"; } 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); } 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; } } 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; }, 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; } } 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; } } } } 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; } 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]; } 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 = "0e3f4a9c25"; 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("2025-05-18 12:24:50"); 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; vm.appointment_step_form_data.selected_start_time = ""; vm.appointment_step_form_data.selected_end_time = ""; } 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_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 = ""; if(is_move_to_next === "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); } var selected_date = vm.appointment_step_form_data.selected_date; var formatted_date = vm.get_formatted_date(selected_date); vm.bookingpress_remove_error_msg(); }, 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); }, 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("2025-05-18 12:24:50"); } 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 = "0e3f4a9c25"; 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.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; 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); }.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.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 = "2025-05-18"; 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; ; 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("Sélectionnez un service pour prendre rendez-vous."); vm.current_selected_tab_id = 1; return false; }else{ ; 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("Seleziona una fascia oraria per procedere con la prenotazione."); 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("Qualcosa è andato storto") } } }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("Seleziona una fascia oraria per procedere con la prenotazione."); 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("Seleziona una fascia oraria per procedere con la prenotazione."); 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; } }, 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; } 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(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_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 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 ){ const vm = this; let use_legacy = "false"; let current_tab = vm.bookingpress_sidebar_step_data[vm.bookingpress_current_tab].next_tab_name; if( (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 ) ){ let appointment_selected_date = vm.appointment_step_form_data.store_selected_date || vm.appointment_step_form_data.selected_date; let selected_token_data = vm.v_calendar_time_token_data[ appointment_selected_date ][0]; var bkp_wpnonce_pre = "0e3f4a9c25"; 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 = "2"; 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 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; 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_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 + " to " + 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; if( true == is_overnight_booking ){ 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 { 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 = "2"; 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 + " to " + 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 = "0e3f4a9c25"; 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 = ""; ; axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { let request_time = new Date().getTime() - startTime; 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 ); } 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":"+00: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":"+00:00"} ); if( "0" == vcal_data_v2 ){ vm.v_calendar_blocked_dates.push( vcal_date_v2 ); } } } 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 ); } if( "undefined" != typeof vm.is_bookingpress_token_updated && true == vm.is_bookingpress_token_updated ){ vm.bookingpress_update_timestep_token( true ); } }.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 = "0e3f4a9c25"; 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; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { 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":"+00: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":"+00: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 ); 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 = "0e3f4a9c25"; 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; postData.appointment_data_obj = JSON.stringify(vm.appointment_step_form_data); axios.post( appoint_ajax_obj.ajax_url, Qs.stringify( postData ) ) .then( function (response) { 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":"+00: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("it_IT").format(default_time_format) }, bookingpress_categories_timeslots( timeslot_details ){ let afternoon_slot_timings = parseInt( "12" ); let evening_slot_timings = parseInt( "16" ); let night_slot_timings = parseInt( "20" ); 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 night_time = service_timings_data.night_time; let night_time_sorted = []; for( let x in night_time ){ night_time_sorted.push( night_time[x] ); } night_time_sorted.sort( (a,b) => { return ( parseInt( a.counter_pos ) < parseInt( b.counter_pos ) ) ? -1 : 1; } ); service_timings_data.night_time = night_time_sorted; return service_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 = "0e3f4a9c25"; 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 = ""; ; 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)){ vm.days_off_disabled_dates = ""; 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 ); } } 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; } 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; 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 { 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 = "0e3f4a9c25"; 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 ); 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 ){ 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; } 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; } } } else { 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 ); } } } } }); }, 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 ){ 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 ); } } } }, 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 ){ 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"; 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 = ""; 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" } else { vm.bookingpress_container_dynamic_class = ""; vm.bookingpress_footer_dynamic_class = ""; } } }); }, 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((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("2025-05-18 12:24:50"); 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; } } 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"); } } ; }, 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; } } } }, }, }); }