84 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			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!'));
 | 
						|
    }
 | 
						|
}
 |