File: /home/xedaptot/ai.naniguide.com/database/seeders/Demo/Stage12_FormsSeeder.php
<?php
namespace Database\Seeders\Demo;
use App\Model\Form;
use App\Model\FormTemplate;
/**
* Stage 12 — signup forms (one or two per customer, attached to first list).
*/
class Stage12_FormsSeeder extends AbstractDemoSeeder
{
protected int $fakerOffset = 12;
public function run(): void
{
$f = $this->faker();
$customers = Stage03_CustomersSeeder::$created;
$created = 0;
// Default form template — every form needs one or the builder crashes
$defaultFormTemplate = FormTemplate::first();
$defaultTemplate = $defaultFormTemplate?->template;
foreach (DemoConfig::customers() as $cfg) {
$customer = $customers[$cfg['key']] ?? null;
$lists = Stage07_MailListsSeeder::$created[$cfg['key']] ?? [];
if (!$customer || empty($lists)) continue;
$count = $cfg['forms'] ?? 0;
for ($i = 0; $i < $count; $i++) {
$list = $lists[$i % count($lists)];
$form = new Form();
$form->customer_id = $customer->id;
$form->mail_list_id = $list->id;
$form->name = $f->randomElement(['Newsletter Signup', 'Get Notified', 'Join Our List', 'Subscribe Now', 'Free Trial Signup']) . ' #' . ($i + 1);
$form->status = $f->randomElement(['active', 'active', 'active', 'inactive']);
$form->metadata = json_encode([
'description' => 'Demo signup form for ' . $cfg['company'],
'fields' => ['EMAIL', 'FIRST_NAME', 'LAST_NAME'],
'theme' => $f->randomElement(['light', 'dark', 'minimal']),
]);
$form->save();
if ($defaultTemplate) {
$form->setTemplate($defaultTemplate, $form->name);
}
$created++;
}
}
$this->log("seeded {$created} forms");
}
}