dishplanner/app/Http/Controllers/SubscriptionController.php

47 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Enums\SubscriptionStatusEnum;
use App\Models\Subscription;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class SubscriptionController extends Controller
{
public function subscribe(Request $request): RedirectResponse
{
$planner = $request->user();
if ($planner->hasActiveSubscription()) {
return redirect()->route('dashboard');
}
Subscription::create([
'planner_id' => $planner->id,
'stripe_subscription_id' => 'mock_' . Str::random(14),
'stripe_customer_id' => 'mock_' . Str::random(14),
'status' => SubscriptionStatusEnum::ACTIVE,
'plan' => 'default',
]);
return redirect()->route('dashboard')->with('success', 'Subscription activated!');
}
public function cancel(Request $request): RedirectResponse
{
$subscription = $request->user()->subscription;
if (! $subscription) {
return back()->with('error', 'No active subscription found.');
}
$subscription->update([
'status' => SubscriptionStatusEnum::CANCELED,
'ends_at' => now()->addDays(1), // Placeholder until Stripe webhook sets actual end date
]);
return back()->with('success', 'Subscription canceled. Access will continue until the end of your billing period.');
}
}