78 lines
2.5 KiB
PHP
78 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Dashboard;
|
|
|
|
use App\Models\UsageLog;
|
|
use Illuminate\Http\Request;
|
|
use Livewire\Component;
|
|
|
|
class Dashboard extends Component
|
|
{
|
|
public $message;
|
|
public $usageLog;
|
|
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());
|
|
}
|
|
}
|
|
|
|
$usageLog = UsageLog::where('user_id', auth()->user()->id)->first();
|
|
$this->usageLog = [
|
|
'emails_created_count' => $usageLog->emails_created_count ?? 0,
|
|
'emails_received_count' => $usageLog->emails_received_count ?? 0,
|
|
];
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.dashboard.dashboard')->layout('components.layouts.dashboard')->with('message', $this->message);
|
|
}
|
|
}
|