'instagram', 'url' => 'https://www.instagram.com/sonderargentina/', 'orden' => 0, ], [ 'code' => 'facebook', 'url' => 'https://www.facebook.com/SonderArgentina/', 'orden' => 1, ], [ 'code' => 'linkedin', 'url' => 'https://www.linkedin.com/company/35664983/', 'orden' => 2, ], [ 'code' => 'whatsapp', 'url' => 'https://wa.me/5493412602222', 'orden' => 3, ], ]; 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(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 } } foreach ($existing->mainCarouselImages as $mainCarouselImage) { try { $attachmentService->delete($mainCarouselImage); } 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(); } $headerImagePath = public_path('images/sonder_header.png'); $footerImagePath = public_path('images/sonder_footer.png'); if (! file_exists($headerImagePath)) { throw new \RuntimeException("Image not found at path: {$headerImagePath}"); } if (! file_exists($footerImagePath)) { throw new \RuntimeException("Image not found at path: {$footerImagePath}"); } $headerLogo = new UploadedFile( $headerImagePath, 'sonder_header.png', 'image/png', null, true ); $footerLogo = new UploadedFile( $footerImagePath, 'sonder_footer.png', 'image/png', null, true ); $mainCarouselImages = []; foreach (self::SONDER_MAIN_CAROUSEL_IMAGES as $filename) { $imagePath = public_path("images/sonder-main-carousel/{$filename}"); if (! file_exists($imagePath)) { throw new \RuntimeException("Image not found at path: {$imagePath}"); } $mainCarouselImages[] = new UploadedFile( $imagePath, $filename, 'image/png', null, true ); } $this->tenantService->create([ 'codigo' => 'sonder', 'nombre' => 'Sonder', 'dominio' => 'localhost', 'primary_color' => '#6376F3', 'secondary_color' => '#A0A0A0', 'danger_color' => '#FF8888', 'success_color' => '#198754', 'header_bg_color' => '#ffffff', 'footer_bg_color' => '#313131', 'header_logo' => $headerLogo, 'footer_logo' => $footerLogo, 'main_carousel_images' => $mainCarouselImages, 'social_media' => self::SOCIAL_MEDIA, ]); // Check if tenant 'fiesta_futbol_infantil' already exists $existingFiesta = Tenant::query()->where('codigo', 'fiesta_futbol_infantil')->first(); if ($existingFiesta) { $attachmentService = app(AttachmentService::class); if ($existingFiesta->headerLogo) { try { $attachmentService->delete($existingFiesta->headerLogo); } catch (\Throwable $e) { } } if ($existingFiesta->footerLogo && $existingFiesta->footer_logo_id !== $existingFiesta->header_logo_id) { try { $attachmentService->delete($existingFiesta->footerLogo); } catch (\Throwable $e) { } } if ($existingFiesta->heroBgImage) { try { $attachmentService->delete($existingFiesta->heroBgImage); } catch (\Throwable $e) { } } $existingFiesta->delete(); } $fiestaDomain = 'fiesta-futbol-infantil.localhost'; $existingFiestaDomain = Tenant::query()->where('dominio', $fiestaDomain)->first(); if ($existingFiestaDomain) { $existingFiestaDomain->delete(); } $fiestaHeaderImagePath = public_path('images/futbol_infantil_header.png'); $fiestaFooterImagePath = public_path('images/futbol_infantil_footer.png'); $fiestaHeroBgImagePath = public_path('images/futbol_infantil_hero.jpg'); if (! file_exists($fiestaHeaderImagePath)) { throw new \RuntimeException("Image not found at path: {$fiestaHeaderImagePath}"); } if (! file_exists($fiestaFooterImagePath)) { throw new \RuntimeException("Image not found at path: {$fiestaFooterImagePath}"); } if (! file_exists($fiestaHeroBgImagePath)) { throw new \RuntimeException("Image not found at path: {$fiestaHeroBgImagePath}"); } $fiestaHeaderLogo = new UploadedFile( $fiestaHeaderImagePath, 'futbol_infantil_header.png', 'image/png', null, true ); $fiestaFooterLogo = new UploadedFile( $fiestaFooterImagePath, 'futbol_infantil_footer.png', 'image/png', null, true ); $fiestaHeroBgImage = new UploadedFile( $fiestaHeroBgImagePath, 'futbol_infantil_hero.jpg', 'image/jpeg', null, true ); $this->tenantService->create([ 'codigo' => 'fiesta_futbol_infantil', 'nombre' => 'Fiesta Fútbol Infantil', 'dominio' => $fiestaDomain, 'primary_color' => '#00973F', 'secondary_color' => '#A0A0A0', 'danger_color' => '#FF8888', 'success_color' => '#198754', 'header_bg_color' => '#ffffff', 'footer_bg_color' => '#015327', 'header_logo' => $fiestaHeaderLogo, 'footer_logo' => $fiestaFooterLogo, 'hero_bg_image' => $fiestaHeroBgImage, 'hero_config' => [ 'title_html' => 'ASEGURÁ TU LUGAR', 'description_html' => 'Comprá tu entrada oficial en segundos de forma 100% segura. Preparate para vivir la experiencia completa.', 'button_text' => 'Quiero mi entrada', 'button_href' => null, ], 'event_config' => [ 'title' => 'FIESTA NACIONAL DEL FÚTBOL INFANTIL', 'location' => 'Sunchales, Santa Fe', 'dates' => ['2026-10-09', '2026-10-10', '2026-10-11', '2026-10-12'], ], 'social_media' => self::SOCIAL_MEDIA, ]); } }