diff --git a/app/Http/Resources/Oasis/SubscriptionRequestResource.php b/app/Http/Resources/Oasis/SubscriptionRequestResource.php index 1ff3fa97..9bd5f195 100644 --- a/app/Http/Resources/Oasis/SubscriptionRequestResource.php +++ b/app/Http/Resources/Oasis/SubscriptionRequestResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources\Oasis; use App\Http\Resources\PlanResource; +use App\Http\Resources\PricingResource; use App\Services\StripeService; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Cache; @@ -42,7 +43,7 @@ class SubscriptionRequestResource extends JsonResource ] ] ], - 'plan' => new PlanResource( + 'plan' => new PricingResource( resolve(StripeService::class)->getPlan($this->requested_plan) ), ] diff --git a/app/Http/Resources/PricingResource.php b/app/Http/Resources/PricingResource.php index 35a7b296..f28d0f7a 100644 --- a/app/Http/Resources/PricingResource.php +++ b/app/Http/Resources/PricingResource.php @@ -2,6 +2,7 @@ namespace App\Http\Resources; +use App\Services\StripeService; use Illuminate\Http\Resources\Json\JsonResource; use Laravel\Cashier\Cashier; @@ -26,43 +27,9 @@ class PricingResource extends JsonResource 'capacity_formatted' => format_gigabytes($this['product']['metadata']['capacity']), 'capacity' => (int)$this['product']['metadata']['capacity'], 'currency' => config('cashier.currency'), - 'tax_rates' => $this->get_tax_rates(), + 'tax_rates' => resolve(StripeService::class)->get_tax_rates($this['plan']['amount']) ] ] ]; } - - /** - * Get plan tax rates - * - * @return array - */ - private function get_tax_rates(): array - { - $stripe = resolve('App\Services\StripeService'); - - $rates_public = []; - - // Get tax rates - $rates = $stripe->getTaxRates(); - - foreach ($rates as $rate) { - - // Continue when is not active - if (!$rate['active']) continue; - - // Calculate tax - $tax = $this['plan']['amount'] * ($rate['percentage'] / 100); - - array_push($rates_public, [ - 'id' => $rate['id'], - 'active' => $rate['active'], - 'jurisdiction' => $rate['jurisdiction'], - 'percentage' => $rate['percentage'], - 'plan_price_formatted' => Cashier::formatAmount(round($this['plan']['amount'] + $tax)), - ]); - } - - return $rates_public; - } -} +} \ No newline at end of file diff --git a/app/Services/StripeService.php b/app/Services/StripeService.php index 38ed899c..f7b25de4 100644 --- a/app/Services/StripeService.php +++ b/app/Services/StripeService.php @@ -7,6 +7,7 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Str; +use Laravel\Cashier\Cashier; use Laravel\Cashier\Exceptions\IncompletePayment; use Laravel\Cashier\Exceptions\PaymentActionRequired; use Stripe; @@ -49,6 +50,36 @@ class StripeService ->all()['data']; } + /** + * Get plan tax rates + * + * @param $amount + * @return array + */ + public function get_tax_rates($amount): array + { + $rates_public = []; + + foreach ($this->getTaxRates() as $rate) { + + // Continue when is not active + if (!$rate['active']) continue; + + // Calculate tax + $tax = $amount * ($rate['percentage'] / 100); + + array_push($rates_public, [ + 'id' => $rate['id'], + 'active' => $rate['active'], + 'jurisdiction' => $rate['jurisdiction'], + 'percentage' => $rate['percentage'], + 'plan_price_formatted' => Cashier::formatAmount(round($amount + $tax)), + ]); + } + + return $rates_public; + } + /** * Get default payment option or set new default payment * diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 54a62c9b..332b8da0 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -2,7 +2,7 @@ "/js/main.js": "/js/main.js", "/css/app.css": "/css/app.css", "/chunks/admin.js": "/chunks/admin.js?id=7875b08fc6fb75a7ad1f", - "/chunks/admin-account.js": "/chunks/admin-account.js?id=c9330616aa6a16b45288", + "/chunks/admin-account.js": "/chunks/admin-account.js?id=b1d2758e439eb303f5ee", "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~9fa266bc.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~9fa266bc.js?id=81dea7680f4bfde55278", "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=62b552a0492fe95b2223", "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a001bb84.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a001bb84.js?id=0cad8279d29d79cd0e82", @@ -19,17 +19,17 @@ "/chunks/app-payments.js": "/chunks/app-payments.js?id=4184e5c489f4fe09f2ab", "/chunks/app-settings.js": "/chunks/app-settings.js?id=1441a53c88fa164f4e1c", "/chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pages~chunks/plan~chunk~8a0e1d25.js": "/chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pages~chunks/plan~chunk~8a0e1d25.js?id=e71bb0286189734a8aec", - "/chunks/app-setup.js": "/chunks/app-setup.js?id=bb25421b4c61d039765f", - "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=15ab9d58ca7eeb26ed0e", + "/chunks/app-setup.js": "/chunks/app-setup.js?id=e643bae8573b88e6437c", + "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=e71c7c69b1132cf6b243", "/chunks/contact-us.js": "/chunks/contact-us.js?id=14e8c1c3784fce3b5a22", "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=5814ff43ba7c67297af1", "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f3c8bc62f62ae537f93c", "/chunks/dashboard.js": "/chunks/dashboard.js?id=9809887401e27ef5826e", "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js?id=1c22034c0e30c4530f3d", "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=859a6f034ca5697aaf60", - "/chunks/database.js": "/chunks/database.js?id=58addbf30b3b2f7c36db", + "/chunks/database.js": "/chunks/database.js?id=22b6513c494a3d5714d9", "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6dccc2158cc6278f683d", - "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=81005c48fec83ab4ca45", + "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=123776e4ad431b2af406", "/chunks/files.js": "/chunks/files.js?id=40b4464ce393cb112111", "/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js?id=c2c86f2168e863fbd49e", "/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser.js?id=885dd88f0e8d5c499a48", @@ -40,7 +40,7 @@ "/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=b2a355bb27f40ee0e386", "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=a00dedfec5aeabac394c", "/chunks/homepage.js": "/chunks/homepage.js?id=14154b40ea69f91fef31", - "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=4f937c33675bb39bc682", + "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=7543bc0ebd67a282779a", "/chunks/invoices.js": "/chunks/invoices.js?id=98c2b0d4a83f4e0cc6d9", "/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e", "/chunks/page-edit.js": "/chunks/page-edit.js?id=234551fa36d21e29606e", @@ -55,7 +55,7 @@ "/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=82814a863a150db0cc7e", "/chunks/profile.js": "/chunks/profile.js?id=0f82cbd818967273cbd8", "/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=9202f2cff7c80a561718", - "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b9ae98e83f8df690d09f", + "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=01dafc8397bda91a47f5", "/chunks/settings.js": "/chunks/settings.js?id=713564bcdbe44aa66df1", "/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=9c088cb1b14836d13648", "/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=c765f8563393c27bc6a6", @@ -71,9 +71,9 @@ "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=e8aedb75df7fe227d693", "/chunks/sign-in.js": "/chunks/sign-in.js?id=92a1de80f254cfc9ac91", "/chunks/sign-up.js": "/chunks/sign-up.js?id=50e81d184a05d3990d89", - "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=98e8a206373b361e6138", - "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=7cb7c0cb6ef388cd016e", - "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=bcea699b0d9d0ee61565", + "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=6eb1bdf3942d7b2dd06f", + "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=8048188a201c41f248c6", + "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=90c1aa9431689a89eb3d", "/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=830456726847f435144e", "/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=2b555924c945cbcd23f5", "/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=9c61721d5e30ef544377", @@ -171,5 +171,37 @@ "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.cec600408276af5260fe.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.cec600408276af5260fe.hot-update.js", "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.dbdbf80723e41e072d01.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.dbdbf80723e41e072d01.hot-update.js", "/chunks/users.2b4b9dbd972d7a9d7c83.hot-update.js": "/chunks/users.2b4b9dbd972d7a9d7c83.hot-update.js", - "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js" + "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js", + "/js/main.55cf4e9bc02bec922581.hot-update.js": "/js/main.55cf4e9bc02bec922581.hot-update.js", + "/js/main.b52ecb4afdc47584e38f.hot-update.js": "/js/main.b52ecb4afdc47584e38f.hot-update.js", + "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js?id=6b6737a58e371fc4434b", + "/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=41fec8f562bfc988aa95", + "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js?id=4781f8460c7f0f8b21a5", + "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~0a9c5e33.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~0a9c5e33.js?id=b28978d3c8aae9b949a5", + "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~8394cf85.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~8394cf85.js?id=d25da0762af813ea588c", + "/chunks/oasis/platba.f2d7a060bf88fd2d9403.hot-update.js": "/chunks/oasis/platba.f2d7a060bf88fd2d9403.hot-update.js", + "/chunks/oasis/platba.79f86d9923a5b3d8f77b.hot-update.js": "/chunks/oasis/platba.79f86d9923a5b3d8f77b.hot-update.js", + "/chunks/oasis/platba.960030e55311860adad8.hot-update.js": "/chunks/oasis/platba.960030e55311860adad8.hot-update.js", + "/js/main.b089e299b2beda8c4435.hot-update.js": "/js/main.b089e299b2beda8c4435.hot-update.js", + "/chunks/oasis/platba.0975d1f12bf7fcd32825.hot-update.js": "/chunks/oasis/platba.0975d1f12bf7fcd32825.hot-update.js", + "/chunks/oasis/platba.b1513de9a1f782c9fcf9.hot-update.js": "/chunks/oasis/platba.b1513de9a1f782c9fcf9.hot-update.js", + "/chunks/oasis/platba.6101685137fe4c159b2f.hot-update.js": "/chunks/oasis/platba.6101685137fe4c159b2f.hot-update.js", + "/js/main.4e81e4ea624ef84cb166.hot-update.js": "/js/main.4e81e4ea624ef84cb166.hot-update.js", + "/chunks/oasis/platba.4e81e4ea624ef84cb166.hot-update.js": "/chunks/oasis/platba.4e81e4ea624ef84cb166.hot-update.js", + "/js/main.9d41d45200d1397f7d1f.hot-update.js": "/js/main.9d41d45200d1397f7d1f.hot-update.js", + "/chunks/oasis/platba.9d41d45200d1397f7d1f.hot-update.js": "/chunks/oasis/platba.9d41d45200d1397f7d1f.hot-update.js", + "/chunks/oasis/platba.7295a36fd456e216edb5.hot-update.js": "/chunks/oasis/platba.7295a36fd456e216edb5.hot-update.js", + "/chunks/oasis/platba.42cfd9642e72806e1d73.hot-update.js": "/chunks/oasis/platba.42cfd9642e72806e1d73.hot-update.js", + "/chunks/oasis/platba.eb85a1eef45f79ca4c3e.hot-update.js": "/chunks/oasis/platba.eb85a1eef45f79ca4c3e.hot-update.js", + "/chunks/admin-account.9b07cca19b41d1b68e00.hot-update.js": "/chunks/admin-account.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/app-setup.9b07cca19b41d1b68e00.hot-update.js": "/chunks/app-setup.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/billings-detail.9b07cca19b41d1b68e00.hot-update.js": "/chunks/billings-detail.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/database.9b07cca19b41d1b68e00.hot-update.js": "/chunks/database.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/environment-setup.9b07cca19b41d1b68e00.hot-update.js": "/chunks/environment-setup.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/installation-disclaimer.9b07cca19b41d1b68e00.hot-update.js": "/chunks/installation-disclaimer.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/purchase-code.9b07cca19b41d1b68e00.hot-update.js": "/chunks/purchase-code.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/stripe-credentials.9b07cca19b41d1b68e00.hot-update.js": "/chunks/stripe-credentials.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/subscription-plans.9b07cca19b41d1b68e00.hot-update.js": "/chunks/subscription-plans.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/subscription-service.9b07cca19b41d1b68e00.hot-update.js": "/chunks/subscription-service.9b07cca19b41d1b68e00.hot-update.js", + "/chunks/oasis/platba.cba2f2943cb866639e8c.hot-update.js": "/chunks/oasis/platba.cba2f2943cb866639e8c.hot-update.js" } diff --git a/resources/js/Oasis/Pages/SubscriptionRequestPayment.vue b/resources/js/Oasis/Pages/SubscriptionRequestPayment.vue new file mode 100644 index 00000000..9dd3b988 --- /dev/null +++ b/resources/js/Oasis/Pages/SubscriptionRequestPayment.vue @@ -0,0 +1,676 @@ + + + + + diff --git a/resources/js/router.js b/resources/js/router.js index b642c012..0c575d6e 100644 --- a/resources/js/router.js +++ b/resources/js/router.js @@ -9,6 +9,16 @@ import UserProfileMobileMenu from './views/Mobile/UserProfileMobileMenu' Vue.use(Router) const routesOasis = [ + { + name: 'SubscriptionRequestPayment', + path: '/platba/:id', + component: () => + import(/* webpackChunkName: "chunks/oasis/platba" */ './Oasis/Pages/SubscriptionRequestPayment'), + meta: { + requiresAuth: true, + title: 'Platba' + }, + }, { name: 'Admin', path: '/admin', diff --git a/resources/sass/vuefilemanager/_setup_wizard.scss b/resources/sass/vuefilemanager/_setup_wizard.scss index 397c4755..3790a54c 100644 --- a/resources/sass/vuefilemanager/_setup_wizard.scss +++ b/resources/sass/vuefilemanager/_setup_wizard.scss @@ -73,7 +73,7 @@ animation: spinner 5s linear infinite; circle, path { - stroke: $theme; + color: inherit; } }