{"version":3,"sources":["webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///./src/views/company/components/PurchaseOverview.vue?c520","webpack:///./src/views/company/components/PurchaseOverview.vue","webpack:///./src/views/company/components/PurchaseOverview.vue?e938","webpack:///./src/views/company/components/PurchaseOverview.vue?953b"],"names":["mixins","Themeable","extend","name","props","dense","Boolean","fixedHeader","height","Number","String","computed","classes","this","$slots","top","bottom","themeClasses","methods","genWrapper","wrapper","$createElement","staticClass","style","convertToUnit","default","render","h","class","_vm","_h","_c","_self","VForm","on","$event","preventDefault","createConfirm","VCard","_v","VDivider","VSimpleTable","scopedSlots","_u","key","fn","_s","plan","price","toFixed","discountPrice","proxy","staticStyle","VTextField","attrs","model","value","callback","$$v","couponCode","expression","VBtn","checkCoupon","discountTime","_e","VSpacer","cancelPurchase","confirmPurchase","staticRenderFns","PurchaseOverview","coupon","amount_off","percent_off","newPrice","duration_in_months","str","$t","d","toString","step","retrieved","products","find","x","monthlyPrice","tier","product","unit_amount","endpoint","data","currency","priceId","isGermanTaxRate","couponId","companyId","paymentMethodId","pmId","api","post","msg","displaySnackbar","console","log","end","get","fallback","message","getProducts","$forceUpdate","Vue","__decorate","Prop","PropSync","type","Getter","Action","Watch","immediate","Component","component"],"mappings":"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","file":"assets/js/chunk-597ee9f0.bcd4d825.js","sourcesContent":["import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(VForm,{on:{\"submit\":function($event){$event.preventDefault();return _vm.createConfirm($event)}}},[_c(VCard,[_c(VCardTitle,[_vm._v(\"Purchase Subscription\")]),_c(VDivider),_c(VCardText,[_c(VSimpleTable,{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"#\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Product\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Price\")])])]),_c('tbody',[_c('tr',[_c('td',[_vm._v(\"1\")]),_c('td',[_vm._v(_vm._s(_vm.plan.name))]),(_vm.discountPrice)?_c('td',[_c('del',[_vm._v(\"€\"+_vm._s((_vm.price / 100).toFixed(2)))]),_c('strong',{staticClass:\"ml-2\"},[_vm._v(\"€\"+_vm._s(_vm.discountPrice))])]):_c('td',[_vm._v(\"€\"+_vm._s((_vm.price / 100).toFixed(2)))])])])]},proxy:true}])}),_c('div',{staticClass:\"d-flex mt-4\",staticStyle:{\"width\":\"50%\",\"margin-left\":\"50%\"}},[_c(VTextField,{staticClass:\"ma-0 pa-0\",attrs:{\"placeholder\":\"Enter Coupon Code\",\"hide-details\":\"\"},model:{value:(_vm.couponCode),callback:function ($$v) {_vm.couponCode=$$v},expression:\"couponCode\"}}),_c(VBtn,{staticClass:\"ml-4\",attrs:{\"elevation\":\"0\"},on:{\"click\":_vm.checkCoupon}},[_vm._v(\"Check\")])],1),(_vm.discountTime)?_c('div',{staticClass:\"text-right mt-4\"},[_c('i',[_vm._v(_vm._s(_vm.discountTime))])]):_vm._e()],1),_c(VDivider,{staticClass:\"my-4\"}),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"elevation\":\"0\",\"color\":\"accent\"},on:{\"click\":_vm.cancelPurchase}},[_c('span',{staticClass:\"main--text\"},[_vm._v(\"Cancel\")])]),_c(VBtn,{attrs:{\"elevation\":\"0\",\"color\":\"primary\"},on:{\"click\":_vm.confirmPurchase}},[_c('span',[_vm._v(\"Checkout\")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n// TODO: Trans\r\nimport Vue from \"vue\";\r\nimport api from \"@/core/utils/api\";\r\nimport { Product } from \"@/core/models\";\r\nimport { Action, Getter } from \"vuex-class\";\r\nimport { Component, PropSync, Watch, Prop } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class PurchaseOverview extends Vue {\r\n @Prop({ default: () => \"\" }) tier!: string;\r\n @Prop({ default: () => \"\" }) pmId!: string;\r\n @Prop({ default: () => 0 }) companyId!: number;\r\n @Prop({ default: () => false }) loading!: boolean;\r\n @PropSync(\"stepProp\", { type: Number }) step!: number;\r\n\r\n @Getter(\"products/retrieved\") retrieved!: boolean;\r\n @Getter(\"products/products\") products!: Product[];\r\n @Action(\"products/get\") getProducts!: Function;\r\n @Action(\"displaySnackbar\") displaySnackbar!: Function;\r\n\r\n couponCode = \"\";\r\n coupon: any | null = null;\r\n get discountPrice() {\r\n if (!this.coupon) return null;\r\n\r\n const { amount_off, percent_off } = this.coupon;\r\n if (amount_off) {\r\n const newPrice = this.price - amount_off;\r\n return (newPrice / 100).toFixed(2);\r\n }\r\n const newPrice = (this.price * (percent_off / 100)) / 100;\r\n return newPrice.toFixed(2);\r\n }\r\n get discountTime() {\r\n if (!this.coupon) return null;\r\n const { duration_in_months } = this.coupon;\r\n const str = this.$t(\"snack.stripe.discount\", {\r\n d: duration_in_months,\r\n }).toString();\r\n return str;\r\n }\r\n\r\n cancelPurchase() {\r\n this.step = 1;\r\n }\r\n get plan() {\r\n if (!this.retrieved) return {};\r\n return this.products.find(x => x.monthlyPrice === this.tier);\r\n }\r\n get price() {\r\n if (!this.retrieved) return 0;\r\n const product = this.products.find(x => x.monthlyPrice === this.tier);\r\n if (!product) return 0;\r\n return product.unit_amount;\r\n }\r\n async confirmPurchase() {\r\n const endpoint = \"/api/Subscriptions/PurchaseSubscription\";\r\n\r\n // TODO: Set loading overlay\r\n const data = {\r\n currency: \"EUR\",\r\n priceId: this.tier,\r\n isGermanTaxRate: false,\r\n couponId: this.couponCode,\r\n companyId: this.companyId,\r\n paymentMethodId: this.pmId,\r\n };\r\n\r\n try {\r\n await api.post(endpoint, data);\r\n const msg = this.$t(\"snack.stripe.purchase\").toString();\r\n this.displaySnackbar(msg);\r\n } catch (error) {\r\n console.log(error);\r\n const msg = this.$t(\"snack.stripe.pfail\").toString();\r\n this.displaySnackbar(msg);\r\n }\r\n }\r\n\r\n async checkCoupon() {\r\n if (!this.couponCode) {\r\n const msg = this.$t(\"snack.stripe.entercode\").toString();\r\n this.displaySnackbar(msg);\r\n return;\r\n }\r\n\r\n try {\r\n const end = `/api/Coupons/${this.couponCode}`;\r\n const coupon = await api.get(end);\r\n this.coupon = coupon;\r\n } catch (error) {\r\n const fallback = this.$t(\"snack.stripe.codeinvalid\").toString();\r\n const msg = error.message || fallback;\r\n this.displaySnackbar(msg);\r\n }\r\n }\r\n\r\n created() {\r\n if (!this.retrieved && !this.retrieved) this.getProducts();\r\n }\r\n\r\n @Watch(\"couponCode\", { immediate: true })\r\n rerender() {\r\n this.$forceUpdate();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PurchaseOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PurchaseOverview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PurchaseOverview.vue?vue&type=template&id=9890bbc2&\"\nimport script from \"./PurchaseOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./PurchaseOverview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}