environment('local', 'staging')) { Route::get('/mail-preview/{type}', function (string $type) { $supportedTypes = [ 'registration-confirmation', 'registration-approved', 'registration-rejected', 'invitation', ]; if (! in_array($type, $supportedTypes)) { abort(404, "Unknown mail type '{$type}'. Supported types: " . implode(', ', $supportedTypes)); } if ($type === 'invitation') { $organisation = Organisation::factory()->make(); $invitation = UserInvitation::factory()->make(); $invitation->setRelation('organisation', $organisation); $invitation->setRelation('invitedBy', User::factory()->make()); $invitation->plainToken ??= 'preview-token'; $invitation->role ??= 'org_member'; $invitation->expires_at ??= now()->addDays(7); return new InvitationMail($invitation); } $event = Event::factory()->make(); $person = Person::factory()->make(); return match ($type) { 'registration-confirmation' => new RegistrationConfirmationMail($person, $event), 'registration-approved' => new RegistrationApprovedMail($person, $event), 'registration-rejected' => new RegistrationRejectedMail($person, $event, 'Helaas geen plek meer.'), }; }); }