feat(portal): lead module, WHMCS sync report/contacts/mapping, service lifecycle email templates

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
baodev0
2026-10-21 16:55:19 +07:00
co-authored by Claude Sonnet 5.5
parent 3c7710f1de
commit a443ec3bf6
66 changed files with 2032 additions and 124 deletions
+14 -3
View File
@@ -11,6 +11,8 @@ use Database\Seeders\EmailTemplates\BillingTemplates;
use Database\Seeders\EmailTemplates\IpTemplates;
use Database\Seeders\EmailTemplates\LegacyTemplates;
use Database\Seeders\EmailTemplates\MarketingTemplates;
use Database\Seeders\EmailTemplates\ServiceLifecycleTemplates;
use Database\Seeders\EmailTemplates\SubjectFormat;
use Database\Seeders\EmailTemplates\ServiceTemplates;
use Database\Seeders\EmailTemplates\TemplateVariables;
use Illuminate\Database\Seeder;
@@ -27,9 +29,18 @@ class TemplateSeeder extends Seeder
$this->createMarketingIfMissing($item);
}
$this->seedServiceLifecycleTemplates();
$this->createMarketingIfMissing(self::ipRevocationTemplate());
}
public function seedServiceLifecycleTemplates(): void
{
foreach (ServiceLifecycleTemplates::all() as $item) {
$this->createMarketingIfMissing($item);
}
}
public function seedScenarioIfMissing(string $scenario): void
{
if (Template::query()->where('key', $scenario)->orWhere('scenario', $scenario)->exists()) {
@@ -62,7 +73,7 @@ class TemplateSeeder extends Seeder
$template->fill([
'type_id' => 0,
'format' => 'html',
'subject' => $item['subject'],
'subject' => SubjectFormat::for($item['name']) ?? $item['subject'],
'message' => $item['message'] ?? EmailTemplateShell::page($item['body']),
'status' => 1,
]);
@@ -83,7 +94,7 @@ class TemplateSeeder extends Seeder
];
$scenarios = array_map(
fn (array $item) => [...$item, 'message' => EmailTemplateShell::page($item['body'])],
fn (array $item) => [...$item, 'subject' => SubjectFormat::for($item['scenario']) ?? $item['subject'], 'message' => EmailTemplateShell::page($item['body'])],
[
...AccountTemplates::all(),
...ServiceTemplates::all(),
@@ -102,7 +113,7 @@ class TemplateSeeder extends Seeder
public static function legacyTemplates(): array
{
return array_map(
fn (array $item) => [...$item, 'message' => EmailTemplateShell::page($item['body'])],
fn (array $item) => [...$item, 'subject' => SubjectFormat::for($item['scenario']) ?? $item['subject'], 'message' => EmailTemplateShell::page($item['body'])],
LegacyTemplates::all(),
);
}