kithkin/app/Http/Controllers/SubscriptionController.php

84 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Models\Subscription;
class SubscriptionController extends Controller
{
public function index()
{
$subs = Subscription::where(
'principaluri',
auth()->user()->principal_uri
)->get();
return view('subscription.index', compact('subs'));
}
public function create()
{
return view('subscription.create');
}
public function store(Request $request)
{
$data = $request->validate([
'source' => 'required|url',
'displayname' => 'nullable|string|max:255',
'calendarcolor' => 'nullable|regex:/^#[0-9A-Fa-f]{6}$/',
'refreshrate' => 'nullable|string|max:10',
]);
Subscription::create([
'uri' => Str::uuid(), // unique per principal
'principaluri' => auth()->user()->principal_uri,
//...$data,
'source' => $data['source'],
'displayname' => $data['displayname'] ?? null,
'calendarcolor' => $data['calendarcolor'] ?? null,
'refreshrate' => $data['refreshrate'] ?? null,
'striptodos' => false,
'stripalarms' => false,
'stripattachments' => false,
]);
return redirect()->route('subscription.index')
->with('toast', __('Subscription added!'));
}
public function edit(Subscription $subscription)
{
$this->authorize('update', $subscription);
return view('subscription.edit', ['subscription' => $subscription]);
}
public function update(Request $request, Subscription $subscription)
{
$this->authorize('update', $subscription);
$data = $request->validate([
'displayname' => 'nullable|string|max:255',
'calendarcolor' => 'nullable|regex:/^#[0-9A-Fa-f]{6}$/',
'refreshrate' => 'nullable|string|max:10',
'striptodos' => 'sometimes|boolean',
'stripalarms' => 'sometimes|boolean',
'stripattachments' => 'sometimes|boolean',
]);
$subscription->update($data);
return back()->with('toast', __('Subscription updated!'));
}
public function destroy(Subscription $subscription)
{
$this->authorize('delete', $subscription);
$subscription->delete();
return back()->with('toast', __('Subscription removed!'));
}
}