feat: Phase 3 - public registration pages and Mailwizz config

This commit is contained in:
2026-04-03 21:42:19 +02:00
parent cf026f46b0
commit a1d570254e
17 changed files with 1236 additions and 44 deletions

View File

@@ -5,23 +5,51 @@ 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\Request;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\View\View;
class MailwizzController extends Controller
{
public function edit(PreregistrationPage $page): \Illuminate\View\View
public function edit(PreregistrationPage $page): View
{
$this->authorize('update', $page);
$page->load('mailwizzConfig');
return view('admin.mailwizz.edit', compact('page'));
}
public function update(Request $request, PreregistrationPage $page): \Illuminate\Http\RedirectResponse
public function update(UpdateMailwizzConfigRequest $request, PreregistrationPage $page): RedirectResponse
{
return redirect()->route('admin.pages.mailwizz.edit', $page);
$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): \Illuminate\Http\RedirectResponse
public function destroy(PreregistrationPage $page): RedirectResponse
{
return redirect()->route('admin.pages.mailwizz.edit', $page);
$this->authorize('update', $page);
$page->mailwizzConfig()?->delete();
return redirect()
->route('admin.pages.mailwizz.edit', $page)
->with('status', __('Mailwizz integration removed.'));
}
}