Gebuendelt, da ueber gemeinsame lang-/Service-Dateien verschraenkt: - Kontakt-Nachrichten: contact_messages-Tabelle + Model/Enums/Factory, Admin-Queue (livewire/admin/contact-messages), ContactController persistiert das Anliegen zusaetzlich zur Brand-Mail - Page-Data-Cache (Services/Web/*PageData) + web-archive-Indizes auf press_releases - Validierungs-Feedback + Company-Portal-Restriction (Feature-Tests) - i18n-Auslagerung lang/de|en (auth, passwords, validation, static) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
45 lines
1.1 KiB
PHP
45 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Enums\ContactMessageStatus;
|
|
use App\Enums\ContactMessageTopic;
|
|
use App\Models\ContactMessage;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* @extends Factory<ContactMessage>
|
|
*/
|
|
class ContactMessageFactory extends Factory
|
|
{
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function definition(): array
|
|
{
|
|
return [
|
|
'portal' => 'presseecho',
|
|
'topic' => fake()->randomElement(ContactMessageTopic::cases()),
|
|
'status' => ContactMessageStatus::Open,
|
|
'name' => fake()->name(),
|
|
'email' => fake()->safeEmail(),
|
|
'message' => fake()->sentence(12),
|
|
'page_url' => fake()->url(),
|
|
'payload' => null,
|
|
'requester_ip' => fake()->ipv4(),
|
|
];
|
|
}
|
|
|
|
public function topic(ContactMessageTopic $topic): static
|
|
{
|
|
return $this->state(['topic' => $topic]);
|
|
}
|
|
|
|
public function resolved(): static
|
|
{
|
|
return $this->state([
|
|
'status' => ContactMessageStatus::Resolved,
|
|
'resolved_at' => now(),
|
|
]);
|
|
}
|
|
}
|