feat: add DatabaseSeeder and TenantSeeder with sample tenant configuration and assets
This commit is contained in:
@@ -21,5 +21,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
'name' => 'Test User',
|
'name' => 'Test User',
|
||||||
'email' => 'test@example.com',
|
'email' => 'test@example.com',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$this->call(TenantSeeder::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
82
database/seeders/TenantSeeder.php
Normal file
82
database/seeders/TenantSeeder.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Domains\Tenant\Models\Tenant;
|
||||||
|
use App\Domains\Tenant\Services\TenantService;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
use Illuminate\Http\UploadedFile;
|
||||||
|
|
||||||
|
class TenantSeeder extends Seeder
|
||||||
|
{
|
||||||
|
public function __construct(protected TenantService $tenantService)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
// Check if tenant 'sonder' already exists and delete it to prevent duplicates
|
||||||
|
$existing = Tenant::query()->where('codigo', 'sonder')->first();
|
||||||
|
if ($existing) {
|
||||||
|
$attachmentService = app(\App\Domains\Attachable\Services\AttachmentService::class);
|
||||||
|
if ($existing->headerLogo) {
|
||||||
|
try {
|
||||||
|
$attachmentService->delete($existing->headerLogo);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Ignore exception on cleanup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($existing->footerLogo && $existing->footer_logo_id !== $existing->header_logo_id) {
|
||||||
|
try {
|
||||||
|
$attachmentService->delete($existing->footerLogo);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Ignore exception on cleanup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$existing->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if domain 'localhost' is already in use by another tenant and delete it
|
||||||
|
$existingDomain = Tenant::query()->where('dominio', 'localhost')->first();
|
||||||
|
if ($existingDomain) {
|
||||||
|
$existingDomain->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
$imagePath = public_path('images/sonder.png');
|
||||||
|
|
||||||
|
if (! file_exists($imagePath)) {
|
||||||
|
throw new \RuntimeException("Image not found at path: {$imagePath}");
|
||||||
|
}
|
||||||
|
|
||||||
|
$headerLogo = new UploadedFile(
|
||||||
|
$imagePath,
|
||||||
|
'sonder.png',
|
||||||
|
'image/png',
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$footerLogo = new UploadedFile(
|
||||||
|
$imagePath,
|
||||||
|
'sonder.png',
|
||||||
|
'image/png',
|
||||||
|
null,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->tenantService->create([
|
||||||
|
'codigo' => 'sonder',
|
||||||
|
'nombre' => 'Sonder',
|
||||||
|
'dominio' => 'localhost',
|
||||||
|
'primary_color' => '#6376F3',
|
||||||
|
'secondary_color' => '#A0A0A0',
|
||||||
|
'danger_color' => '#FF8888',
|
||||||
|
'header_footer_bg_color' => '#313131',
|
||||||
|
'header_logo' => $headerLogo,
|
||||||
|
'footer_logo' => $footerLogo,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
public/images/sonder.png
Normal file
BIN
public/images/sonder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
Reference in New Issue
Block a user