added cashier subscription, subscription plans

This commit is contained in:
Gitea
2025-05-03 06:13:19 +05:30
parent e04539f1b7
commit 6e2a750c4e
23 changed files with 1087 additions and 21 deletions

View File

@@ -2,12 +2,70 @@
namespace App\Livewire\Dashboard;
use Illuminate\Http\Request;
use Livewire\Component;
class Dashboard extends Component
{
public $message;
public $subscription;
public $plans;
public function paymentStatus(Request $request)
{
$status = $request->route('status');
$currentUrl = $request->fullUrl();
if ($status == 'success') {
return redirect()->route('dashboard')->with('status', 'success');
} elseif ($status == 'cancel') {
return redirect()->route('dashboard')->with('status', 'cancel');
}
}
public function mount(Request $request)
{
try {
$status = $request->session()->get('status');
if (isset($status)) {
if ($status == 'success') {
$this->message = ['type' => 'success', 'message' => 'Order completed successfully.'];
} else {
$this->message = ['type' => 'error', 'message' => 'Order cancelled.'];
}
$request->session()->forget('status');
}
} catch (\Exception $exception) {
}
if (auth()->user()->subscribedToProduct(config('app.plans')[0]['product_id'])) {
try {
$result = auth()->user()->subscriptions()->where(['stripe_status' => 'active'])->orderByDesc('updated_at')->first();
$userPriceID = $result['items'][0]['stripe_price'];
$subscriptionEnd = $result['ends_at'];
$planName = null; // Default value if not found
foreach (config('app.plans') as $plan) {
if ($plan['pricing_id'] === $userPriceID) {
$planName = $plan['name'];
break;
}
}
$this->subscription['name'] = $planName;
$this->subscription['ends_at'] = $subscriptionEnd;
} catch (\Exception $e) {
\Log::error($e->getMessage());
}
}
}
public function render()
{
return view('livewire.dashboard.dashboard')->layout('components.layouts.dashboard');
return view('livewire.dashboard.dashboard')->layout('components.layouts.dashboard')->with('message', $this->message);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Livewire\Dashboard;
use Livewire\Component;
class Pricing extends Component
{
public $plans;
public function mount(): void
{
$this->plans = config('app.plans');
}
public function choosePlan($pricing_id): void
{
$this->redirect(route('checkout', $pricing_id));
}
public function render()
{
return view('livewire.dashboard.pricing');
}
}