%PDF- %PDF-
Direktori : /home/forge/takeaseat.eco-n-tech.co.uk/.nuxt/dist/server/pages/booking/ |
Current File : //home/forge/takeaseat.eco-n-tech.co.uk/.nuxt/dist/server/pages/booking/_slug.js |
exports.ids = [48,23,31,35]; exports.modules = { /***/ 170: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/SummaryStep.vue?vue&type=template&id=2fdf21e8& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._ssrNode("<span class=\"block text-center text-3xl font-bold mb-6\">Summary</span> <p>You are nearly there. Please carefully check all details are correct before proceeding to payment.</p> <div class=\"my-2 mb-6\"><div class=\"grid grid-cols-3 gap-3 border-b-2 border-gray py-6\"><span class=\"uppercase text-sm\">Therapist</span> <span class=\"col-span-2 text-sm\">"+_vm._ssrEscape(_vm._s(_vm.therapist.user.full_name))+"</span></div> "+((_vm.loading == false)?("<div class=\"border-b-2 border-gray py-4\"><div class=\"grid grid-cols-3 gap-3 py-2\"><span class=\"uppercase text-sm\">No. Of Sessions</span> <span class=\"text-sm\">"+_vm._ssrEscape(_vm._s(Object.keys(_vm.selected_slots).length))+"</span></div> "+(_vm._ssrList((_vm.sessions),function(session,key){return ("<div><div class=\"grid grid-cols-6 gap-3 py-2\"><span class=\"col-span-2 uppercase text-sm\">"+_vm._ssrEscape("Session "+_vm._s((key+1)))+"</span> <span class=\"col-span-3 text-sm\">"+_vm._ssrEscape(_vm._s(_vm.$moment.utc(session.slot.start).format('D MMM Y - H:mm')+' - '+_vm.$moment.utc(session.slot.end).format('H:mm')))+"</span> <div class=\"col-span-1 flex items-center justify-end\"><span class=\"text-sm\">"+_vm._ssrEscape(_vm._s(session.item_total.formatted))+"</span></div></div> <div class=\"grid grid-cols-3 gap-3 py-2\"><span class=\"uppercase text-sm\">Session Type</span> <span class=\"text-sm\">"+_vm._ssrEscape(_vm._s(session.session_name))+"</span> <div class=\"flex items-center justify-end\"><button type=\"button\" class=\"text-sm uppercase underline\">Change</button></div></div></div>")}))+"</div>"):"<!---->")+" "+((_vm.loading == false)?("<div class=\"grid grid-cols-2 gap-2 border-b-2 border-gray py-6\"><span class=\"uppercase text-sm\">Total Price</span> <span class=\"uppercase font-bold flex items-center justify-end\">"+_vm._ssrEscape(_vm._s(_vm.totals.formatted))+"</span></div>"):("<div class=\"flex items-center justify-center py-6\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" class=\"animate-spin -ml-1 mr-3 h-5 w-5 text-current\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" class=\"opacity-25\"></circle> <path fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" class=\"opacity-75\"></path></svg>\n Loading...\n </div>"))+"</div> <div class=\"flex flex-col items-center justify-center\"><button"+(_vm._ssrAttr("disabled",_vm.selected_slots.length < 1))+" type=\"button\" class=\"btn btn-primary btn-small rounded-full w-full sm:w-auto\">"+((_vm.working == false)?("<span>"+_vm._ssrEscape(_vm._s(_vm.button_text))+"</span>"):("<span class=\"flex items-center justify-center\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" class=\"animate-spin -ml-1 mr-3 h-5 w-5 text-current\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" class=\"opacity-25\"></circle> <path fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" class=\"opacity-75\"></path></svg> <span>Processing</span></span>"))+"</button> <button type=\"button\" class=\"mt-6 uppercase text-blue-light text-sm\">Go Back</button></div>")])} var staticRenderFns = [] // CONCATENATED MODULE: ./components/blocks/Booking/SummaryStep.vue?vue&type=template&id=2fdf21e8& // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/SummaryStep.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var SummaryStepvue_type_script_lang_js_ = ({ props: { value: { required: true }, selected_slots: { type: Object, required: true }, working: { type: Boolean, required: true }, button_text: { type: String, required: true }, nextStep: { type: Function, required: true } }, data() { return { loading: true }; }, computed: { therapist() { return this.$store.state.booking.therapist; }, sessions() { return this.$store.state.booking.summary.sessions; }, totals() { return this.$store.state.booking.summary.totals; }, selected_session() { return this.$store.state.booking.summary.session; } }, async mounted() { await this.$store.dispatch('booking/summary/get', { user_id: this.therapist.user.id, sessions: this.selected_slots, sessions_count: Object.keys(this.selected_slots).length }).then(() => { this.loading = false; }); }, methods: { goBack() { this.$emit("input", 1); } } }); // CONCATENATED MODULE: ./components/blocks/Booking/SummaryStep.vue?vue&type=script&lang=js& /* harmony default export */ var Booking_SummaryStepvue_type_script_lang_js_ = (SummaryStepvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(1); // CONCATENATED MODULE: ./components/blocks/Booking/SummaryStep.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( Booking_SummaryStepvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "79b9c0db" ) /* harmony default export */ var SummaryStep = __webpack_exports__["default"] = (component.exports); /***/ }), /***/ 195: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/RegisterStep.vue?vue&type=template&id=1efbf83d& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._ssrNode("<span class=\"block text-center text-3xl font-bold mb-6\">Create Account</span> "),_c('ValidationObserver',{ref:"registerForm"},[_c('form',{attrs:{"role":"form","method":"POST"},on:{"submit":function($event){$event.preventDefault();return _vm.userRegister($event)}}},[_c('ValidationProvider',{attrs:{"rules":"required","name":"first_name"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"First Name"}},[_c('t-input',{attrs:{"type":"text","placeholder":"First Name"},model:{value:(_vm.register.first_name),callback:function ($$v) {_vm.$set(_vm.register, "first_name", $$v)},expression:"register.first_name"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"rules":"required","name":"last_name"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Last Name"}},[_c('t-input',{attrs:{"type":"text","placeholder":"Last Name"},model:{value:(_vm.register.last_name),callback:function ($$v) {_vm.$set(_vm.register, "last_name", $$v)},expression:"register.last_name"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"rules":"required","name":"email"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Email"}},[_c('t-input',{attrs:{"type":"email","placeholder":"name@email.com"},model:{value:(_vm.register.email),callback:function ($$v) {_vm.$set(_vm.register, "email", $$v)},expression:"register.email"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"rules":"required|phone_number","name":"phone"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Phone"}},[_c('t-input',{attrs:{"type":"tel","placeholder":"+44"},model:{value:(_vm.register.phone),callback:function ($$v) {_vm.$set(_vm.register, "phone", $$v)},expression:"register.phone"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"rules":"required|password:@password_confirmation","name":"password"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Password"}},[_c('t-input',{attrs:{"type":"password","placeholder":"Password"},model:{value:(_vm.register.password),callback:function ($$v) {_vm.$set(_vm.register, "password", $$v)},expression:"register.password"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"name":"password_confirmation","rules":"required"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Confirm Password"}},[_c('t-input',{attrs:{"type":"password","placeholder":"Confirm Password"},model:{value:(_vm.register.password_confirmation),callback:function ($$v) {_vm.$set(_vm.register, "password_confirmation", $$v)},expression:"register.password_confirmation"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('div',{staticClass:"flex flex-col items-center justify-center"},[_c('button',{staticClass:"btn btn-primary btn-small rounded-full",attrs:{"type":"submit"}},[(_vm.register_working == false)?_c('span',[_vm._v("Create Account & Proceed")]):_c('span',{staticClass:"flex items-center justify-center"},[_c('svg',{staticClass:"animate-spin -ml-1 mr-3 h-5 w-5 text-current",attrs:{"xmlns":"http://www.w3.org/2000/svg","fill":"none","viewBox":"0 0 24 24"}},[_c('circle',{staticClass:"opacity-25",attrs:{"cx":"12","cy":"12","r":"10","stroke":"currentColor","stroke-width":"4"}}),_vm._v(" "),_c('path',{staticClass:"opacity-75",attrs:{"fill":"currentColor","d":"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}})]),_vm._v(" "),_c('span',[_vm._v("Processing")])])])])],1)]),_vm._ssrNode(" <div class=\"relative text-center mt-8 mb-6\"><span class=\"absolute z-10 top-1/2 left-0 transform -translate-y-1/2 block w-full h-0.5 bg-gray\"></span> <span class=\"relative z-20 inline-block px-6 bg-white uppercase font-bold text-lg\">Or Login</span></div> "),_c('ValidationObserver',{ref:"loginForm"},[_c('form',{attrs:{"role":"form","method":"POST"},on:{"submit":function($event){$event.preventDefault();return _vm.userLogin($event)}}},[_c('ValidationProvider',{attrs:{"rules":"required","name":"email"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Email"}},[_c('t-input',{attrs:{"type":"email","placeholder":"name@email.com"},model:{value:(_vm.login.email),callback:function ($$v) {_vm.$set(_vm.login, "email", $$v)},expression:"login.email"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('ValidationProvider',{attrs:{"rules":"required","name":"password"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Password"}},[_c('t-input',{attrs:{"type":"password","placeholder":"Password"},model:{value:(_vm.login.password),callback:function ($$v) {_vm.$set(_vm.login, "password", $$v)},expression:"login.password"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('div',{staticClass:"flex flex-col items-center justify-center"},[_c('button',{staticClass:"btn btn-primary btn-small rounded-full",attrs:{"type":"submit"}},[(_vm.login_working == false)?_c('span',[_vm._v("Log-in & Proceed")]):_c('span',{staticClass:"flex items-center justify-center"},[_c('svg',{staticClass:"animate-spin -ml-1 mr-3 h-5 w-5 text-current",attrs:{"xmlns":"http://www.w3.org/2000/svg","fill":"none","viewBox":"0 0 24 24"}},[_c('circle',{staticClass:"opacity-25",attrs:{"cx":"12","cy":"12","r":"10","stroke":"currentColor","stroke-width":"4"}}),_vm._v(" "),_c('path',{staticClass:"opacity-75",attrs:{"fill":"currentColor","d":"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}})]),_vm._v(" "),_c('span',[_vm._v("Processing")])])]),_vm._v(" "),_c('button',{staticClass:"mt-6 uppercase text-blue-light text-sm",attrs:{"type":"button"},on:{"click":_vm.goBack}},[_vm._v("Go Back")])])],1)])],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./components/blocks/Booking/RegisterStep.vue?vue&type=template&id=1efbf83d& // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/RegisterStep.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var RegisterStepvue_type_script_lang_js_ = ({ props: { value: { required: true } }, data() { return { register_working: false, login_working: false, register: { first_name: '', last_name: '', email: '', phone: '', password: '', password_confirmation: '' }, login: { email: '', password: '' } }; }, methods: { async userRegister() { this.$refs.registerForm.validate().then(success => { if (!success) { return; } this.register_working = true; this.$axios.post('/auth/register', { first_name: this.register.first_name, last_name: this.register.last_name, email: this.register.email, phone: this.register.phone, password: this.register.password, password_confirmation: this.register.password_confirmation }).then(response => { if (response.status == 200) { this.$auth.loginWith('laravelJWT', { data: { email: this.register.email, password: this.register.password } }).then(response => { if (response.status == 200) { this.register_working = false; this.$emit("input", 4); } }); } }).catch(error => { this.$refs.registerForm.setErrors(error.response.data.errors); this.register_working = false; }); }); }, async userLogin() { this.$refs.loginForm.validate().then(success => { if (!success) { return; } this.login_working = true; this.$auth.loginWith('laravelJWT', { data: this.login }).then(response => { if (response.status == 200) { if (this.login.remember_me == true) { this.$auth.$storage.setCookie(`_remember.${this.$auth.options.defaultStrategy}`, this.$auth.strategy.token.get(), { maxAge: 2147483647 }); } this.$emit("input", 4); } }).catch(error => { this.login_working = false; this.$toast.error(error.response.data.message).goAway(1500); }); }); }, goBack() { this.$emit("input", 2); } } }); // CONCATENATED MODULE: ./components/blocks/Booking/RegisterStep.vue?vue&type=script&lang=js& /* harmony default export */ var Booking_RegisterStepvue_type_script_lang_js_ = (RegisterStepvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(1); // CONCATENATED MODULE: ./components/blocks/Booking/RegisterStep.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( Booking_RegisterStepvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "71fd6196" ) /* harmony default export */ var RegisterStep = __webpack_exports__["default"] = (component.exports); /***/ }), /***/ 196: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/PaymentStep.vue?vue&type=template&id=ccb0a27a& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._ssrNode("<span class=\"block text-center text-3xl font-bold mb-6\">Payment</span> <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-y-3 mb-6\"><div class=\"leading-6 text-center sm:text-left\">"+_vm._ssrEscape(_vm._s(Object.keys(_vm.selected_slots).length)+" x Sessions with "+_vm._s(_vm.therapist.user.full_name))+"</div> <div class=\"flex items-center justify-center sm:justify-end text-2xl font-bold\">"+_vm._ssrEscape(_vm._s(_vm.totals.formatted))+"</div></div> <div id=\"payment-request-wrapper\""+(_vm._ssrStyle(null,null, { display: (_vm.isPaymentRequestAllowed) ? '' : 'none' }))+"><div class=\"w-full flex items-center justify-center mb-8\"><div id=\"payment-request-button\" class=\"w-full\"></div></div> <div class=\"relative text-center my-6\"><span class=\"absolute z-10 top-1/2 left-0 transform -translate-y-1/2 block w-full h-0.5 bg-gray\"></span> <span class=\"relative z-20 inline-block px-6 bg-white uppercase\">Or Pay with Card</span></div></div> "+((_vm.isPaymentRequestAllowed == false)?("<div class=\"relative text-center my-6\"><span class=\"absolute z-10 top-1/2 left-0 transform -translate-y-1/2 block w-full h-0.5 bg-gray\"></span> <span class=\"relative z-20 inline-block px-6 bg-white uppercase\">Pay with Card</span></div>"):"<!---->")+" "+((_vm.payment_methods.length > 0)?("<div class=\"grid grid-cols-1 gap-y-2 mb-6\">"+(_vm._ssrList((_vm.payment_methods),function(payment_method,key){return ("<label"+(_vm._ssrAttr("for",'payment_method-'+key))+(_vm._ssrClass("relative grid grid-cols-2 bg-white border border-black border-opacity-10 py-2 px-3 pl-12 rounded-lg transition cursor-pointer",_vm.selected_payment_method == payment_method.id ? 'bg-gray' : ''))+"><input type=\"radio\" name=\"payment_methods\""+(_vm._ssrAttr("id",'payment_method-'+key))+(_vm._ssrAttr("value",payment_method.id))+(_vm._ssrAttr("checked",_vm._q(_vm.selected_payment_method,payment_method.id)))+" class=\"hidden\"> <div"+(_vm._ssrClass("absolute top-0 left-0.5 w-10 h-full bg-center bg-contain",'card-icon-'+payment_method.card.brand))+"></div> <span class=\"text-sm\">"+_vm._ssrEscape(_vm._s(payment_method.billing_details.name))+"</span> <div class=\"text-sm flex items-center justify-end\"><span class=\"mx-2\">"+_vm._ssrEscape("****"+_vm._s(payment_method.card.last4))+"</span> <span class=\"mx-2\">"+_vm._ssrEscape(_vm._s(payment_method.card.exp_month)+"/"+_vm._s(payment_method.card.exp_year))+"</span></div></label>")}))+"</div>"):"<!---->")+" "),_vm._ssrNode("<div"+(_vm._ssrStyle(null,null, { display: (_vm.selected_payment_method == null) ? '' : 'none' }))+">","</div>",[_c('ValidationObserver',{ref:"paymentForm"},[_c('form',{attrs:{"role":"form","method":"POST"},on:{"submit":function($event){$event.preventDefault();return _vm.submitForm($event)}}},[_c('ValidationProvider',{attrs:{"rules":"required"},scopedSlots:_vm._u([{key:"default",fn:function(ref){ var errors = ref.errors; return [_c('t-input-group',{attrs:{"label":"Name on Card"}},[_c('t-input',{attrs:{"type":"text","placeholder":"Name on Card"},model:{value:(_vm.card_name),callback:function ($$v) {_vm.card_name=$$v},expression:"card_name"}}),_vm._v(" "),(errors[0])?_c('span',{staticClass:"field-invalid"},[_vm._v(_vm._s(errors[0]))]):_vm._e()],1)]}}])}),_vm._v(" "),_c('t-input-group',{attrs:{"label":"Card Information"}},[_c('div',{staticClass:"px-4 py-4 bg-white border border-black border-opacity-20 rounded-xl",attrs:{"id":"card-element"}})]),_vm._v(" "),_c('div',{staticClass:"flex flex-col items-center justify-center sm:px-10"},[_c('button',{staticClass:"btn btn-primary btn-small rounded-full w-full sm:w-auto",attrs:{"disabled":_vm.working == true,"type":"submit"}},[(_vm.working == false)?_c('span',[_vm._v("Pay Now")]):_c('span',{staticClass:"flex items-center justify-center"},[_c('svg',{staticClass:"animate-spin -ml-1 mr-3 h-5 w-5 text-current",attrs:{"xmlns":"http://www.w3.org/2000/svg","fill":"none","viewBox":"0 0 24 24"}},[_c('circle',{staticClass:"opacity-25",attrs:{"cx":"12","cy":"12","r":"10","stroke":"currentColor","stroke-width":"4"}}),_vm._v(" "),_c('path',{staticClass:"opacity-75",attrs:{"fill":"currentColor","d":"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}})]),_vm._v(" "),_c('span',[_vm._v("Processing")])])]),_vm._v(" "),_c('button',{staticClass:"mt-6 uppercase text-blue-light text-sm",attrs:{"type":"button"},on:{"click":_vm.goBack}},[_vm._v("Go Back")])])],1)])],1),_vm._ssrNode(" "+((_vm.selected_payment_method)?("<div class=\"flex flex-col items-center justify-center sm:px-10\"><button class=\"mb-2 uppercase text-blue-light text-sm\">Use New Card</button> <button"+(_vm._ssrAttr("disabled",_vm.working == true))+" type=\"button\" class=\"btn btn-primary btn-small rounded-full w-full sm:w-auto\">"+((_vm.working == false)?("<span>Pay Now</span>"):("<span class=\"flex items-center justify-center\"><svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" class=\"animate-spin -ml-1 mr-3 h-5 w-5 text-current\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" class=\"opacity-25\"></circle> <path fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" class=\"opacity-75\"></path></svg> <span>Processing</span></span>"))+"</button> <button type=\"button\" class=\"mt-6 uppercase text-blue-light text-sm\">Go Back</button></div>"):"<!---->")+" "),_vm._ssrNode("<p class=\"text-sm text-center mt-6 text-black text-opacity-75\">","</p>",[_vm._ssrNode("By subscribing to Take a Seat you are agreeing to all site "),_c('NuxtLink',{staticClass:"text-blue-light hover:underline",attrs:{"to":"/terms-conditions","target":"_blank"}},[_vm._v("Terms and Conditions")]),_vm._ssrNode(". Please read carefully before continuing.")],2)],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./components/blocks/Booking/PaymentStep.vue?vue&type=template&id=ccb0a27a& // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/blocks/Booking/PaymentStep.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var PaymentStepvue_type_script_lang_js_ = ({ props: { value: { required: true }, selected_slots: { type: Object, required: true } }, data() { return { error: null, working: false, stripe: null, card: {}, selected_payment_method: null, isPaymentRequestAllowed: false, paymentRequest: {}, card_name: null }; }, computed: { totals() { return this.$store.state.booking.summary.totals; }, therapist() { return this.$store.state.booking.therapist; }, payment_methods() { return this.$store.state.account.billing.paymentMethods; }, setup_intent() { return this.$store.state.account.billing.setupIntent; }, connect_id() { return this.$store.state.booking.payment.connect_id; } }, async mounted() { await this.$store.dispatch('account/billing/setupIntent'); await this.$store.dispatch('account/billing/getPaymentMethods'); this.mountCard(); }, methods: { mountCard() { const elements = this.$stripe.elements(); this.card = elements.create('card', { style: { base: { fontSize: '15px', fontFamily: 'Poppins, sans-serif' } } }); this.getPaymentRequest(); this.card.mount('#card-element'); }, submitForm() { this.$refs.paymentForm.validate().then(success => { if (!success) { return; } this.confirmCardSetup(); }); }, async getPaymentRequest() { this.paymentRequest = await this.$stripe.paymentRequest({ country: 'GB', currency: 'gbp', total: { amount: parseInt(this.totals.amount), label: 'Takeaseat Booking with ' + this.therapist.user.full_name }, requestPayerName: true, requestPayerEmail: true }); this.mountPaymentButton(); }, async mountPaymentButton() { const elements = this.$stripe.elements(); let prButton = elements.create('paymentRequestButton', { paymentRequest: this.paymentRequest }); // Check the availability of the Payment Request API first. this.paymentRequest.canMakePayment().then(function (result) { if (result) { this.isPaymentRequestAllowed = true; prButton.mount('#payment-request-button'); } else { this.isPaymentRequestAllowed = false; } }.bind(this)); this.paymentRequest.on('paymentmethod', function (event) { event.complete('success'); this.createPayment(event.paymentMethod.id); }.bind(this)); }, async confirmCardSetup() { this.working = true; const { setupIntent, error } = await this.$stripe.confirmCardSetup(this.setup_intent, { payment_method: { card: this.card, billing_details: { name: this.card_name } } }); if (error) { this.$toast.error(error.message).goAway(3000); await this.$store.dispatch('account/billing/setupIntent'); this.working = false; } else { this.createPayment(setupIntent.payment_method); } }, async createPayment(payment_method) { this.working = true; await this.$axios.post('/booking/payment/' + this.therapist.user.id, { grand_total: this.totals.amount, sessions: this.selected_slots, sessions_count: Object.keys(this.selected_slots).length, payment_method: payment_method }).then(response => { if (response.status == 200) { this.createBooking(response.data); } }).catch(error => { this.working = false; this.$toast.error(error.response.data.message).goAway(3000); }); }, async createBooking(data) { this.working = true; await this.$axios.post('/booking/create', { sessions: this.selected_slots, amount: this.totals.amount, therapist_id: this.therapist.id, charges: data.charges, transfer: data.transfer }).then(response => { if (response.status == 200) { this.$store.commit('booking/success/setBookings', response.data); this.$router.push({ path: '/booking/success' }); } }).catch(error => { this.$toast.error(error.response.message).goAway(1000); this.working = false; }); }, goBack() { this.$emit("input", 2); } } }); // CONCATENATED MODULE: ./components/blocks/Booking/PaymentStep.vue?vue&type=script&lang=js& /* harmony default export */ var Booking_PaymentStepvue_type_script_lang_js_ = (PaymentStepvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(1); // CONCATENATED MODULE: ./components/blocks/Booking/PaymentStep.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( Booking_PaymentStepvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "dbe2298a" ) /* harmony default export */ var PaymentStep = __webpack_exports__["default"] = (component.exports); /***/ }), /***/ 258: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/booking/_slug.vue?vue&type=template&id=abfa9c62& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"page-wrapper"},[_vm._ssrNode("<div class=\"py-10 sm:py-20 bg-white\"><div class=\"relative z-20 text-center\"><figure class=\"relative inline-block w-32 mb-4 sm:mb-8\"><div"+(_vm._ssrClass("absolute top-0 left-0 w-full h-full border-15",'tas-border-'+_vm.therapist.colour))+"></div> <img"+(_vm._ssrAttr("src",_vm.therapist.user.photo_url))+(_vm._ssrAttr("alt",_vm.therapist.user.first_name))+" class=\"block w-full\"></figure> <h1><span class=\"block w-full text-5xl md:text-7xl leading-none \">"+_vm._ssrEscape(_vm._s(_vm.therapist.user.first_name))+"</span> <span class=\"block w-full uppercase text-2xl\">"+_vm._ssrEscape(_vm._s(_vm.therapist.user.last_name))+"</span></h1></div></div> "),_vm._ssrNode("<div class=\"bg-gray px-4 py-6 sm:py-10 sm:px-8 md:py-20\">","</div>",[_vm._ssrNode("<div class=\"max-w-lg w-full mx-auto\">","</div>",[_vm._ssrNode("<div class=\"py-8 px-6 sm:py-12 sm:px-16 rounded-xl bg-white\">","</div>",[(_vm.step == 1)?[_c('ValidationObserver',{ref:"bookingStepOne"},[_c('form',{attrs:{"role":"form","method":"POST"},on:{"submit":function($event){$event.preventDefault();return _vm.summaryStep($event)}}},[_c('span',{staticClass:"block text-center text-3xl font-bold mb-6"},[_vm._v("Your Session")]),_vm._v(" "),_c('t-calendar',{attrs:{"multiple":"","minDate":_vm.minDate,"maxDate":_vm.maxDate,"yearsPerView":1,"disabledDates":_vm.getDisabledDates,"inline":""},on:{"user-date-changed":_vm.changeDates},model:{value:(_vm.selected_dates),callback:function ($$v) {_vm.selected_dates=$$v},expression:"selected_dates"}}),_vm._v(" "),_c('div',{staticClass:"mb-6"},[_c('span',{staticClass:"block font-bold mb-3"},[_vm._v("Select time")]),_vm._v(" "),(_vm.loading == true)?_c('div',{staticClass:"flex items-center justify-center"},[_c('svg',{staticClass:"animate-spin -ml-1 mr-3 h-5 w-5 text-current",attrs:{"xmlns":"http://www.w3.org/2000/svg","fill":"none","viewBox":"0 0 24 24"}},[_c('circle',{staticClass:"opacity-25",attrs:{"cx":"12","cy":"12","r":"10","stroke":"currentColor","stroke-width":"4"}}),_vm._v(" "),_c('path',{staticClass:"opacity-75",attrs:{"fill":"currentColor","d":"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}})]),_vm._v("\n Loading Times...\n ")]):(_vm.availability.length !== 0 || _vm.availability.length == undefined)?_c('div',_vm._l((_vm.availability),function(date,key){return _c('div',{key:key,staticClass:"mb-3"},[(date.length > 0)?[_c('span',{staticClass:"block mb-2 font-bold"},[_vm._v(_vm._s(_vm.$moment(key).format('DD/MM/Y')))]),_vm._v(" "),_c('div',{staticClass:"grid grid-cols-2 sm:grid-cols-3 gap-3"},_vm._l((date),function(slot,index){return _c('label',{key:index,staticClass:"border border-black px-3 py-2 rounded-md cursor-pointer text-center text-sm",class:_vm.selected_slots[key].slot == slot.start ? 'bg-yellow' : ''},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.selected_slots[key].slot),expression:"selected_slots[key].slot"}],staticClass:"hidden",attrs:{"type":"radio","id":'times-'+index,"name":'times-'+index},domProps:{"value":slot.start,"checked":_vm._q(_vm.selected_slots[key].slot,slot.start)},on:{"change":[function($event){return _vm.$set(_vm.selected_slots[key], "slot", slot.start)},function($event){return _vm.changeTimeSlot(key, slot)}]}}),_vm._v("\n "+_vm._s(_vm.$moment.utc(slot.start).format('H:mm'))+"\n ")])}),0),_vm._v(" "),_c('div',{staticClass:"mt-4 mb-6"},[_c('span',{staticClass:"block text-sm font-bold mb-2"},[_vm._v("Session type")]),_vm._v(" "),(_vm.selected_slots[key].session_types)?_c('div',{staticClass:"grid grid-cols-2 sm:grid-cols-3 gap-3 mb-3"},_vm._l((_vm.selected_slots[key].session_types),function(item,session_key){return _c('label',{key:session_key,staticClass:"border border-black px-3 py-2 rounded-md cursor-pointer text-center text-sm",class:item.id == _vm.selected_slots[key].session_id ? 'bg-yellow' : ''},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.selected_slots[key].session_id),expression:"selected_slots[key].session_id"}],staticClass:"hidden",attrs:{"type":"radio","name":'session-'+key},domProps:{"value":item.id,"checked":_vm._q(_vm.selected_slots[key].session_id,item.id)},on:{"change":function($event){return _vm.$set(_vm.selected_slots[key], "session_id", item.id)}}}),_vm._v("\n "+_vm._s(item.name)+"\n ")])}),0):_c('div',[_c('p',[_vm._v("No session types available.")])]),_vm._v(" "),(_vm.selected_slots[key].session_id == 3 && _vm.selected_slots[key].address && _vm.selected_slots[key].address.address_type !== 'Personal')?_c('div',{staticClass:"relative pl-10 mb-3 px-3 py-2 text-sm leading-5 rounded bg-blue text-white"},[_c('svg',{staticClass:"absolute top-2 left-3 w-5 h-5",attrs:{"xmlns":"http://www.w3.org/2000/svg","fill":"none","viewBox":"0 0 24 24","stroke":"currentColor"}},[_c('path',{attrs:{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2","d":"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}})]),_vm._v(" "),_c('span',[_vm._v("This session will be at: "+_vm._s(_vm.selected_slots[key].address.formatted))])]):_vm._e(),_vm._v(" "),_c('t-radio-group',{attrs:{"classes":{ groupWrapper: 'grid grid-cols-2 sm:grid-cols-3 gap-3', label: 'block pl-2.5', input: 'rounded-md w-5 h-5 text-black transition duration-100 ease-in-out border-gray-300 shadow-sm focus:border-black focus:ring-2 focus:ring-black focus:outline-none focus:ring-opacity-50 focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed', inputWrapper: 'inline-flex', wrapper: 'flex items-center my-1', },"textAttribute":"type","valueAttribute":"id","name":'product-'+key,"options":_vm.therapist.products},model:{value:(_vm.selected_slots[key].product_id),callback:function ($$v) {_vm.$set(_vm.selected_slots[key], "product_id", $$v)},expression:"selected_slots[key].product_id"}})],1)]:[_c('span',{staticClass:"block mb-2 text-sm font-bold"},[_vm._v(_vm._s(_vm.$moment(key).format('DD/MM/Y')))]),_vm._v(" "),_c('p',[_vm._v("No availability for this day")])]],2)}),0):_c('div',[_c('p',[_vm._v("No availability found")])])]),_vm._v(" "),_c('div',{staticClass:"mt-6 flex items-center justify-center"},[_c('button',{staticClass:"btn btn-primary btn-small rounded-full w-full sm:w-auto",attrs:{"disabled":_vm.isSlotSelected == false,"type":"button"},on:{"click":_vm.getSummary}},[_vm._v("Next")])])],1)])]:_vm._e(),_vm._ssrNode(" "),(_vm.step == 2)?_c('SummaryStep',{attrs:{"selected_slots":_vm.selectedSlots,"working":_vm.working,"nextStep":_vm.getPaymentStep,"button_text":"Proceed to Payment"},model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:"step"}}):_vm._e(),_vm._ssrNode(" "),(_vm.step == 3)?_c('RegisterStep',{model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:"step"}}):_vm._e(),_vm._ssrNode(" "),(_vm.step == 4)?_c('PaymentStep',{attrs:{"selected_slots":_vm.selectedSlots},model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:"step"}}):_vm._e()],2)])])],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./pages/booking/_slug.vue?vue&type=template&id=abfa9c62& // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./pages/booking/_slug.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var _slugvue_type_script_lang_js_ = ({ head() { return { titleTemplate: 'Book ' + this.full_name + ' | %s' }; }, data() { return { step: 1, isLoaded: true, loading: false, working: false, timer: null, minDate: null, maxDate: null, availability: {}, available_dates: [], selected_dates: [], selected_slots: {} }; }, computed: { is_logged_in() { return this.$auth.loggedIn; }, therapist() { return this.$store.state.booking.therapist; }, full_name() { return this.therapist.user.full_name; }, isSlotSelected() { const object = this.selected_slots; for (const [key, value] of Object.entries(object)) { if (value.slot !== null && value.session_id !== null && value.product_id !== null) { return true; } } return false; }, selectedSlots() { const slots = this.selected_slots; return Object.keys(slots).filter(key => slots[key].slot !== null && slots[key].session_id !== null && slots[key].product_id !== null).reduce((obj, key) => { return { ...obj, [key]: slots[key] }; }, {}); } }, async mounted() { let query = this.$route.query; let today = new Date(); // Set some defaults this.minDate = this.$moment(today).add(1, 'days').format('Y-MM-DD'); await this.$axios.post('/availability/' + this.therapist.id, { dates: this.selected_dates }).then(response => { this.loading = false; this.availability = response.data.availability; this.available_dates = response.data.available_dates; // Add the dates to the calendar this.minDate = this.available_dates[0]; this.maxDate = this.available_dates[this.available_dates.length - 1]; this.selected_dates = [this.available_dates[0]]; }).catch(response => { this.loading = false; this.$toast.error(response).goAway(3000); }); }, async asyncData({ store, params }) { await store.dispatch('booking/get', params.slug); }, methods: { changeDates() { if (this.timer) { clearTimeout(this.timer); this.timer = null; } this.timer = setTimeout(() => { this.getTimes(); }, 250); }, changeTimeSlot(key, slot) { this.selected_slots[key].session_types = slot.session_types; // Set address if it exists if (slot.address !== null) { this.selected_slots[key].address = slot.address; this.selected_slots[key].address_id = slot.address.id; } }, async getTimes() { let query = this.$route.query; this.loading = true; await this.$axios.post('/availability/' + this.therapist.id, { dates: this.selected_dates }).then(response => { this.loading = false; this.availability = response.data.availability; this.available_dates = response.data.available_dates; this.selected_slots = response.data.selected_slots; // Add the dates to the calendar this.minDate = this.available_dates[0]; this.maxDate = this.available_dates[this.available_dates.length - 1]; if (this.isLoaded == true && query.time !== undefined && query.date !== undefined) { this.selected_slots[query.date].slot = query.time; this.selected_slots[query.date].product_id = this.therapist.products[0].id; if (this.availability[query.date][0].address) { this.selected_slots[query.date].address_id = this.availability[query.date][0].address.id; this.selected_slots[query.date].address = this.availability[query.date][0].address; } if (this.availability[query.date][0].session_types) { this.selected_slots[query.date].session_types = this.availability[query.date][0].session_types; this.selected_slots[query.date].session_id = this.availability[query.date][0].session_types[0].id; } this.isLoaded = false; } }).catch(response => { this.loading = false; this.$toast.error(response).goAway(3000); }); }, async getSummary() { this.$refs.bookingStepOne.validate().then(success => { if (!success) { return; } this.step = 2; }); }, async getPaymentStep() { if (this.is_logged_in == false) { this.step = 3; } else { this.step = 4; } }, getDisabledDates(rawDate) { var date = this.$moment(rawDate).format('Y-MM-DD'); return !this.available_dates.includes(date); } } }); // CONCATENATED MODULE: ./pages/booking/_slug.vue?vue&type=script&lang=js& /* harmony default export */ var booking_slugvue_type_script_lang_js_ = (_slugvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(1); // CONCATENATED MODULE: ./pages/booking/_slug.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( booking_slugvue_type_script_lang_js_, render, staticRenderFns, false, null, null, "899a1390" ) /* harmony default export */ var _slug = __webpack_exports__["default"] = (component.exports); /* nuxt-component-imports */ installComponents(component, {SummaryStep: __webpack_require__(170).default,RegisterStep: __webpack_require__(195).default,PaymentStep: __webpack_require__(196).default}) /***/ }) };; //# sourceMappingURL=_slug.js.map