form->fill([ 'autoPublishBlogs' => (bool) Setting::get('linkedin_auto_publish_blogs', '1'), 'autoPublishProducts' => (bool) Setting::get('linkedin_auto_publish_products', '1'), 'testTitle' => 'Truncgil Technology Paylaşım Testi', 'testText' => 'Truncgil Technology web sitemiz üzerinden LinkedIn entegrasyonumuz başarıyla tamamlanmıştır.', 'testUrl' => 'https://truncgil.com', ]); } public static function getNavigationLabel(): string { return 'LinkedIn Entegrasyonu'; } public function getTitle(): string { return 'LinkedIn Entegrasyonu & Otomasyon'; } public function form(Schema $schema): Schema { $linkedInService = app(LinkedInService::class); $status = $linkedInService->getTokenExpirationStatus(); $statusBadgeHtml = $status['is_valid'] ? ' Bağlı ve Aktif ' : ' Bağlantı Yok / Süresi Dolmuş '; $statusDetailsHtml = '
Açıklama: ' . e($status['message']) . '
Client ID: ' . e(config('linkedin.client_id')) . '
Organization ID: ' . e(config('linkedin.organization_id')) . '
Redirect URI: ' . e(config('linkedin.redirect_uri')) . '
'; return $schema ->components([ Grid::make(['default' => 1, 'md' => 2]) ->schema([ Section::make('LinkedIn Sayfa Bağlantı Durumu') ->description('Truncgil Technology LinkedIn Şirket Sayfası (ID: ' . config('linkedin.organization_id') . ') Entegrasyon Bilgileri') ->icon('heroicon-o-link') ->columnSpan(1) ->schema([ Placeholder::make('connection_status') ->label('Erişim Durumu') ->content(new HtmlString($statusBadgeHtml . $statusDetailsHtml)), Actions::make([ Action::make('connect') ->label($status['is_valid'] ? 'Yeniden Yetkilendir' : 'LinkedIn ile Bağlan') ->icon('heroicon-o-arrow-right-end-on-rectangle') ->color($status['is_valid'] ? 'gray' : 'primary') ->url(route('admin.linkedin.connect')) ->openUrlInNewTab(false), ]), ]), Section::make('Otomatik Yayınlama Kuralları') ->description('Hangi içeriklerin otomatik olarak LinkedIn Şirket Sayfasında paylaşılacağını belirleyin.') ->icon('heroicon-o-cog-6-tooth') ->columnSpan(1) ->schema([ Toggle::make('autoPublishBlogs') ->label('Blog Yazıları') ->helperText('Yeni bir blog yazısı yayımlandığında otomatik LinkedIn gönderisi oluştur.') ->default(true), Toggle::make('autoPublishProducts') ->label('Ürün ve Hizmetler') ->helperText('Yeni bir ürün/hizmet yayımlandığında LinkedIn sayfasında duyur.') ->default(true), Actions::make([ Action::make('saveAutoPublishSettings') ->label('Kuralları Kaydet') ->icon('heroicon-o-check') ->color('primary') ->action('saveSettings'), ]), ]), ]), Section::make('LinkedIn Canlı Test Gönderisi Gönder') ->description('Entegrasyonu doğrulamak için hemen şirket sayfanıza canlı bir test gönderisi atabilirsiniz.') ->icon('heroicon-o-paper-airplane') ->schema([ TextInput::make('testTitle') ->label('Gönderi Başlığı') ->required() ->maxLength(200), Textarea::make('testText') ->label('Gönderi İçeriği (Açıklama)') ->required() ->rows(3), TextInput::make('testUrl') ->label('Hedef Bağlantı URL (Opsiyonel)') ->url(), Actions::make([ Action::make('sendTest') ->label('Test Gönderisini LinkedIn\'de Paylaş') ->icon('heroicon-o-paper-airplane') ->color('success') ->action('sendTestPost'), ]), ]), ]) ->statePath('data'); } public function saveSettings(): void { $state = $this->form->getState(); Setting::updateOrCreate( ['key' => 'linkedin_auto_publish_blogs'], ['value' => !empty($state['autoPublishBlogs']) ? '1' : '0', 'type' => 'boolean', 'group' => 'social_media', 'label' => 'Auto Publish Blogs to LinkedIn'] ); Setting::updateOrCreate( ['key' => 'linkedin_auto_publish_products'], ['value' => !empty($state['autoPublishProducts']) ? '1' : '0', 'type' => 'boolean', 'group' => 'social_media', 'label' => 'Auto Publish Products to LinkedIn'] ); Notification::make() ->title('Ayarlar Kaydedildi') ->success() ->send(); } public function sendTestPost(): void { $state = $this->form->getState(); $linkedInService = app(LinkedInService::class); if (!$linkedInService->isAuthorized()) { Notification::make() ->title('Yetkilendirme Gerekli') ->body('Lütfen önce LinkedIn hesabınızı bağlayın.') ->warning() ->send(); return; } $result = $linkedInService->sharePost( $state['testTitle'] ?? '', $state['testText'] ?? '', $state['testUrl'] ?? null ); if ($result['success']) { Notification::make() ->title('Başarılı!') ->body($result['message']) ->success() ->send(); } else { Notification::make() ->title('Paylaşım Başarısız') ->body($result['message']) ->danger() ->send(); } } }