diff --git a/app/Filament/Pages/AdminVerification.php b/app/Filament/Pages/AdminVerification.php index 78d92df..c2cd697 100644 --- a/app/Filament/Pages/AdminVerification.php +++ b/app/Filament/Pages/AdminVerification.php @@ -18,9 +18,9 @@ use Filament\Forms\Components\Textarea; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Contracts\HasForms; -use Filament\Notifications\Notification; use Filament\Pages\Page; use Illuminate\Contracts\Pagination\LengthAwarePaginator; +use Illuminate\Support\Facades\Log; use UnitEnum; class AdminVerification extends Page implements HasActions, HasForms @@ -230,10 +230,10 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin $verificationRequest = VerificationRequest::with(['company.partnerMedia.journalists'])->find($requestId); if (! $verificationRequest) { - Notification::make() - ->title('Error') - ->body('Data verifikasi tidak ditemukan.') - ->danger() + CheerfulNotification::danger( + 'Belum ketemu nih 🙌', + 'Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', + ) ->send(); return; @@ -283,11 +283,18 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin ], ])); } - } catch (\Exception $e) { - Notification::make() - ->title('Error') - ->body('Terjadi kesalahan saat memproses verifikasi: '.$e->getMessage()) - ->danger() + } catch (\Throwable $e) { + Log::error('Verification processing failed', [ + 'error' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + 'request_id' => $requestId, + 'decision' => $decision->value, + ]); + + CheerfulNotification::danger( + 'Belum ketemu nih 🙌', + 'Data verifikasi belum kami temukan atau terjadi kesalahan sistem. Coba sebentar lagi, ya.', + ) ->send(); } } diff --git a/app/Filament/Pages/Company.php b/app/Filament/Pages/Company.php index 1ba9a75..a11b60f 100644 --- a/app/Filament/Pages/Company.php +++ b/app/Filament/Pages/Company.php @@ -2,6 +2,7 @@ namespace App\Filament\Pages; +use App\Filament\Support\CheerfulNotification; use App\Models\Company as CompanyModel; use App\Models\VerificationRequest; use Asmit\FilamentUpload\Forms\Components\AdvancedFileUpload; @@ -9,7 +10,6 @@ use BezhanSalleh\FilamentShield\Traits\HasPageShield; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Pages\Page; use Filament\Schemas\Components\Group; use Filament\Schemas\Components\Section; @@ -311,9 +311,6 @@ public function save() } } - Notification::make() - ->title('Informasi perusahaan berhasil diperbarui.') - ->success() - ->send(); + CheerfulNotification::update()->send(); } } diff --git a/app/Filament/Pages/Media.php b/app/Filament/Pages/Media.php index 7407b5d..a526413 100644 --- a/app/Filament/Pages/Media.php +++ b/app/Filament/Pages/Media.php @@ -4,6 +4,7 @@ use App\Enums\MediaClassification; use App\Enums\MediaType; +use App\Filament\Support\CheerfulNotification; use App\Models\Company; use App\Models\PartnerMedia; use App\Models\VerificationRequest; @@ -13,7 +14,6 @@ use Filament\Forms\Components\Radio; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Pages\Page; use Filament\Schemas\Components\Group; use Filament\Schemas\Components\Section; @@ -244,9 +244,6 @@ public function save() } } - Notification::make() - ->title('Informasi media berhasil diperbarui.') - ->success() - ->send(); + CheerfulNotification::update()->send(); } } diff --git a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php index a1eeb68..362ecad 100644 --- a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php +++ b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Manage\Journalists\Pages; +use App\Enums\VerificationStatus; use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Manage\Journalists\JournalistResource; use Filament\Resources\Pages\ManageRecords; @@ -25,7 +26,7 @@ protected function getHeaderActions(): array ->latest() ->first(); - if ($verificationRequest && $verificationRequest->status !== \App\Enums\VerificationStatus::NEED_REVISION) { + if ($verificationRequest && $verificationRequest->status !== VerificationStatus::NEED_REVISION) { return []; } diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php index 36f02e0..17dcf4f 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Tables; +use App\Enums\IssueSentiment; use App\Filament\Actions\Cheerful\DeleteAction; use App\Filament\Actions\Cheerful\EditAction; use App\Filament\Actions\Cheerful\ForceDeleteAction; @@ -57,12 +58,12 @@ public static function configure(Table $table): Table SelectFilter::make('issue') ->label('Filter Isu') - ->options(\App\Enums\IssueSentiment::class) + ->options(IssueSentiment::class) ->native(false), SelectFilter::make('response') ->label('Filter Respon') - ->options(\App\Enums\IssueSentiment::class) + ->options(IssueSentiment::class) ->native(false), ]) ->recordActions([ diff --git a/app/Filament/Resources/Publication/News/Tables/NewsTable.php b/app/Filament/Resources/Publication/News/Tables/NewsTable.php index b162507..4f3de34 100644 --- a/app/Filament/Resources/Publication/News/Tables/NewsTable.php +++ b/app/Filament/Resources/Publication/News/Tables/NewsTable.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Publication\News\Tables; +use App\Enums\NewsStatus; use App\Filament\Actions\Cheerful\DeleteAction; use App\Filament\Actions\Cheerful\EditAction; use App\Filament\Actions\Cheerful\ForceDeleteAction; @@ -69,8 +70,8 @@ public static function configure(Table $table): Table ->searchable() ->sortable() ->badge() - ->formatStateUsing(fn (\App\Enums\NewsStatus $state): string => $state->getLabel()) - ->color(fn (\App\Enums\NewsStatus $state): string => $state->getColor()), + ->formatStateUsing(fn (NewsStatus $state): string => $state->getLabel()) + ->color(fn (NewsStatus $state): string => $state->getColor()), TextColumn::make('published_at') ->label('Tgl Publish') diff --git a/app/Services/NewsCrawlerService.php b/app/Services/NewsCrawlerService.php index 8a636c3..a5cc07e 100644 --- a/app/Services/NewsCrawlerService.php +++ b/app/Services/NewsCrawlerService.php @@ -113,14 +113,21 @@ public function crawlFromGoogleNews(string $keyword, int $limit = 10, array $the } $count++; - } catch (\Exception $e) { - Log::error('Failed to insert item: '.$e->getMessage()); + } catch (\Throwable $e) { + Log::error('Failed to insert item', [ + 'error' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + 'link' => $itemData['original_link'] ?? 'unknown', + ]); } } return $count; - } catch (\Exception $e) { - Log::error('Crawler error: '.$e->getMessage()); + } catch (\Throwable $e) { + Log::error('Crawler error', [ + 'error' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + ]); return 0; } @@ -180,7 +187,10 @@ private function extractContent(Crawler $crawler): ?string return $text; } } - } catch (\Exception $e) { + } catch (\Throwable $e) { + Log::warning('Failed to check paragraphs content', [ + 'error' => $e->getMessage(), + ]); } return null; diff --git a/app/Services/VerificationService.php b/app/Services/VerificationService.php index 1d81ea5..cdf1af5 100644 --- a/app/Services/VerificationService.php +++ b/app/Services/VerificationService.php @@ -12,6 +12,7 @@ use App\Models\VerificationReview; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class VerificationService { @@ -256,7 +257,14 @@ public function processReview(VerificationRequest $verificationRequest, Decision } DB::commit(); - } catch (\Exception $e) { + } catch (\Throwable $e) { + Log::error('Verification review processing failed', [ + 'error' => $e->getMessage(), + 'trace' => $e->getTraceAsString(), + 'request_id' => $verificationRequest->id, + 'decision' => $decision->value, + ]); + DB::rollBack(); throw $e; }