Files
preregister/app/Http/Controllers/Admin/MailwizzController.php

56 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\UpdateMailwizzConfigRequest;
use App\Models\PreregistrationPage;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\View\View;
class MailwizzController extends Controller
{
public function edit(PreregistrationPage $page): View
{
$this->authorize('update', $page);
$page->load('mailwizzConfig');
return view('admin.mailwizz.edit', compact('page'));
}
public function update(UpdateMailwizzConfigRequest $request, PreregistrationPage $page): RedirectResponse
{
$validated = $request->validated();
if (($validated['api_key'] ?? '') === '' && $page->mailwizzConfig !== null) {
unset($validated['api_key']);
}
DB::transaction(function () use ($page, $validated): void {
$page->mailwizzConfig()->updateOrCreate(
['preregistration_page_id' => $page->id],
array_merge($validated, ['preregistration_page_id' => $page->id])
);
});
return redirect()
->route('admin.pages.mailwizz.edit', $page)
->with('status', __('Mailwizz configuration saved.'));
}
public function destroy(PreregistrationPage $page): RedirectResponse
{
$this->authorize('update', $page);
$page->mailwizzConfig()?->delete();
return redirect()
->route('admin.pages.mailwizz.edit', $page)
->with('status', __('Mailwizz integration removed.'));
}
}