diff --git a/app/Enums/ApprovalStatus.php b/app/Enums/ApprovalStatus.php index 0905f6c..cb050ec 100644 --- a/app/Enums/ApprovalStatus.php +++ b/app/Enums/ApprovalStatus.php @@ -19,9 +19,9 @@ enum ApprovalStatus: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::PENDING => CheerfulNotification::getMessage('Menunggu Persetujuan ⏳✨', 'Menunggu'), - self::ACCEPTED => CheerfulNotification::getMessage('Diterima! ✅🚀', 'Menerima'), - self::REJECTED => CheerfulNotification::getMessage('Ditolak, Tetap Semangat! 🛑😔', 'Menolak'), + self::PENDING => CheerfulNotification::getByKey('enum.approval_status.pending'), + self::ACCEPTED => CheerfulNotification::getByKey('enum.approval_status.accepted'), + self::REJECTED => CheerfulNotification::getByKey('enum.approval_status.rejected'), }; } diff --git a/app/Enums/CooperationStatus.php b/app/Enums/CooperationStatus.php index 35e4385..92f07da 100644 --- a/app/Enums/CooperationStatus.php +++ b/app/Enums/CooperationStatus.php @@ -21,11 +21,11 @@ enum CooperationStatus: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::PENDING => CheerfulNotification::getMessage('Menunggu... Tetap Sabar Ya! ⏳✨', 'Menunggu'), - self::ASSIGNMENT => CheerfulNotification::getMessage('Sedang Ditugaskan nih! 📋🛠️', 'Penugasan'), - self::VERIFICATION => CheerfulNotification::getMessage('Lagi Diverifikasi, Tunggu Sebentar! 🔍✅', 'Verifikasi'), - self::PAYMENT => CheerfulNotification::getMessage('Waktunya Pembayaran! 💵🚀', 'Pembayaran'), - self::COMPLETED => CheerfulNotification::getMessage('Selesai! Mantap Jiwa! 🎉🔥', 'Selesai'), + self::PENDING => CheerfulNotification::getByKey('enum.cooperation_status.pending'), + self::ASSIGNMENT => CheerfulNotification::getByKey('enum.cooperation_status.assignment'), + self::VERIFICATION => CheerfulNotification::getByKey('enum.cooperation_status.verification'), + self::PAYMENT => CheerfulNotification::getByKey('enum.cooperation_status.payment'), + self::COMPLETED => CheerfulNotification::getByKey('enum.cooperation_status.completed'), }; } diff --git a/app/Enums/DataChangeDecision.php b/app/Enums/DataChangeDecision.php index a44a9cd..bf176bf 100644 --- a/app/Enums/DataChangeDecision.php +++ b/app/Enums/DataChangeDecision.php @@ -18,8 +18,8 @@ enum DataChangeDecision: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::APPROVED => CheerfulNotification::getMessage('Perubahan Disetujui! ✅🚀', 'Disetujui'), - self::REJECTED => CheerfulNotification::getMessage('Perubahan Ditolak 🛑😔', 'Ditolak'), + self::APPROVED => CheerfulNotification::getByKey('enum.data_change_decision.approved'), + self::REJECTED => CheerfulNotification::getByKey('enum.data_change_decision.rejected'), }; } diff --git a/app/Enums/DataChangeStatus.php b/app/Enums/DataChangeStatus.php index 419f738..0b347d0 100644 --- a/app/Enums/DataChangeStatus.php +++ b/app/Enums/DataChangeStatus.php @@ -19,9 +19,9 @@ enum DataChangeStatus: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::PENDING => CheerfulNotification::getMessage('Menunggu Verifikasi ⏳✨', 'Menunggu Verifikasi'), - self::APPROVED => CheerfulNotification::getMessage('Perubahan Disetujui! ✅🚀', 'Disetujui'), - self::REJECTED => CheerfulNotification::getMessage('Perubahan Ditolak 🛑😔', 'Ditolak'), + self::PENDING => CheerfulNotification::getByKey('enum.data_change_status.pending'), + self::APPROVED => CheerfulNotification::getByKey('enum.data_change_status.approved'), + self::REJECTED => CheerfulNotification::getByKey('enum.data_change_status.rejected'), }; } diff --git a/app/Enums/DecisionAdmin.php b/app/Enums/DecisionAdmin.php index ce7b101..e716349 100644 --- a/app/Enums/DecisionAdmin.php +++ b/app/Enums/DecisionAdmin.php @@ -19,9 +19,9 @@ enum DecisionAdmin: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::APPROVED => CheerfulNotification::getMessage('Sudah Disetujui! ✅🚀', 'Disetujui'), - self::NEED_REVISION => CheerfulNotification::getMessage('Perlu Revisi nih! ✍️🛠️', 'Perlu Revisi'), - self::REJECTED => CheerfulNotification::getMessage('Ditolak, Tetap Semangat! 🛑😔', 'Ditolak'), + self::APPROVED => CheerfulNotification::getByKey('enum.decision_admin.approved'), + self::NEED_REVISION => CheerfulNotification::getByKey('enum.decision_admin.need_revision'), + self::REJECTED => CheerfulNotification::getByKey('enum.decision_admin.rejected'), }; } diff --git a/app/Enums/NewsStatus.php b/app/Enums/NewsStatus.php index 0e05d9c..a50f14e 100644 --- a/app/Enums/NewsStatus.php +++ b/app/Enums/NewsStatus.php @@ -18,9 +18,9 @@ enum NewsStatus: int implements HasLabel public function getLabel(): ?string { return match ($this) { - self::DRAFT => CheerfulNotification::getMessage('Draft - Sempurnakan Lagi! ✍️🛠️', 'Draft'), - self::PUBLISHED => CheerfulNotification::getMessage('Telah Tayang! 🚀✨', 'Publish'), - self::ARCHIVED => CheerfulNotification::getMessage('Arsip - Disimpan Dulu Ya! 📦🔒', 'Arsip'), + self::DRAFT => CheerfulNotification::getByKey('enum.news_status.draft'), + self::PUBLISHED => CheerfulNotification::getByKey('enum.news_status.published'), + self::ARCHIVED => CheerfulNotification::getByKey('enum.news_status.archived'), }; } diff --git a/app/Enums/VerificationStatus.php b/app/Enums/VerificationStatus.php index f94c1e8..27b4fef 100644 --- a/app/Enums/VerificationStatus.php +++ b/app/Enums/VerificationStatus.php @@ -20,10 +20,10 @@ enum VerificationStatus: int implements HasColor, HasLabel public function getLabel(): ?string { return match ($this) { - self::PENDING => CheerfulNotification::getMessage('Menunggu Verifikasi ⏳✨', 'Menunggu Verifikasi'), - self::APPROVED => CheerfulNotification::getMessage('Sudah Disetujui! ✅🚀', 'Disetujui'), - self::NEED_REVISION => CheerfulNotification::getMessage('Perlu Revisi nih! ✍️🛠️', 'Perlu Revisi'), - self::REJECTED => CheerfulNotification::getMessage('Ditolak, Tetap Semangat! 🛑😔', 'Ditolak'), + self::PENDING => CheerfulNotification::getByKey('enum.verification_status.pending'), + self::APPROVED => CheerfulNotification::getByKey('enum.verification_status.approved'), + self::NEED_REVISION => CheerfulNotification::getByKey('enum.verification_status.need_revision'), + self::REJECTED => CheerfulNotification::getByKey('enum.verification_status.rejected'), }; } diff --git a/app/Filament/Actions/Cheerful/CreateAction.php b/app/Filament/Actions/Cheerful/CreateAction.php index ef2c065..c71765b 100644 --- a/app/Filament/Actions/Cheerful/CreateAction.php +++ b/app/Filament/Actions/Cheerful/CreateAction.php @@ -11,9 +11,9 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Data Seru! 🚀✨', 'Tambah Data Baru')); + $this->modalHeading(fn () => CheerfulNotification::getByKey('actions.create.title')); - $this->modalDescription(fn () => CheerfulNotification::getMessage('Isi form di bawah ini dengan semangat ya, biar datanya tersimpan dengan aman! 💪😊', 'Silakan isi formulir di bawah ini dengan lengkap untuk menambahkan data baru.')); + $this->modalDescription(fn () => CheerfulNotification::getByKey('actions.create.description')); $this->successNotification(fn () => CheerfulNotification::create() ); diff --git a/app/Filament/Actions/Cheerful/EditAction.php b/app/Filament/Actions/Cheerful/EditAction.php index 464f84a..35c831d 100644 --- a/app/Filament/Actions/Cheerful/EditAction.php +++ b/app/Filament/Actions/Cheerful/EditAction.php @@ -11,9 +11,9 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading(fn () => CheerfulNotification::getMessage('Sempurnakan Datanya 📝✨', 'Ubah Data')); + $this->modalHeading(fn () => CheerfulNotification::getByKey('actions.edit.title')); - $this->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kita perbarui supaya datanya makin akurat dan segar lagi! 🛠️👌', 'Silakan perbarui informasi pada formulir di bawah ini.')); + $this->modalDescription(fn () => CheerfulNotification::getByKey('actions.edit.description')); $this->successNotification(fn () => CheerfulNotification::update() ); diff --git a/app/Filament/Actions/Cheerful/RestoreAction.php b/app/Filament/Actions/Cheerful/RestoreAction.php index 9917440..6d0c36d 100644 --- a/app/Filament/Actions/Cheerful/RestoreAction.php +++ b/app/Filament/Actions/Cheerful/RestoreAction.php @@ -11,9 +11,9 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading(fn () => CheerfulNotification::getMessage('Panggil Balik Datanya? ♻️✨', 'Pulihkan Data')); + $this->modalHeading(fn () => CheerfulNotification::getByKey('actions.restore.title')); - $this->modalDescription(fn () => CheerfulNotification::getMessage('Siap buat mengaktifkan kembali data yang sempat hilang? Yuk, kita pulihkan bareng-bareng! 😉🙌', 'Apakah Anda yakin ingin memulihkan data yang telah dihapus ini?')); + $this->modalDescription(fn () => CheerfulNotification::getByKey('actions.restore.description')); $this->successNotification(fn () => CheerfulNotification::restore() ); diff --git a/app/Filament/Actions/DefaultBulkActions.php b/app/Filament/Actions/DefaultBulkActions.php index 64c9f4e..8c477ae 100644 --- a/app/Filament/Actions/DefaultBulkActions.php +++ b/app/Filament/Actions/DefaultBulkActions.php @@ -13,19 +13,19 @@ public static function make(string $entity): array { return [ DeleteBulkAction::make() - ->modalHeading(fn () => CheerfulNotification::getMessage("Mau Hapus Banyak {$entity}? 🗑️🤔", "Hapus Data {$entity} Terpilih")) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.bulk.delete', ['entity' => $entity])) ->successNotification( CheerfulNotification::bulkDelete() ), ForceDeleteBulkAction::make() - ->modalHeading(fn () => CheerfulNotification::getMessage("Hapus Permanen {$entity} Terpilih? 🗑️🔥", "Hapus Permanen Data {$entity} Terpilih")) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.bulk.force_delete', ['entity' => $entity])) ->successNotification( CheerfulNotification::bulkForceDelete() ), RestoreBulkAction::make() - ->modalHeading(fn () => CheerfulNotification::getMessage("Pulihkan {$entity} yang Dipilih? ♻️✨", "Pulihkan Data {$entity} Terpilih")) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.bulk.restore', ['entity' => $entity])) ->successNotification( CheerfulNotification::bulkRestore() ), diff --git a/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php b/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php index a361ed7..88d653c 100644 --- a/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/ApproveAction.php @@ -25,8 +25,8 @@ protected function setUp(): void ->icon('heroicon-o-check') ->size('sm') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Setujui Verifikasi? ✅✨', 'Setujui Verifikasi')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin datanya sudah oke semua? Yuk, kita resmikan verifikasinya sekarang! 🚀😊', 'Apakah Anda yakin ingin menyetujui verifikasi ini? Seluruh data yang diajukan akan dianggap valid.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.approve.title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('actions.approve.description')) ->modalSubmitActionLabel('Ya, Setujui') ->action(function (array $arguments): void { $this->processReview($arguments['id'], DecisionAdmin::APPROVED, null); diff --git a/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php b/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php index acad200..73eac09 100644 --- a/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php +++ b/app/Filament/Pages/AdminVerification/Actions/Concerns/CanProcessReview.php @@ -21,8 +21,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin if (! $verificationRequest) { CheerfulNotification::danger( - CheerfulNotification::getMessage('Belum ketemu nih 🙌', 'Data Tidak Ditemukan'), - CheerfulNotification::getMessage('Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', 'Permintaan verifikasi tidak ditemukan dalam sistem kami.') + CheerfulNotification::getByKey('verification.admin.process.not_found.title'), + CheerfulNotification::getByKey('verification.admin.process.not_found.body') ) ->send(); @@ -60,8 +60,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin }; CheerfulNotification::success( - CheerfulNotification::getMessage('Berhasil Diproses! ✨', 'Berhasil Diproses'), - CheerfulNotification::getMessage("Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke pengguna. Kerja bagus, Admin! 💪", "Proses verifikasi telah {$actionLabel} dan notifikasi telah dikirimkan ke pihak pengguna.") + CheerfulNotification::getByKey('verification.admin.process.success.title'), + CheerfulNotification::getByKey('verification.admin.process.success.body', ['action' => $actionLabel]) ) ->send(); @@ -69,19 +69,19 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin $partnerUser = $verificationRequest->company?->user; if ($partnerUser) { $statusTitle = match ($decision) { - DecisionAdmin::APPROVED => CheerfulNotification::getMessage('Horee! Verifikasi Disetujui 🎉', 'Verifikasi Disetujui'), - DecisionAdmin::NEED_REVISION => CheerfulNotification::getMessage('Yah, Ada Yang Perlu Direvisi nih 📝', 'Perlu Revisi Verifikasi'), - DecisionAdmin::REJECTED => CheerfulNotification::getMessage('Maaf, Verifikasi Ditolak 😔', 'Verifikasi Ditolak'), + DecisionAdmin::APPROVED => CheerfulNotification::getByKey('verification.admin.notif_user.approved.title'), + DecisionAdmin::NEED_REVISION => CheerfulNotification::getByKey('verification.admin.notif_user.revision.title'), + DecisionAdmin::REJECTED => CheerfulNotification::getByKey('verification.admin.notif_user.rejected.title'), }; $body = match ($decision) { - DecisionAdmin::APPROVED => CheerfulNotification::getMessage('Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! 🎊', 'Pengajuan verifikasi perusahaan Anda telah disetujui.'), - DecisionAdmin::NEED_REVISION => CheerfulNotification::getMessage('Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. 💪', 'Admin meminta beberapa perbaikan pada pengajuan verifikasi Anda.'), - DecisionAdmin::REJECTED => CheerfulNotification::getMessage('Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. 💔', 'Pengajuan verifikasi perusahaan Anda tidak dapat kami setujui saat ini.'), + DecisionAdmin::APPROVED => CheerfulNotification::getByKey('verification.admin.notif_user.approved.body'), + DecisionAdmin::NEED_REVISION => CheerfulNotification::getByKey('verification.admin.notif_user.revision.body'), + DecisionAdmin::REJECTED => CheerfulNotification::getByKey('verification.admin.notif_user.rejected.body'), }; if ($note) { - $body .= "\n\n".CheerfulNotification::getMessage("Catatan Admin: {$note} 😊", "Catatan Admin: {$note}"); + $body .= "\n\n".CheerfulNotification::getByKey('verification.admin.notif_user.note', ['note' => $note]); } $partnerUser->notify(new BroadcastNotification([ @@ -104,8 +104,8 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin ]); CheerfulNotification::danger( - CheerfulNotification::getMessage('Terjadi Kesalahan ⚠️', 'Terjadi Kesalahan Sistem'), - CheerfulNotification::getMessage('Proses verifikasi gagal karena kesalahan sistem. Tim kami sudah mencatat masalah ini. Silakan coba lagi nanti.', 'Proses verifikasi gagal dilakukan karena kendala teknis. Silakan laporkan jika masalah berlanjut.') + CheerfulNotification::getByKey('verification.admin.process.error.title'), + CheerfulNotification::getByKey('verification.admin.process.error.body') ) ->send(); } diff --git a/app/Filament/Pages/AdminVerification/Actions/RejectAction.php b/app/Filament/Pages/AdminVerification/Actions/RejectAction.php index e6909d3..1ad3bb3 100644 --- a/app/Filament/Pages/AdminVerification/Actions/RejectAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/RejectAction.php @@ -26,8 +26,8 @@ protected function setUp(): void ->icon('heroicon-o-x-mark') ->size('sm') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Verifikasi? 🛑🤔', 'Tolak Verifikasi')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin mau ditolak secara permanen? Pastikan alasannya sudah sreg di hati ya! 😔📝', 'Apakah Anda yakin ingin menolak verifikasi ini secara permanen?')) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.reject.title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('actions.reject.description')) ->modalSubmitActionLabel('Ya, Tolak') ->schema([ Textarea::make('note') diff --git a/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php b/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php index 19dbdf1..8c6c3ea 100644 --- a/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php +++ b/app/Filament/Pages/AdminVerification/Actions/RevisionAction.php @@ -26,8 +26,8 @@ protected function setUp(): void ->color('warning') ->icon('heroicon-o-pencil-square') ->size('sm') - ->modalHeading(fn () => CheerfulNotification::getMessage('Minta Revisi Data 📝⚠️', 'Minta Revisi Data')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Siap kirim instruksi perbaikan? Kasih catatan yang jelas ya biar pengguna nggak bingung! 😊', 'Silakan masukkan instruksi perbaikan yang diperlukan untuk pengguna.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('actions.revision.title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('actions.revision.description')) ->schema([ Textarea::make('note') ->label('Catatan Revisi') diff --git a/app/Filament/Pages/AdminVerification/Index.php b/app/Filament/Pages/AdminVerification/Index.php index c970eb9..b95cd26 100644 --- a/app/Filament/Pages/AdminVerification/Index.php +++ b/app/Filament/Pages/AdminVerification/Index.php @@ -158,10 +158,10 @@ public function verifications(): LengthAwarePaginator ]), ], 'messages' => [ - 'detail' => CheerfulNotification::getMessage('Detail Data 🔍✨', 'Detail'), - 'revision' => CheerfulNotification::getMessage('Sabar ya, pengguna lagi sibuk revisi data nih! ⏳✍️', 'Menunggu revisi dari pengguna...'), - 'approved' => CheerfulNotification::getMessage('Yeay! Verifikasi sudah beres dan disetujui! ✅🚀', 'Verifikasi selesai'), - 'rejected' => CheerfulNotification::getMessage('Yah, pengajuannya terpaksa belum bisa diterima. 🛑😔', 'Pengajuan ditolak'), + 'detail' => CheerfulNotification::getByKey('verification.admin.messages.detail'), + 'revision' => CheerfulNotification::getByKey('verification.admin.messages.revision'), + 'approved' => CheerfulNotification::getByKey('verification.admin.messages.approved'), + 'rejected' => CheerfulNotification::getByKey('verification.admin.messages.rejected'), ], ]; }); @@ -246,11 +246,11 @@ public function rejectAction(): Action public function getEmptyStateHeading(): string { - return CheerfulNotification::getMessage('Belum ada pengajuan verifikasi nih! 📭✨', 'Tidak ada pengajuan verifikasi'); + return CheerfulNotification::getByKey('verification.admin.empty_state.heading'); } public function getEmptyStateDescription(): string { - return CheerfulNotification::getMessage('Tenang saja, mungkin sebentar lagi bakal ada yang kirim pengajuan verifikasi. Ditunggu saja ya! 😊⏳', 'Belum ada pengajuan verifikasi dari user.'); + return CheerfulNotification::getByKey('verification.admin.empty_state.description'); } } diff --git a/app/Filament/Pages/Auth/EmailVerification.php b/app/Filament/Pages/Auth/EmailVerification.php index 1675c9c..6714105 100644 --- a/app/Filament/Pages/Auth/EmailVerification.php +++ b/app/Filament/Pages/Auth/EmailVerification.php @@ -34,8 +34,8 @@ public function resendNotificationAction(): Action $this->sendEmailVerificationNotification($this->getVerifiable()); CheerfulNotification::success( - CheerfulNotification::getMessage('Mail Meluncur! 📧🚀', 'Email Terkirim'), - CheerfulNotification::getMessage('Tautan verifikasi baru sudah dikirim ke alamat surelmu. Cek inbox (atau spam) ya! 😉✨', 'Tautan verifikasi baru telah dikirimkan ke alamat email Anda. Silakan periksa kotak masuk atau spam.') + CheerfulNotification::getByKey('auth.email_verification.resend_success.title'), + CheerfulNotification::getByKey('auth.email_verification.resend_success.body') )->send(); }); } @@ -43,8 +43,8 @@ public function resendNotificationAction(): Action protected function getRateLimitedNotification(TooManyRequestsException $exception): ?Notification { return CheerfulNotification::danger( - CheerfulNotification::getMessage('Pelan-pelan ya ⏳', 'Terlalu Banyak Permintaan'), - CheerfulNotification::getMessage('Permintaan terlalu sering. Tunggu sebentar lalu coba lagi dalam '.$exception->secondsUntilAvailable.' detik.', 'Anda telah melakukan terlalu banyak permintaan. Silakan coba kembali dalam '.$exception->secondsUntilAvailable.' detik.') + CheerfulNotification::getByKey('auth.email_verification.rate_limited.title'), + CheerfulNotification::getByKey('auth.email_verification.rate_limited.body', ['seconds' => $exception->secondsUntilAvailable]) )->send(); } } diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php index 1c5cef3..204afd9 100644 --- a/app/Filament/Pages/Auth/Login.php +++ b/app/Filament/Pages/Auth/Login.php @@ -103,8 +103,8 @@ public function authenticate(): ?LoginResponse if ($user instanceof FilamentUser && (! $user->canAccessPanel(Filament::getCurrentOrDefaultPanel()))) { CheerfulNotification::danger( - CheerfulNotification::getMessage('Akun Tidak Aktif 🚫', 'Akses Ditolak'), - CheerfulNotification::getMessage('Maaf, akun Anda saat ini tidak aktif. Silakan hubungi Administrator. 📞', 'Akun Anda saat ini tidak memiliki izin untuk mengakses sistem. Silakan hubungi administrator.') + CheerfulNotification::getByKey('auth.login.inactive.title'), + CheerfulNotification::getByKey('auth.login.inactive.body') )->send(); throw ValidationException::withMessages([]); @@ -151,8 +151,8 @@ public function authenticate(): ?LoginResponse session()->regenerate(); CheerfulNotification::success( - CheerfulNotification::getMessage('Hore! Berhasil Masuk 🎉', 'Login Berhasil'), - CheerfulNotification::getMessage('Selamat datang kembali, '.$user->name.'! Siap untuk beraksi hari ini? 🚀✨', 'Selamat datang kembali, '.$user->name.'. Anda telah berhasil masuk ke dalam sistem.') + CheerfulNotification::getByKey('auth.login.success.title'), + CheerfulNotification::getByKey('auth.login.success.body', ['name' => $user->name]) )->send(); return app(LoginResponse::class); @@ -161,8 +161,8 @@ public function authenticate(): ?LoginResponse protected function throwFailureValidationException(): never { CheerfulNotification::danger( - CheerfulNotification::getMessage('Ups! Gagal Masuk 😅', 'Login Gagal'), - CheerfulNotification::getMessage('Sepertinya ada yang salah nih. Coba cek email atau kata sandi mu lagi ya! 🤔🔐', 'Kredensial yang Anda masukkan salah. Silakan periksa kembali email dan kata sandi Anda.') + CheerfulNotification::getByKey('auth.login.failed.title'), + CheerfulNotification::getByKey('auth.login.failed.body') )->send(); throw ValidationException::withMessages([]); diff --git a/app/Filament/Pages/Auth/Profile.php b/app/Filament/Pages/Auth/Profile.php index c108168..a618ed7 100644 --- a/app/Filament/Pages/Auth/Profile.php +++ b/app/Filament/Pages/Auth/Profile.php @@ -90,8 +90,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make(CheerfulNotification::getMessage('Detail Profil 👤✨', 'Profil Pengguna')) - ->description(CheerfulNotification::getMessage('Yuk, kelola informasi detail profil Anda agar selalu terkini! 👤🚀', 'Kelola informasi profil dasar Anda di bawah ini.')) + Section::make(CheerfulNotification::getByKey('profile.detail.title')) + ->description(CheerfulNotification::getByKey('profile.detail.description')) ->icon(CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ Grid::make(2) @@ -127,8 +127,8 @@ public function form(Schema $schema): Schema ]), ]), - Section::make(CheerfulNotification::getMessage('Pengaturan Tampilan & UX 🎨✨', 'Preferensi Tampilan')) - ->description(CheerfulNotification::getMessage('Personalisasi pengalaman aplikasi Anda agar lebih nyaman dan sesuai selera! 🌈🚀', 'Sesuaikan gaya bahasa, warna tema, dan jenis huruf aplikasi Anda.')) + Section::make(CheerfulNotification::getByKey('profile.ux.title')) + ->description(CheerfulNotification::getByKey('profile.ux.description')) ->icon(CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-swatch' : null) ->schema([ Grid::make(2) @@ -197,8 +197,8 @@ public function form(Schema $schema): Schema ]), ]), - Section::make(CheerfulNotification::getMessage('Keamanan Akun 🔐✨', 'Ubah Kata Sandi')) - ->description(CheerfulNotification::getMessage('Ingin ganti kata sandi? Pastikan pilih yang kuat ya biar makin aman! 🔐💪', 'Silakan masukkan kata sandi baru untuk memperbarui keamanan akun Anda.')) + Section::make(CheerfulNotification::getByKey('profile.security.title')) + ->description(CheerfulNotification::getByKey('profile.security.description')) ->icon(CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-lock-closed' : null) ->schema([ Grid::make(2) @@ -247,8 +247,8 @@ protected function handleRecordUpdate(Model $record, array $data): Model protected function afterSave(): void { CheerfulNotification::success( - CheerfulNotification::getMessage('Profil Diperbarui! ✨', 'Profil Diperbarui'), - CheerfulNotification::getMessage('Sip! Detail profil baru Anda sudah tersimpan dengan aman. Terus semangat ya! 💪😊', 'Perubahan pada profil Anda telah berhasil disimpan ke dalam sistem.') + CheerfulNotification::getByKey('profile.saved.title'), + CheerfulNotification::getByKey('profile.saved.body') )->send(); if (! filled($this->form->getState()['password'] ?? null)) { @@ -263,8 +263,8 @@ protected function afterSave(): void session()->regenerateToken(); CheerfulNotification::info( - CheerfulNotification::getMessage('Sesi Berakhir 🔐', 'Keamanan Diperbarui'), - CheerfulNotification::getMessage('Anda telah mengubah kata sandi. Silakan masuk kembali dengan kata sandi baru Anda ya. 😉👋', 'Kata sandi Anda telah berhasil diubah. Harap lakukan login kembali menggunakan kata sandi yang baru untuk alasan keamanan.') + CheerfulNotification::getByKey('profile.password_changed.title'), + CheerfulNotification::getByKey('profile.password_changed.body') )->send(); $this->redirect(filament()->getLoginUrl()); diff --git a/app/Filament/Pages/Auth/Registration.php b/app/Filament/Pages/Auth/Registration.php index 8f7b12b..6d0b87d 100644 --- a/app/Filament/Pages/Auth/Registration.php +++ b/app/Filament/Pages/Auth/Registration.php @@ -81,8 +81,8 @@ protected function handleRegistration(array $data): Model $user->assignRole('Perusahaan'); CheerfulNotification::success( - CheerfulNotification::getMessage('Selamat Datang! 👋🎉', 'Pendaftaran Berhasil'), - CheerfulNotification::getMessage("Halooo, {$user->name}!, terima kasih sudah bergabung! Akunmu berhasil dibuat. Silakan verifikasi alamat surelmu! 🚀✨", "Selamat datang, {$user->name}. Akun Anda telah berhasil dibuat. Silakan periksa email Anda untuk melakukan verifikasi.") + CheerfulNotification::getByKey('auth.registration.success.title'), + CheerfulNotification::getByKey('auth.registration.success.body', ['name' => $user->name]) ) ->send(); @@ -90,8 +90,8 @@ protected function handleRegistration(array $data): Model ->get() ->each(function ($admin) use ($user): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Warga Baru Nih! 👋🎉', 'Pendaftaran Pengguna Baru'), - 'body' => CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mendaftar. Yuk cek kelengkapannya! 🚀", "Pengguna baru {$user->name} telah mendaftar ke dalam sistem."), + 'title' => CheerfulNotification::getByKey('auth.registration.admin_notify.title'), + 'body' => CheerfulNotification::getByKey('auth.registration.admin_notify.body', ['name' => $user->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Company.php b/app/Filament/Pages/Company.php index 1466ec7..55bd632 100644 --- a/app/Filament/Pages/Company.php +++ b/app/Filament/Pages/Company.php @@ -184,8 +184,8 @@ public static function form(Schema $schema): Schema return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Informasi Perusahaan 🏗️✨', 'Profil Perusahaan')) - ->description(fn () => CheerfulNotification::getMessage('Kelola informasi perusahaan Anda biar tetap resmi dan kredibel! 🚀✨', 'Kelola informasi detail perusahaan Anda di sini.')) + Section::make(fn () => CheerfulNotification::getByKey('company.section.title')) + ->description(fn () => CheerfulNotification::getByKey('company.section.description')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-building-office-2' : null) ->schema([ TextInput::make('name') @@ -231,7 +231,7 @@ public static function form(Schema $schema): Schema ->schema( array_merge( [ - Section::make(fn () => CheerfulNotification::getMessage('NIK Direktur 👤✨', 'NIK Direktur')) + Section::make(fn () => CheerfulNotification::getByKey('company.nik_section.title')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ TextInput::make('director_nik') @@ -256,7 +256,7 @@ public static function form(Schema $schema): Schema collect($documents) ->map(function (array $doc): Section { - return Section::make(fn () => CheerfulNotification::getMessage($doc['title'].' 📄✨', $doc['title'])) + return Section::make(fn () => CheerfulNotification::getByKey('general.empty_msg', ['doc__title' => $doc['title']])) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make($doc['text_name']) @@ -293,8 +293,8 @@ public function saveAction(): Action return Action::make('save') ->label('Simpan') - ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Perubahan Profil 📝✨', 'Ubah Profil Perusahaan')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin mengubah data perusahaan? Jelaskan alasannya supaya proses verifikasi makin lancar! 😊', 'Silakan masukkan alasan Anda melakukan perubahan profil perusahaan.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('company.save.title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('company.save.description')) ->modal($needsReview) ->schema( $needsReview @@ -330,8 +330,8 @@ public function performSave(array $data, bool $needsReview = false): void if ($existingRequest) { CheerfulNotification::warning( - CheerfulNotification::getMessage('Pengajuan Sudah Ada ⏳', 'Pengajuan Sedang Diproses'), - CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.', 'Pengajuan perubahan data perusahaan Anda masih dalam proses verifikasi oleh admin.') + CheerfulNotification::getByKey('data_change.existing.title'), + CheerfulNotification::getByKey('data_change.existing.body') ) ->send(); @@ -396,8 +396,8 @@ public function performSave(array $data, bool $needsReview = false): void if (empty($changedFields)) { CheerfulNotification::info( - CheerfulNotification::getMessage('Belum ada yang berubah ✨', 'Tidak Ada Perubahan'), - CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali 💪', 'Silakan ubah data terlebih dahulu sebelum melakukan penyimpanan.') + CheerfulNotification::getByKey('data_change.no_change.title'), + CheerfulNotification::getByKey('data_change.no_change.body') ) ->send(); @@ -414,8 +414,8 @@ public function performSave(array $data, bool $needsReview = false): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Permohonan Berhasil 🎉', 'Permohonan Berhasil'), - CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin ⏳', 'Permohonan perubahan data perusahaan telah berhasil dikirimkan.') + CheerfulNotification::getByKey('data_change.success.title'), + CheerfulNotification::getByKey('data_change.success.body') ) ->send(); @@ -423,8 +423,8 @@ public function performSave(array $data, bool $needsReview = false): void ->get() ->each(function ($admin) use ($dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Data ✨', 'Pengajuan Perubahan Perusahaan'), - 'body' => CheerfulNotification::getMessage('Halooo Admin! 👋 '.auth()->user()->name.' baru saja mengajukan perubahan data. Yuk, cek detailnya dan lakukan verifikasi ya! 🚀', 'Pengguna '.auth()->user()->name.' telah mengajukan perubahan data perusahaan.'), + 'title' => CheerfulNotification::getByKey('data_change.admin_notify.title'), + 'body' => CheerfulNotification::getByKey('data_change.admin_notify.body', ['name' => auth()->user()->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Media.php b/app/Filament/Pages/Media.php index b9c1107..2802cb9 100644 --- a/app/Filament/Pages/Media.php +++ b/app/Filament/Pages/Media.php @@ -157,8 +157,8 @@ public static function form(Schema $schema): Schema return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Detail Informasi 📰✨', 'Informasi Media')) - ->description(fn () => CheerfulNotification::getMessage('Kelola informasi media Anda biar tetap eksis dan terpercaya! 🚀✨', 'Kelola informasi detail media Anda di sini.')) + Section::make(fn () => CheerfulNotification::getByKey('media.section.title')) + ->description(fn () => CheerfulNotification::getByKey('media.section.description')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-newspaper' : null) ->schema([ TextInput::make('name') @@ -205,7 +205,7 @@ public static function form(Schema $schema): Schema ->schema( collect($documents) ->map(function (array $doc): Section { - return Section::make(fn () => CheerfulNotification::getMessage($doc['title'].' 📄✨', $doc['title'])) + return Section::make(fn () => CheerfulNotification::getByKey('general.empty_msg', ['doc__title' => $doc['title']])) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make($doc['text_name']) @@ -240,8 +240,8 @@ public function saveAction(): Action return Action::make('save') ->label('Simpan') - ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Perubahan Media 📝✨', 'Ubah Data Media')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Mau mengubah data media? Sertakan alasan yang jelas ya biar admin makin yakin! 😊', 'Silakan masukkan alasan Anda melakukan perubahan data media.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('media.save.title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('media.save.description')) ->modal($needsReview) ->schema( $needsReview @@ -271,8 +271,8 @@ public function performSave(array $data = [], bool $needsReview = false): void if ($existingRequest) { CheerfulNotification::warning( - CheerfulNotification::getMessage('Pengajuan Sudah Ada ⏳', 'Pengajuan Sedang Diproses'), - CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.', 'Pengajuan perubahan data media Anda masih dalam proses verifikasi oleh admin.') + CheerfulNotification::getByKey('data_change.existing.title'), + CheerfulNotification::getByKey('data_change.existing.body') ) ->send(); @@ -337,8 +337,8 @@ public function performSave(array $data = [], bool $needsReview = false): void if (empty($changedFields)) { CheerfulNotification::info( - CheerfulNotification::getMessage('Belum ada yang berubah ✨', 'Tidak Ada Perubahan'), - CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali 💪', 'Silakan ubah data terlebih dahulu sebelum melakukan penyimpanan.') + CheerfulNotification::getByKey('data_change.no_change.title'), + CheerfulNotification::getByKey('data_change.no_change.body') ) ->send(); @@ -355,8 +355,8 @@ public function performSave(array $data = [], bool $needsReview = false): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Permohonan Berhasil 🎉', 'Permohonan Berhasil'), - CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin ⏳', 'Permohonan perubahan data media telah berhasil dikirimkan.') + CheerfulNotification::getByKey('data_change.success.title'), + CheerfulNotification::getByKey('data_change.success.body') ) ->send(); @@ -364,8 +364,8 @@ public function performSave(array $data = [], bool $needsReview = false): void ->get() ->each(function ($admin) use ($dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Data Media ✨', 'Pengajuan Perubahan Media'), - 'body' => CheerfulNotification::getMessage('Halooo Admin! 👋 '.auth()->user()->name.' baru saja mengajukan perubahan data media. Yuk, cek detailnya! 🚀', 'Pengguna '.auth()->user()->name.' telah mengajukan perubahan data media.'), + 'title' => CheerfulNotification::getByKey('data_change.admin_notify.title'), + 'body' => CheerfulNotification::getByKey('data_change.admin_notify.body', ['name' => auth()->user()->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Pages/Settings/ManageGeneralSettings.php b/app/Filament/Pages/Settings/ManageGeneralSettings.php index b11593d..5c4eee5 100644 --- a/app/Filament/Pages/Settings/ManageGeneralSettings.php +++ b/app/Filament/Pages/Settings/ManageGeneralSettings.php @@ -37,8 +37,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Informasi Dasar 📋✨', 'Informasi Dasar')) - ->description(fn () => CheerfulNotification::getMessage('Atur info penting website kita di sini biar makin lengkap! 🚀😊', 'Silakan atur informasi dasar situs web pada bagian ini.')) + Section::make(fn () => CheerfulNotification::getByKey('settings.general.basic_info.title')) + ->description(fn () => CheerfulNotification::getByKey('settings.general.basic_info.description')) ->schema([ TextInput::make('site_name') ->label('Nama') @@ -84,8 +84,8 @@ public function form(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make(fn () => CheerfulNotification::getMessage('Logo & Ikon 🖼️✨', 'Logo & Ikon')) - ->description(fn () => CheerfulNotification::getMessage('Unggah logo dan ikon biar branding kita makin cakep! 🎨👌', 'Silakan unggah logo dan ikon untuk keperluan branding situs web.')) + Section::make(fn () => CheerfulNotification::getByKey('settings.general.logo_icon.title')) + ->description(fn () => CheerfulNotification::getByKey('settings.general.logo_icon.description')) ->schema([ FileUpload::make('site_logo') ->label('Logo') diff --git a/app/Filament/Pages/Settings/ManageSeoSettings.php b/app/Filament/Pages/Settings/ManageSeoSettings.php index f0bea59..57c0034 100644 --- a/app/Filament/Pages/Settings/ManageSeoSettings.php +++ b/app/Filament/Pages/Settings/ManageSeoSettings.php @@ -35,8 +35,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Search Engine Optimization 🔍✨', 'Optimasi Mesin Pencari (SEO)')) - ->description(fn () => CheerfulNotification::getMessage('Atur kata kunci dan deskripsi biar website kita gampang dicari orang ya! 🚀📈', 'Atur kata kunci dan deskripsi untuk meningkatkan visibilitas situs web pada mesin pencari.')) + Section::make(fn () => CheerfulNotification::getByKey('settings.seo.section.title')) + ->description(fn () => CheerfulNotification::getByKey('settings.seo.section.description')) ->schema([ TextInput::make('title') ->label('SEO Title') diff --git a/app/Filament/Pages/Settings/ManageSocialMediaSettings.php b/app/Filament/Pages/Settings/ManageSocialMediaSettings.php index 5e693d4..3b18cd0 100644 --- a/app/Filament/Pages/Settings/ManageSocialMediaSettings.php +++ b/app/Filament/Pages/Settings/ManageSocialMediaSettings.php @@ -35,8 +35,8 @@ public function form(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Link Media Sosial 🔗✨', 'Tautan Media Sosial')) - ->description(fn () => CheerfulNotification::getMessage('Hubungkan semua media sosial resmi kita di sini untuk menjangkau lebih banyak orang! 🌐🤩', 'Silakan masukkan tautan media sosial resmi perusahaan pada bagian ini.')) + Section::make(fn () => CheerfulNotification::getByKey('settings.social_media.section.title')) + ->description(fn () => CheerfulNotification::getByKey('settings.social_media.section.description')) ->schema([ Grid::make(2) ->schema([ diff --git a/app/Filament/Pages/Verification.php b/app/Filament/Pages/Verification.php index e557e88..32f796f 100644 --- a/app/Filament/Pages/Verification.php +++ b/app/Filament/Pages/Verification.php @@ -112,17 +112,17 @@ public function submitVerificationAction(): Action ->icon('heroicon-o-paper-airplane') ->color('primary') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Verifikasi Sekarang? 🚀✨', 'Ajukan Verifikasi')) + ->modalHeading(fn () => CheerfulNotification::getByKey('verification.submit.title')) ->modalDescription(function () use ($progress): string { if (! $progress['isDataComplete']) { - return CheerfulNotification::getMessage('Aduh, data belum lengkap nih! 😅 Silakan lengkapi dulu bagian: '.implode(', ', $progress['missingData']).' ya!', 'Data belum lengkap. Silakan lengkapi bagian: '.implode(', ', $progress['missingData']).'.'); + return CheerfulNotification::getByKey('verification.submit.description.incomplete', ['missing' => implode(', ', $progress['missingData'])]); } if ($this->verificationRequest && $this->verificationRequest->status === VerificationStatus::NEED_REVISION) { - return CheerfulNotification::getMessage('Ayo kirim ulang perbaikannya! Pastikan semuanya sudah sesuai catatan admin biar langsung gaspol! 💪✨', 'Silakan kirimkan kembali perbaikan data Anda sesuai dengan catatan Admin.'); + return CheerfulNotification::getByKey('verification.submit.description.revision'); } - return CheerfulNotification::getMessage('Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar and lengkap ya! Pasti bisa! 😊👍', 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan seluruh data yang diinput telah sesuai.'); + return CheerfulNotification::getByKey('verification.submit.description.default'); }) ->modalSubmitActionLabel('Ya, Ajukan') ->visible(fn (): bool => $progress['canSubmit']) @@ -130,8 +130,8 @@ public function submitVerificationAction(): Action ->action(function () use ($progress): void { if (! $progress['isDataComplete']) { CheerfulNotification::danger( - CheerfulNotification::getMessage('Data Belum Lengkap! 😅', 'Data Tidak Lengkap'), - CheerfulNotification::getMessage('Silakan lengkapi data terlebih dahulu sebelum mengajukan verifikasi ya: '.implode(', ', $progress['missingData']), 'Silakan lengkapi seluruh data wajib sebelum mengajukan verifikasi: '.implode(', ', $progress['missingData'])) + CheerfulNotification::getByKey('verification.incomplete.title'), + CheerfulNotification::getByKey('verification.incomplete.body', ['missing' => implode(', ', $progress['missingData'])]) )->send(); return; @@ -142,8 +142,8 @@ public function submitVerificationAction(): Action $this->verificationRequest = $this->submitVerification(); CheerfulNotification::success( - CheerfulNotification::getMessage('Berhasil Diajukan! 🚀', 'Berhasil Diajukan'), - CheerfulNotification::getMessage('Yeay! Pengajuan verifikasi Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! ✨', 'Pengajuan verifikasi Anda telah berhasil dikirimkan ke pihak Admin untuk diproses.') + CheerfulNotification::getByKey('verification.success.title'), + CheerfulNotification::getByKey('verification.success.body') )->send(); User::superAdmin() @@ -153,11 +153,11 @@ public function submitVerificationAction(): Action $admin->notify(new BroadcastNotification([ 'title' => $isRevision - ? CheerfulNotification::getMessage('Pembaruan Data Verifikasi ✨', 'Pembaruan Data Verifikasi') - : CheerfulNotification::getMessage('Ada Pengajuan Verifikasi Baru! 🚀', 'Pengajuan Verifikasi Baru'), + ? CheerfulNotification::getByKey('verification.admin_notify.title.revision') + : CheerfulNotification::getByKey('verification.admin_notify.title.new'), 'body' => $isRevision - ? CheerfulNotification::getMessage("Cihuy! {$user->name} baru saja memperbarui data verifikasi untuk perusahaan {$user->company->name}. Yuk, cek perubahannya!", "Pengguna {$user->name} telah memperbarui data verifikasi untuk perusahaan {$user->company->name}.") - : CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengajukan verifikasi data untuk perusahaan {$user->company->name}. Segera diproses ya! 😊", "Pengguna {$user->name} telah mengajukan verifikasi data untuk perusahaan {$user->company->name}."), + ? CheerfulNotification::getByKey('verification.admin_notify.body.revision', ['name' => $user->name, 'company' => $user->company->name]) + : CheerfulNotification::getByKey('verification.admin_notify.body.new', ['name' => $user->name, 'company' => $user->company->name]), 'action' => [ Action::make('view') ->label('Lihat') @@ -334,7 +334,7 @@ protected function getAlertData(): ?array 'type' => 'approved', 'icon' => 'check-circle', 'title' => 'Verifikasi Diterima', - 'message' => 'Verifikasi Anda telah diterima dan disetujui oleh admin. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami!', + 'message' => CheerfulNotification::getByKey('verification.alert.approved.body'), 'color' => 'success', ]; } @@ -343,8 +343,8 @@ protected function getAlertData(): ?array return [ 'type' => 'pending', 'icon' => 'clock', - 'title' => 'Menunggu Verifikasi', - 'message' => 'Data Anda sedang dalam proses verifikasi oleh admin. Mohon tunggu.', + 'title' => CheerfulNotification::getByKey('verification.alert.pending.title'), + 'message' => CheerfulNotification::getByKey('verification.alert.pending.body'), 'color' => 'info', 'animate' => true, ]; diff --git a/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php b/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php index 9e1d6fb..eed8f7d 100644 --- a/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php +++ b/app/Filament/Resources/Manage/Contacts/Actions/ReplyAction.php @@ -19,8 +19,8 @@ protected function setUp(): void $this->label('Balas') ->icon(Heroicon::OutlinedChatBubbleLeftRight) ->color('success') - ->modalHeading(fn () => CheerfulNotification::getMessage('Balas Pesan Kontak ✨✉️', 'Balas Pesan Kontak')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Tuliskan jawaban terbaik Anda di sini ya! Hati-hati, setelah dikirim tidak bisa ditarik kembali. 👋😊', 'Silakan masukkan balasan Anda untuk pesan kontak ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('contact.reply_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('contact.reply_desc')) ->schema([ Textarea::make('reply_message') ->label('Pesan Balasan') @@ -40,8 +40,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Balasan Terkirim! 🚀✉️', 'Balasan Berhasil Dikirim'), - CheerfulNotification::getMessage('Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! 😊', 'Pesan balasan telah berhasil dikirim ke alamat email pengirim.') + CheerfulNotification::getByKey('contact.reply_success'), + CheerfulNotification::getByKey('contact.reply_success_desc') )->send(); }) ->visible(fn (Contact $record): bool => $record->replied_at === null); diff --git a/app/Filament/Resources/Manage/Contacts/ContactResource.php b/app/Filament/Resources/Manage/Contacts/ContactResource.php index 87e5dca..0461492 100644 --- a/app/Filament/Resources/Manage/Contacts/ContactResource.php +++ b/app/Filament/Resources/Manage/Contacts/ContactResource.php @@ -52,8 +52,8 @@ public static function infolist(Schema $schema): Schema { return $schema ->schema([ - Section::make(fn () => CheerfulNotification::getMessage('Informasi Pengirim 📧', 'Informasi Pengirim')) - ->description(fn () => CheerfulNotification::getMessage('Cek detail identitas pengirim pesan biar makin kenal! 📧✨', 'Detail mengenai identitas pengirim pesan.')) + Section::make(fn () => CheerfulNotification::getByKey('contact.sender_info_title')) + ->description(fn () => CheerfulNotification::getByKey('contact.sender_info_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ Grid::make(4) @@ -78,8 +78,8 @@ public static function infolist(Schema $schema): Schema ]) ->columnSpanFull(), - Section::make(fn () => CheerfulNotification::getMessage('Isi Pesan 💬', 'Isi Pesan')) - ->description(fn () => CheerfulNotification::getMessage('Yuk, baca pesan lengkap yang dikirimkan oleh pengguna! 💬✨', 'Pesan lengkap yang dikirimkan oleh pengguna.')) + Section::make(fn () => CheerfulNotification::getByKey('contact.message_content_title')) + ->description(fn () => CheerfulNotification::getByKey('contact.message_content_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-chat-bubble-left-right' : null) ->schema([ TextEntry::make('message') @@ -88,8 +88,8 @@ public static function infolist(Schema $schema): Schema ]) ->columnSpanFull(), - Section::make(fn () => CheerfulNotification::getMessage('Riwayat Balasan 📤', 'Riwayat Balasan')) - ->description(fn () => CheerfulNotification::getMessage('Lihat detail tanggapan yang sudah Admin berikan sebelumnya! 📤✨', 'Detail mengenai tanggapan yang telah diberikan.')) + Section::make(fn () => CheerfulNotification::getByKey('contact.reply_history_title')) + ->description(fn () => CheerfulNotification::getByKey('contact.reply_history_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-paper-airplane' : null) ->schema([ TextEntry::make('repliedBy.name') @@ -175,7 +175,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedEnvelope) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada kontak atau pesan masuk nih! Santai dulu yuk. ✨✅', 'Belum ada kontak atau pesan masuk yang tersedia.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('contact.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php index 6f7f08f..5234a91 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php @@ -35,8 +35,8 @@ protected function setUp(): void $cooperationMedia->update(['status' => ApprovalStatus::ACCEPTED]); CheerfulNotification::success( - CheerfulNotification::getMessage('Berhasil Diterima! ✅✨', 'Tawaran Diterima'), - CheerfulNotification::getMessage('Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! 💪', 'Anda telah menyetujui penawaran kerja sama ini. Silakan lanjutkan ke tahap pengiriman proposal.') + CheerfulNotification::getByKey('cooperation.offer_accepted'), + CheerfulNotification::getByKey('cooperation.offer_accepted_desc') )->send(); // Notify Admins @@ -44,8 +44,8 @@ protected function setUp(): void ->get() ->each(function ($admin) use ($record, $cooperationMedia): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Kabar Baik! Tawaran Diterima ✨🤝', 'Tawaran Kerja Sama Disetujui Media'), - 'body' => CheerfulNotification::getMessage("Media {$cooperationMedia->partnerMedia->name} baru saja menerima penawaran kerja sama \"{$record->title}\". Siap-siap cek proposal mereka ya! 😊", "Pihak media {$cooperationMedia->partnerMedia->name} telah menyetujui penawaran kerja sama \"{$record->title}\"."), + 'title' => CheerfulNotification::getByKey('cooperation.offer_accepted_by_media'), + 'body' => CheerfulNotification::getByKey('notification.media_accepted_offer', ['cooperationMedia__partnerMedia__name' => $cooperationMedia->partnerMedia->name, 'record__title' => $record->title]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php index 4c49c40..93c8256 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php @@ -19,16 +19,16 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheckBadge) ->color('success') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Selesaikan Kerja Sama? 🏁✨', 'Selesaikan Kerja Sama')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin mau menyelesaikan kerja sama ini? Pastikan semua pembayaran ke media sudah lunas dan aman ya! 🤝😊', 'Apakah Anda yakin ingin menyelesaikan kerja sama ini? Pastikan seluruh kewajiban pembayaran telah terpenuhi.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.complete_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.complete_desc')) ->action(function (Cooperation $record): void { // Verify all accepted media are paid $acceptedMedia = $record->cooperationMedia()->accepted()->get(); if ($acceptedMedia->isEmpty()) { CheerfulNotification::danger( - CheerfulNotification::getMessage('Tidak Ada Media! ❌', 'Data Media Kosong'), - CheerfulNotification::getMessage('Tidak ada media yang menerima kerja sama ini. Tidak dapat diselesaikan.', 'Proses tidak dapat dilanjutkan karena tidak ada media yang terlibat dalam kerja sama ini.') + CheerfulNotification::getByKey('cooperation.media_empty'), + CheerfulNotification::getByKey('cooperation.media_empty_desc') )->send(); return; @@ -40,8 +40,8 @@ protected function setUp(): void if ($unpaidMedia->isNotEmpty()) { CheerfulNotification::danger( - CheerfulNotification::getMessage('Pembayaran Belum Lunas! ⚠️', 'Pembayaran Belum Terpenuhi'), - CheerfulNotification::getMessage('Masih ada media yang belum dibayar. Harap selesaikan pembayaran untuk semua media yang menerima kerja sama.', 'Terdapat kewajiban pembayaran yang belum diselesaikan untuk media terkait.') + CheerfulNotification::getByKey('cooperation.payment_unfulfilled'), + CheerfulNotification::getByKey('cooperation.payment_unfulfilled_desc') )->send(); $this->halt(); @@ -59,8 +59,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Kerja Sama Selesai! 🎉✨', 'Kerja Sama Berhasil Diselesaikan'), - CheerfulNotification::getMessage('Alhamdulillah! Kerja sama ini telah resmi diselesaikan. Terima kasih atas kerja samanya! 🙌😊', 'Proses kerja sama ini telah resmi ditutup dan diselesaikan.') + CheerfulNotification::getByKey('cooperation.completed_success'), + CheerfulNotification::getByKey('cooperation.completed_desc') )->send(); }) ->visible(function (Cooperation $record): bool { diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php index 03cddf5..611d2ce 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php @@ -82,8 +82,8 @@ protected function setUp(): void $partnerUser = $partnerMedia->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Tugas Baru Telah Menanti! 📝✨', 'Penugasan Kerja Sama Baru'), - 'body' => CheerfulNotification::getMessage("Halo! Admin sudah menetapkan tugas untuk kerja sama \"{$record->title}\". Yuk, cek detail tugasnya dan mulai buat laporannya! Semangat! 💪😊", "Admin telah menetapkan penugasan baru untuk kerja sama \"{$record->title}\". Silakan tinjau detail tugas dan laporan yang diperlukan."), + 'title' => CheerfulNotification::getByKey('cooperation.new_assignment'), + 'body' => CheerfulNotification::getByKey('notification.admin_assigned_task', ['record__title' => $record->title]), 'action' => [ Action::make('view') ->label('Lihat') @@ -94,12 +94,12 @@ protected function setUp(): void } CheerfulNotification::success( - CheerfulNotification::getMessage('Penugasan Berhasil Dibuat! 🚀✨', 'Penugasan Berhasil Dibuat'), - CheerfulNotification::getMessage('Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! 💪', 'Penugasan telah berhasil dibuat dan seluruh media terkait telah dinotifikasi.') + CheerfulNotification::getByKey('cooperation.assignment_created_success'), + CheerfulNotification::getByKey('cooperation.assignment_created_desc') )->send(); }) - ->modalHeading(fn () => CheerfulNotification::getMessage('Buat Penugasan Baru 📝✨', 'Buat Penugasan Baru')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Waktunya bagi-bagi tugas! Tentukan detail penugasan untuk para media biar mereka bisa langsung gaspol! 🚀💪', 'Silakan tentukan detail penugasan untuk pihak media eksternal.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.create_assignment_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.create_assignment_desc')) ->modalSubmitActionLabel('Simpan') ->visible(function (Cooperation $record): bool { $user = auth()->user(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php index 6883fa0..cdd849f 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php @@ -20,8 +20,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedBanknotes) ->color('success') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Lanjut ke Pembayaran? 💸💳', 'Lanjutkan ke Pembayaran')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Siap buat lanjut ke tahap pembayaran? Pastikan semua laporan sudah diverifikasi dulu ya! ✅😊', 'Apakah Anda yakin ingin melanjutkan ke tahap pembayaran? Pastikan seluruh laporan telah diverifikasi.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.proceed_to_payment_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.proceed_to_payment_desc')) ->action(function (Cooperation $record): void { $record->update([ 'status' => CooperationStatus::PAYMENT, @@ -29,8 +29,8 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Tahap Pembayaran Dimulai! 💸✨', 'Tahap Pembayaran Aktif'), - CheerfulNotification::getMessage('Kerja sama telah dipindahkan ke tahap pembayaran. Silakan proses pembayarannya ya! 😊', 'Status kerja sama telah dialihkan ke tahap pembayaran.') + CheerfulNotification::getByKey('cooperation.payment_stage_active'), + CheerfulNotification::getByKey('cooperation.payment_stage_changed_desc') )->send(); }) ->visible(function (Cooperation $record): bool { diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php index 2576c83..d3223ef 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php @@ -33,8 +33,8 @@ protected function setUp(): void $cooperationMedia->update(['status' => ApprovalStatus::REJECTED]); CheerfulNotification::info( - CheerfulNotification::getMessage('Berhasil Ditolak 🙏', 'Tawaran Kerja Sama Ditolak'), - CheerfulNotification::getMessage('Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. 😊', 'Penolakan penawaran kerja sama telah berhasil dikirimkan ke pihak Admin.') + CheerfulNotification::getByKey('cooperation.offer_rejected'), + CheerfulNotification::getByKey('cooperation.offer_rejection_sent') )->send(); // Notify Admins @@ -42,8 +42,8 @@ protected function setUp(): void ->get() ->each(function ($admin) use ($record, $cooperationMedia): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Yah, Tawaran Ditolak 😔🤝', 'Tawaran Kerja Sama Ditolak Media'), - 'body' => CheerfulNotification::getMessage("Media {$cooperationMedia->partnerMedia->name} baru saja menolak penawaran kerja sama \"{$record->title}\". Mungkin di lain waktu ya! 🙏", "Pihak media {$cooperationMedia->partnerMedia->name} telah menolak penawaran kerja sama \"{$record->title}\"."), + 'title' => CheerfulNotification::getByKey('cooperation.offer_rejected_media'), + 'body' => CheerfulNotification::getByKey('notification.media_rejected_offer', ['cooperationMedia__partnerMedia__name' => $cooperationMedia->partnerMedia->name, 'record__title' => $record->title]), ])); }); } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php index 5a379a2..8c509e4 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php @@ -93,8 +93,8 @@ protected function setUp(): void } CheerfulNotification::success( - CheerfulNotification::getMessage('Berhasil Diajukan! 🚀', 'Proposal Berhasil Dikirim'), - CheerfulNotification::getMessage('Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! ✨', 'Proposal kerja sama Anda telah berhasil dikirimkan ke pihak Admin.') + CheerfulNotification::getByKey('cooperation.proposal_sent_success'), + CheerfulNotification::getByKey('cooperation.proposal_approved_desc') )->send(); // Notify Admin @@ -105,11 +105,11 @@ protected function setUp(): void $admin->notify(new BroadcastNotification([ 'title' => $isRevision - ? CheerfulNotification::getMessage('Pembaruan Proposal Kerja Sama ✨', 'Pembaruan Proposal Kerja Sama') - : CheerfulNotification::getMessage('Ada Proposal Kerja Sama Baru! 🚀', 'Proposal Kerja Sama Baru'), + ? CheerfulNotification::getByKey('cooperation.proposal_update') + : CheerfulNotification::getByKey('cooperation.new_proposal'), 'body' => $isRevision - ? CheerfulNotification::getMessage("Cihuy! {$user->name} baru saja memperbarui proposal kerja sama untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Yuk, cek perubahannya!", "Pengguna {$user->name} telah memperbarui proposal kerja sama untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}.") - : CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengajukan proposal kerja sama baru untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}. Segera diproses ya! 😊", "Pengguna {$user->name} telah mengajukan proposal kerja sama baru untuk media {$cooperationMedia->partnerMedia->name} pada kampanye {$record->title}."), + ? CheerfulNotification::getByKey('notification.user_updated_proposal', ['user__name' => $user->name, 'cooperationMedia__partnerMedia__name' => $cooperationMedia->partnerMedia->name, 'record__title' => $record->title]) + : CheerfulNotification::getByKey('notification.user_submitted_proposal', ['user__name' => $user->name, 'cooperationMedia__partnerMedia__name' => $cooperationMedia->partnerMedia->name, 'record__title' => $record->title]), 'action' => [ Action::make('view') ->label('Lihat') @@ -119,8 +119,8 @@ protected function setUp(): void }); } }) - ->modalHeading(fn () => CheerfulNotification::getMessage('Ajukan Proposal Kerja Sama 🚀📝', 'Ajukan Proposal Kerja Sama')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kirimkan proposal terbaikmu! Pastikan semua dokumen sudah lengkap ya biar admin makin sreg! ✨😊', 'Silakan ajukan proposal kerja sama Anda. Pastikan seluruh dokumen pendukung telah dilampirkan.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.submit_proposal_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.submit_proposal_desc')) ->modalSubmitActionLabel('Kirim Proposal') ->visible(function (Cooperation $record): bool { $user = auth()->user(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php index 2d72e9f..c8456d3 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Media/PayAction.php @@ -63,15 +63,15 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Pembayaran Berhasil! 💸✨', 'Pembayaran Berhasil Dicatat'), - CheerfulNotification::getMessage("Pembayaran untuk {$record->partnerMedia->name} telah berhasil dicatat.", "Proses pembayaran untuk {$record->partnerMedia->name} telah berhasil diselesaikan.") + CheerfulNotification::getByKey('cooperation.payment_recorded_success'), + CheerfulNotification::getByKey('notification.payment_processed', ['record__partnerMedia__name' => $record->partnerMedia->name]) )->send(); $partnerUser = $record->partnerMedia->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Pembayaran Telah Dikirim! 💸✨', 'Pembayaran Kerja Sama Telah Dikirim'), - 'body' => CheerfulNotification::getMessage("Halo! Pembayaran untuk kerja sama \"{$record->cooperation->title}\" telah berhasil dikirim oleh Admin. Silakan cek detailnya ya! 😊", "Admin telah mengirimkan pembayaran untuk kerja sama \"{$record->cooperation->title}\". Silakan periksa detail transaksi Anda."), + 'title' => CheerfulNotification::getByKey('cooperation.payment_sent'), + 'body' => CheerfulNotification::getByKey('notification.payment_sent_desc', ['record__cooperation__title' => $record->cooperation->title]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php index f1b796c..f33435d 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php @@ -22,8 +22,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheck) ->color('success') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Terima Proposal Ini? ✅✨', 'Terima Proposal')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menerima proposal kerja sama ini? Pastikan profil medianya sudah oke semua ya! 😊', 'Apakah Anda yakin ingin menyetujui proposal kerja sama ini?')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.accept_proposal_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.accept_proposal_desc')) ->action(function (CooperationProposal $record): void { $record->update([ 'status' => ApprovalStatus::ACCEPTED, @@ -31,16 +31,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Proposal Diterima! ✅✨', 'Proposal Berhasil Disetujui'), - CheerfulNotification::getMessage("Mantap! Proposal dari '{$record->partnerMedia->name}' telah berhasil diterima. Mari kita lanjut ke tahap berikutnya! 💪", "Proposal kerja sama dari '{$record->partnerMedia->name}' telah berhasil disetujui.") + CheerfulNotification::getByKey('cooperation.proposal_approved_success'), + CheerfulNotification::getByKey('notification.proposal_from_rejected', ['record__partnerMedia__name' => $record->partnerMedia->name]) )->send(); // Notify User (Partner) $partnerUser = $record->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Horee! Proposal Disetujui 🎉', 'Proposal Kerja Sama Disetujui'), - 'body' => CheerfulNotification::getMessage('Yeay! Proposal kerja sama Anda telah disetujui oleh Admin. Mari kita lanjut ke tahap berikutnya! 🎊', 'Proposal kerja sama Anda telah disetujui oleh pihak Admin.'), + 'title' => CheerfulNotification::getByKey('cooperation.proposal_approved'), + 'body' => CheerfulNotification::getByKey('cooperation.proposal_approved_desc'), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php index 5860052..3429975 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php @@ -23,8 +23,8 @@ protected function setUp(): void $this->label('Tolak') ->icon(Heroicon::OutlinedXMark) ->color('danger') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Proposal Ini? 🛑🤔', 'Tolak Proposal')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menolak proposal ini? Berikan alasan biar media bisa melakukan perbaikan ke depannya! 📝😊', 'Apakah Anda yakin ingin menolak proposal kerja sama ini? Harap berikan alasan penolakan.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.reject_proposal_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.reject_proposal_desc')) ->schema([ Textarea::make('reason') ->label('Alasan Penolakan') @@ -40,16 +40,16 @@ protected function setUp(): void $record->rejectionReasons()->create(['reason' => $data['reason']]); CheerfulNotification::warning( - CheerfulNotification::getMessage('Proposal Ditolak! 🛑', 'Proposal Ditolak'), - CheerfulNotification::getMessage("Proposal dari '{$record->partnerMedia->name}' telah ditolak. Media terkait akan segera mendapatkan notifikasi. 🙏", "Proposal kerja sama dari '{$record->partnerMedia->name}' telah ditolak.") + CheerfulNotification::getByKey('cooperation.proposal_rejected'), + CheerfulNotification::getByKey('notification.proposal_from_rejected', ['record__partnerMedia__name' => $record->partnerMedia->name]) )->send(); // Notify User (Partner) $partnerUser = $record->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Maaf, Proposal Belum Diterima 😔', 'Pemberitahuan Penolakan Proposal'), - 'body' => CheerfulNotification::getMessage("Yah, maaf banget... proposal kerja sama Anda belum bisa kami terima saat ini. 💔\n\nAlasan: {$data['reason']}", "Proposal kerja sama Anda telah ditolak oleh pihak Admin.\n\nAlasan: {$data['reason']}"), + 'title' => CheerfulNotification::getByKey('cooperation.proposal_rejection_notice'), + 'body' => CheerfulNotification::getByKey('notification.proposal_rejected_reason', ['data__reason' => $data['reason']]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php index 7951750..d4fe013 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php @@ -27,15 +27,15 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Laporan Diterima! ✅✨', 'Laporan Berhasil Disetujui'), - CheerfulNotification::getMessage("Laporan '{$record->title}' telah berhasil diproses. Notifikasi sudah dikirim ke media terkait! 💪", "Laporan '{$record->title}' telah disetujui dan notifikasi telah dikirimkan ke pihak media.") + CheerfulNotification::getByKey('cooperation.report_approved_success'), + CheerfulNotification::getByKey('notification.report_approved_notice', ['record__title' => $record->title]) )->send(); $partnerUser = $record->mediaTaskAssignment?->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Mantap! Laporan Diterima 🎊✨', 'Laporan Kerja Sama Disetujui'), - 'body' => CheerfulNotification::getMessage("Hore! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" telah disetujui oleh Admin. Satu langkah lebih dekat! 🚀", "Laporan \"{$record->title}\" untuk kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" telah disetujui oleh Admin."), + 'title' => CheerfulNotification::getByKey('cooperation.report_cooperation_approved'), + 'body' => CheerfulNotification::getByKey('notification.report_cooperation_approved', ['record__title' => $record->title, 'record__mediaTaskAssignment__taskAssignment__cooperation__title' => $record->mediaTaskAssignment->taskAssignment->cooperation->title]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php index 3c76ec1..48b6fc5 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php @@ -29,8 +29,8 @@ protected function setUp(): void ->placeholder('Jelaskan alasan pengajuan ditolak...') ->required(), ]) - ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Laporan? 🛑🤔', 'Tolak Laporan')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Apakah Anda yakin ingin menolak laporan ini? Sertakan alasan biar media bisa segera memperbaikinya ya! 📝😊', 'Apakah Anda yakin ingin menolak laporan ini? Silakan berikan alasan penolakan untuk perbaikan oleh pihak media.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.reject_report_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.reject_proposal_desc')) ->action(function (Report $record, array $data): void { $record->update([ 'status' => ApprovalStatus::REJECTED, @@ -39,15 +39,15 @@ protected function setUp(): void $record->rejectionReasons()->create(['reason' => $data['reason']]); CheerfulNotification::warning( - CheerfulNotification::getMessage('Laporan Ditolak! 🛑', 'Laporan Ditolak'), - CheerfulNotification::getMessage("Laporan '{$record->title}' telah ditolak. Media terkait akan segera mendapatkan notifikasi untuk perbaikan. 🙏", "Laporan '{$record->title}' telah ditolak. Notifikasi perbaikan telah dikirimkan ke pihak media.") + CheerfulNotification::getByKey('cooperation.report_rejected'), + CheerfulNotification::getByKey('notification.report_rejected_notice', ['record__title' => $record->title]) )->send(); $partnerUser = $record->mediaTaskAssignment?->partnerMedia?->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Yah, Laporan Ditolak 🙁', 'Laporan Kerja Sama Ditolak'), - 'body' => CheerfulNotification::getMessage("Halo! Laporan \"{$record->title}\" pada kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" ditolak oleh Admin. 💪\n\nCatatan Admin: {$data['reason']}", "Laporan \"{$record->title}\" untuk kerja sama \"{$record->mediaTaskAssignment->taskAssignment->cooperation->title}\" ditolak oleh Admin.\n\nAlasan: {$data['reason']}"), + 'title' => CheerfulNotification::getByKey('cooperation.report_cooperation_rejected'), + 'body' => CheerfulNotification::getByKey('notification.report_rejected_reason', ['record__title' => $record->title, 'record__mediaTaskAssignment__taskAssignment__cooperation__title' => $record->mediaTaskAssignment->taskAssignment->cooperation->title, 'data__reason' => $data['reason']]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/CooperationResource.php b/app/Filament/Resources/Manage/Cooperations/CooperationResource.php index 5946a3b..3b89fbd 100644 --- a/app/Filament/Resources/Manage/Cooperations/CooperationResource.php +++ b/app/Filament/Resources/Manage/Cooperations/CooperationResource.php @@ -74,8 +74,8 @@ public static function infolist(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Informasi Kerja Sama 🤝', 'Informasi Kerja Sama')) - ->description(fn () => CheerfulNotification::getMessage('Detail lengkap mengenai data kerja sama yang sedang berjalan. 🤝✨', 'Informasi detail mengenai pelaksanaan kerja sama.')) + Section::make(fn () => CheerfulNotification::getByKey('cooperation.info_title')) + ->description(fn () => CheerfulNotification::getByKey('cooperation.info_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-hand-raised' : null) ->headerActions([ Action::make('status') diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php index 4cab377..0fa3f7c 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php @@ -68,8 +68,8 @@ protected function afterCreate(): void $partnerUser = $media->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Penawaran Kerja Sama Baru! 🤝✨', 'Penawaran Kerja Sama Baru'), - 'body' => CheerfulNotification::getMessage("Halo! Admin baru saja menawarkan kerja sama \"{$record->title}\" untuk media {$media->name}. Yuk, cek detailnya dan berikan tanggapanmu! 😊", "Admin telah menawarkan kerja sama \"{$record->title}\" untuk media {$media->name}."), + 'title' => CheerfulNotification::getByKey('cooperation.new_offer'), + 'body' => CheerfulNotification::getByKey('notification.admin_offered_cooperation', ['record__title' => $record->title, 'media__name' => $media->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationMediaRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationMediaRelationManager.php index ee4f703..64ea55e 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationMediaRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationMediaRelationManager.php @@ -65,7 +65,7 @@ public function table(Table $table): Table ->visible(fn (CooperationMedia $record): bool => $record->status === ApprovalStatus::ACCEPTED && $record->payment()->exists()), ]) ->emptyStateIcon(Heroicon::OutlinedNewspaper) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Daftar media pendukung masih kosong nih! Yuk, tambahkan media sekarang. 📰✨', 'Belum ada data media yang tersedia.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.media_data_empty')) ->defaultSort('created_at', 'desc'); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationPaymentRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationPaymentRelationManager.php index f83cbfc..e4db25c 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationPaymentRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationPaymentRelationManager.php @@ -66,7 +66,7 @@ public function table(Table $table): Table ->headerActions([]) ->recordActions([]) ->emptyStateIcon(Heroicon::OutlinedCreditCard) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Ups! Belum ada data pembayaran yang tercatat nih. Sabar ya! 💸✨', 'Belum ada data pembayaran yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.payment_empty')) ->defaultSort('created_at', 'desc'); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php index fe5153a..9faee10 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php @@ -108,14 +108,14 @@ public function table(Table $table): Table DeleteBulkAction::make() ->successNotification( fn () => CheerfulNotification::success( - CheerfulNotification::getMessage('Proposal Dihapus! 🗑️', 'Proposal Dihapus'), - CheerfulNotification::getMessage('Semua proposal yang dipilih telah berhasil dihapus dari sistem. 👋', 'Seluruh data proposal yang dipilih telah berhasil dihapus dari sistem.') + CheerfulNotification::getByKey('cooperation.proposal_deleted'), + CheerfulNotification::getByKey('cooperation.proposal_deleted_desc') ) ), ]), ]) ->emptyStateIcon(Heroicon::OutlinedDocumentText) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada proposal yang masuk nih! Tenang, nanti juga ada yang tertarik kok. ✨🚀', 'Belum ada data proposal yang diajukan saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.proposal_empty')) ->defaultSort('created_at', 'desc'); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php index d20861a..4c9cf7c 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php @@ -154,8 +154,8 @@ public function table(Table $table): Table CreateAction::make() ->label('Buat Laporan') ->modalWidth(Width::Large) - ->modalHeading(fn () => CheerfulNotification::getMessage('Sampaikan Laporan Baru 📝🚀', 'Buat Laporan Baru')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kirimkan hasil kerja kerasmu! Isi detail laporannya biar admin bisa langsung verifikasi ya! 💪✨', 'Silakan masukkan detail laporan pekerjaan Anda pada formulir di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('cooperation.create_report_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.create_report_desc')) ->mutateDataUsing(function (array $data): array { $taskAssignment = $this->getOwnerRecord()->taskAssignment; @@ -174,8 +174,8 @@ public function table(Table $table): Table ->successNotification(null) ->after(function (Report $record): void { CheerfulNotification::success( - CheerfulNotification::getMessage('Laporan Berhasil Terkirim! 🚀✨', 'Laporan Berhasil Terkirim'), - CheerfulNotification::getMessage('Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! 💪', 'Laporan Anda telah berhasil dikirimkan ke sistem dan sedang menunggu verifikasi admin.') + CheerfulNotification::getByKey('cooperation.report_sent_success'), + CheerfulNotification::getByKey('cooperation.report_sent_desc') )->send(); // Notify Admins @@ -185,8 +185,8 @@ public function table(Table $table): Table $user = auth()->user(); $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Laporan Baru! 📝✨', 'Laporan Kerja Sama Baru'), - 'body' => CheerfulNotification::getMessage("Halo Admin! {$user->name} baru saja mengirimkan laporan \"{$record->title}\" untuk kerja sama \"{$this->getOwnerRecord()->title}\". Yuk, dicek! 😊", "Pengguna {$user->name} telah mengirimkan laporan baru \"{$record->title}\" untuk pengajuan kerja sama \"{$this->getOwnerRecord()->title}\"."), + 'title' => CheerfulNotification::getByKey('auto_generated.msg_laporan_kerja_sama_baru'), + 'body' => CheerfulNotification::getByKey('notification.user_submitted_report', ['user__name' => $user->name, 'record__title' => $record->title, 'this__getOwnerRecord____title' => $this->getOwnerRecord()->title]), 'action' => [ Action::make('view') ->label('Lihat') @@ -219,7 +219,7 @@ public function table(Table $table): Table ]) ->toolbarActions([]) ->emptyStateIcon(Heroicon::OutlinedInboxArrowDown) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada laporan yang dikirimkan nih! Yuk, kirimkan hasil kerjamu sekarang juga! 🚀✨', 'Belum ada data laporan yang diajukan saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.report_empty')) ->defaultSort('created_at', 'desc'); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php index ec23fe3..e4a3c4a 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php @@ -73,23 +73,23 @@ public function table(Table $table): Table && ! $cooperation->taskAssignment()->exists(); }) ->successNotification(fn () => CheerfulNotification::success( - CheerfulNotification::getMessage('Penugasan Dibuat! 🚀✨', 'Penugasan Berhasil'), - CheerfulNotification::getMessage('Tugas baru berhasil ditetapkan. Media terkait akan segera mengetahuinya! 💪', 'Tugas baru telah berhasil ditetapkan untuk pihak media.') + CheerfulNotification::getByKey('cooperation.assignment_success'), + CheerfulNotification::getByKey('cooperation.assignment_set_success') ) ), ]) ->recordActions([ EditAction::make() ->successNotification(fn () => CheerfulNotification::success( - CheerfulNotification::getMessage('Penugasan Diperbarui! ✅', 'Penugasan Diperbarui'), - CheerfulNotification::getMessage('Perubahan pada penugasan berhasil disimpan dengan aman. 👍', 'Perubahan pada detail penugasan telah berhasil disimpan.') + CheerfulNotification::getByKey('cooperation.assignment_updated'), + CheerfulNotification::getByKey('cooperation.assignment_updated_desc') ) ), DeleteAction::make() ->successNotification(fn () => CheerfulNotification::success( - CheerfulNotification::getMessage('Penugasan Dihapus! 🗑️', 'Penugasan Dihapus'), - CheerfulNotification::getMessage('Penugasan telah berhasil dihapus dari sistem. 👋', 'Data penugasan telah berhasil dihapus dari sistem.') + CheerfulNotification::getByKey('cooperation.assignment_deleted'), + CheerfulNotification::getByKey('cooperation.assignment_deleted_desc') ) ), ]) @@ -97,13 +97,13 @@ public function table(Table $table): Table BulkActionGroup::make([ DeleteBulkAction::make() ->successNotification(fn () => CheerfulNotification::success( - CheerfulNotification::getMessage('Banyak Penugasan Dihapus! 🗑️👋', 'Penugasan Berhasil Dihapus'), - CheerfulNotification::getMessage('Semua penugasan yang dipilih telah dihapus dari sistem. 🧹', 'Seluruh data penugasan yang dipilih telah berhasil dihapus.') + CheerfulNotification::getByKey('cooperation.assignment_success_dihapus'), + CheerfulNotification::getByKey('cooperation.bulk_assignment_deleted') ) ), ]), ]) ->emptyStateIcon(Heroicon::OutlinedArchiveBoxXMark) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada penugasan nih! Mari buat penugasan pertama untuk media. 🚀✨', 'Tidak ada data penugasan yang tersedia.')); + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.assignment_empty')); } } diff --git a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php index bfdac10..f567f5c 100644 --- a/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php +++ b/app/Filament/Resources/Manage/Cooperations/Schemas/CooperationForm.php @@ -25,8 +25,8 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Detail Kerja Sama 🤝', 'Detail Kerja Sama')) - ->description(fn () => CheerfulNotification::getMessage('Ayo lengkapi informasi mengenai judul, durasi, dan media yang diajak kerja sama! 🤝✨', 'Lengkapi informasi mengenai judul, durasi, dan media yang terlibat.')) + Section::make(fn () => CheerfulNotification::getByKey('cooperation.detail_title')) + ->description(fn () => CheerfulNotification::getByKey('cooperation.detail_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-hand-raised' : null) ->schema([ TextInput::make('title') @@ -88,8 +88,8 @@ public static function configure(Schema $schema): Schema ]) ->columnSpan(2), - Section::make(fn () => CheerfulNotification::getMessage('Lampiran & Media 🖼️', 'Lampiran & Media')) - ->description(fn () => CheerfulNotification::getMessage('Jangan lupa unggah banner promosi dan template pengajuannya ya! 🖼️✨', 'Unggah banner promosi dan template untuk pengajuan.')) + Section::make(fn () => CheerfulNotification::getByKey('cooperation.attachment_title')) + ->description(fn () => CheerfulNotification::getByKey('cooperation.attachment_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-paper-clip' : null) ->schema([ SpatieMediaLibraryFileUpload::make('banner') diff --git a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php index 3c61acb..0ee40f8 100644 --- a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php +++ b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php @@ -287,7 +287,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedHandRaised) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data kerja sama nih. Yuk, mulai buat data pertama Anda! 🤝✨', 'Belum ada data kerja sama yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('cooperation.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php index c595413..2e22863 100644 --- a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php +++ b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/AcceptAction.php @@ -24,8 +24,8 @@ protected function setUp(): void ->icon(Heroicon::OutlinedCheck) ->color('success') ->requiresConfirmation() - ->modalHeading(fn () => CheerfulNotification::getMessage('Setujui Perubahan Data? ✅✨', 'Setujui Perubahan Data')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Siap untuk menerapkan perubahan data ini secara otomatis ke sistem? Pastikan semuanya sudah sesuai ya! 🚀😊', 'Apakah Anda yakin ingin menerapkan perubahan data ini ke dalam sistem?')) + ->modalHeading(fn () => CheerfulNotification::getByKey('data_change.approve_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('data_change.approve_desc')) ->action(function (DataChangeRequest $record): void { $entity = $record->entity; $newData = $record->new_data; @@ -42,14 +42,14 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Penghapusan Disetujui! ✅', 'Penghapusan Disetujui'), - CheerfulNotification::getMessage('Data telah berhasil dihapus sesuai dengan permohonan.', 'Data telah berhasil dihapus sesuai dengan permintaan permohonan.') + CheerfulNotification::getByKey('data_change.deletion_approved'), + CheerfulNotification::getByKey('data_change.deletion_success_desc') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Permohonan Penghapusan Disetujui ✨', 'Permohonan Penghapusan Disetujui'), - 'body' => CheerfulNotification::getMessage("Halo! Permohonan penghapusan data Anda untuk {$record->change_reason} telah disetujui oleh admin. 🚀", "Permohonan penghapusan data untuk {$record->change_reason} telah disetujui oleh Admin."), + 'title' => CheerfulNotification::getByKey('data_change.deletion_request_approved'), + 'body' => CheerfulNotification::getByKey('data_change.deletion_request_title_untuk_telah', ['record__change_reason' => $record->change_reason]), ])); return; @@ -147,14 +147,14 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Perubahan Disetujui! ✅', 'Perubahan Disetujui'), - CheerfulNotification::getMessage('Data telah berhasil diperbarui sesuai dengan permohonan.', 'Data telah berhasil diperbarui sesuai dengan permintaan permohonan.') + CheerfulNotification::getByKey('data_change.change_approved'), + CheerfulNotification::getByKey('data_change.change_success_desc') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Permohonan Perubahan Disetujui ✨', 'Permohonan Perubahan Disetujui'), - 'body' => CheerfulNotification::getMessage("Halo! Permohonan perubahan data Anda untuk {$record->change_reason} telah disetujui oleh admin. Cek sekarang ya! 🚀", "Permohonan perubahan data untuk {$record->change_reason} telah disetujui oleh Admin."), + 'title' => CheerfulNotification::getByKey('data_change.change_request_approved'), + 'body' => CheerfulNotification::getByKey('notification.data_change_approved', ['record__change_reason' => $record->change_reason]), ])); }) ->visible(fn (DataChangeRequest $record): bool => $record->status === DataChangeStatus::PENDING && ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)); diff --git a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php index e453b89..e353c31 100644 --- a/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php +++ b/app/Filament/Resources/Manage/DataChanges/Actions/DataChangeRequest/RejectAction.php @@ -29,8 +29,8 @@ protected function setUp(): void ->placeholder('Berikan alasan mengapa permohonan ini ditolak...') ->required(), ]) - ->modalHeading(fn () => CheerfulNotification::getMessage('Tolak Perubahan Data? 🛑🤔', 'Tolak Perubahan Data')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yakin ingin menolak permohonan ini? Pastikan alasannya jelas biar pemohon nggak bingung ya! 😔📝', 'Apakah Anda yakin ingin menolak permohonan perubahan data ini?')) + ->modalHeading(fn () => CheerfulNotification::getByKey('data_change.reject_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('cooperation.reject_proposal_desc')) ->action(function (DataChangeRequest $record, array $data): void { $record->update([ 'status' => DataChangeStatus::REJECTED, @@ -50,14 +50,14 @@ protected function setUp(): void } CheerfulNotification::info( - CheerfulNotification::getMessage('Permohonan Ditolak 🛑', 'Permohonan Ditolak'), - CheerfulNotification::getMessage('Permohonan perubahan data telah ditolak. 😔', 'Permohonan perubahan data telah ditolak oleh Admin.') + CheerfulNotification::getByKey('data_change.request_rejected'), + CheerfulNotification::getByKey('data_change.request_rejected_desc') )->send(); // Notify User $record->user?->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Permohonan Perubahan Ditolak 🛑', 'Permohonan Perubahan Ditolak'), - 'body' => CheerfulNotification::getMessage("Halo! Mohon maaf, permohonan perubahan data Anda untuk {$record->change_reason} ditolak oleh admin. Alasan: {$data['rejection_reason']} 😔", "Permohonan perubahan data Anda untuk {$record->change_reason} telah ditolak oleh Admin.\n\nAlasan: {$data['rejection_reason']}"), + 'title' => CheerfulNotification::getByKey('data_change.change_request_rejected'), + 'body' => CheerfulNotification::getByKey('notification.data_change_rejected', ['record__change_reason' => $record->change_reason, 'data__rejection_reason' => $data['rejection_reason']]), ])); }) ->visible(fn (DataChangeRequest $record): bool => $record->status === DataChangeStatus::PENDING && ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) diff --git a/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php b/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php index 264f92d..0b8858a 100644 --- a/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php +++ b/app/Filament/Resources/Manage/DataChanges/DataChangesResource.php @@ -120,8 +120,8 @@ public static function infolist(Schema $schema): Schema if (isset($new['__delete_request__']) && $new['__delete_request__'] === true) { return "
-
".CheerfulNotification::getMessage('🚮 Permohonan Penghapusan Data', 'Permohonan Penghapusan Data')."
-

".CheerfulNotification::getMessage('User mengajukan penghapusan permanen untuk data ini. Semua informasi terkait akan dihapus setelah disetujui.', 'Pengguna mengajukan permohonan penghapusan permanen untuk data ini.').'

+
".CheerfulNotification::getByKey('data_change.deletion_request_title')."
+

".CheerfulNotification::getByKey('data_change.deletion_request_desc').'

'; } @@ -144,8 +144,8 @@ public static function infolist(Schema $schema): Schema return "
-
".CheerfulNotification::getMessage('✨ Permohonan Penambahan Data', 'Permohonan Penambahan Data')."
-

".CheerfulNotification::getMessage('Berikut adalah data baru yang akan dibuat.', 'Berikut adalah rincian data baru yang diajukan.')."

+
".CheerfulNotification::getByKey('data_change.addition_request_title')."
+

".CheerfulNotification::getByKey('data_change.addition_request_desc')."

{$rows} "; @@ -205,9 +205,9 @@ public static function table(Table $table): Table ->searchable() ->sortable() ->description(fn (DataChangeRequest $record): ?string => match (true) { - isset($record->new_data['__delete_request__']) => CheerfulNotification::getMessage('🗑️ Penghapusan', 'Penghapusan'), - empty($record->old_data) => CheerfulNotification::getMessage('✨ Penambahan', 'Penambahan'), - default => CheerfulNotification::getMessage('📝 Perubahan', 'Perubahan'), + isset($record->new_data['__delete_request__']) => CheerfulNotification::getByKey('data_change.deletion'), + empty($record->old_data) => CheerfulNotification::getByKey('data_change.addition'), + default => CheerfulNotification::getByKey('data_change.change'), }) ->formatStateUsing(fn (DataChangeRequest $record): ?string => match ($record->entity_type) { Company::class => 'Perusahaan', @@ -268,7 +268,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedDocumentText) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada permohonan baru nih! Semua aman dan terkendali. ✨✅', 'Belum ada permohonan perubahan data yang tersedia.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('data_change.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php index f13c260..4d272c5 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/CreateJournalistAction.php @@ -21,8 +21,8 @@ protected function setUp(): void parent::setUp(); $this->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Jurnalis Baru 🚀✨', 'Tambah Jurnalis')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yuk, masukkan data jurnalisnya dengan lengkap biar sistem makin mantap! 💪😊', 'Silakan masukkan detail data jurnalis baru di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('journalist.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('journalist.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->successNotification(null) @@ -94,16 +94,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Permohonan Berhasil 🎉', 'Permohonan Berhasil'), - CheerfulNotification::getMessage('Data jurnalis baru telah dikirim dan sedang menunggu verifikasi admin ⏳', 'Permohonan penambahan jurnalis baru sedang menunggu verifikasi.') + CheerfulNotification::getByKey('journalist.request_success'), + CheerfulNotification::getByKey('journalist.addition_request_processing') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($dataChangeRequest, $user): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Penambahan Jurnalis Baru ✨', 'Penambahan Jurnalis Baru'), - 'body' => CheerfulNotification::getMessage('Halooo Admin! 👋 '.$user->name.' baru saja menambahkan jurnalis baru. Yuk, cek detailnya! 🚀', 'Pengguna '.$user->name.' telah menambahkan jurnalis baru ke dalam sistem.'), + 'title' => CheerfulNotification::getByKey('data_change.addition_jurnalis_baru'), + 'body' => CheerfulNotification::getByKey('notification.user_added_journalist', ['user__name' => $user->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php index 8655533..0666200 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php @@ -24,8 +24,8 @@ protected function setUp(): void $this->successNotification(null); $this->modalHeading(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED - ? CheerfulNotification::getMessage('Mau Ajukan Penghapusan Jurnalis? 🗑️📬', 'Ajukan Penghapusan Jurnalis') - : CheerfulNotification::getMessage('Betulan Mau Hapus Jurnalis? 🗑️🤔', 'Hapus Jurnalis') + ? CheerfulNotification::getByKey('journalist.request_deletion_title') + : CheerfulNotification::getByKey('journalist.delete_title') ); $this->schema(fn () => auth()->user()->company?->verificationRequest?->status === VerificationStatus::APPROVED ? [ @@ -46,8 +46,8 @@ protected function setUp(): void if ($existingRequest) { CheerfulNotification::warning( - CheerfulNotification::getMessage('Pengajuan Sudah Ada ⏳', 'Pengajuan Sedang Diproses'), - CheerfulNotification::getMessage('Masih ada pengajuan penghapusan jurnalis yang sedang menunggu verifikasi.', 'Pengajuan penghapusan jurnalis ini masih dalam proses verifikasi admin.') + CheerfulNotification::getByKey('journalist.request_processing'), + CheerfulNotification::getByKey('journalist.deletion_request_processing') )->send(); return; @@ -63,16 +63,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Permohonan Berhasil 🎉', 'Permohonan Berhasil'), - CheerfulNotification::getMessage('Permohonan penghapusan jurnalis telah dikirim dan sedang menunggu verifikasi admin ⏳', 'Pengajuan penghapusan jurnalis telah berhasil dikirim.') + CheerfulNotification::getByKey('journalist.request_success'), + CheerfulNotification::getByKey('journalist.deletion_request_success') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($user, $record, $dataChangeRequest): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Pengajuan Penghapusan Jurnalis ✨', 'Pengajuan Penghapusan Jurnalis'), - 'body' => CheerfulNotification::getMessage('Halooo Admin! 👋 '.$user->name.' baru saja mengajukan penghapusan jurnalis '.$record->name.'. Yuk, cek detailnya! 🚀', 'Pengguna '.$user->name.' telah mengajukan penghapusan jurnalis '.$record->name.'.'), + 'title' => CheerfulNotification::getByKey('journalist.deletion_request_notif'), + 'body' => CheerfulNotification::getByKey('notification.user_submitted_journalist_change', ['user__name' => $user->name, 'record__name' => $record->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php index f6d7478..bdde8cf 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php @@ -22,8 +22,8 @@ protected function setUp(): void { parent::setUp(); - $this->modalHeading(fn () => CheerfulNotification::getMessage('Sempurnakan Data Jurnalis 📝✨', 'Ubah Data Jurnalis')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo kita perbarui supaya data jurnalis makin akurat dan segar lagi! 🛠️👌', 'Silakan perbarui informasi jurnalis pada formulir di bawah ini.')) + $this->modalHeading(fn () => CheerfulNotification::getByKey('journalist.edit_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('journalist.edit_desc')) ->modalWidth(Width::Large) ->successNotification(null) ->fillForm(function (Journalist $journalist): array { @@ -61,8 +61,8 @@ protected function setUp(): void if ($existingRequest) { CheerfulNotification::warning( - CheerfulNotification::getMessage('Pengajuan Sudah Ada ⏳', 'Pengajuan Sedang Diproses'), - CheerfulNotification::getMessage('Masih ada pengajuan perubahan data yang sedang menunggu verifikasi.', 'Pengajuan perubahan data ini masih dalam proses verifikasi admin.') + CheerfulNotification::getByKey('journalist.request_processing'), + CheerfulNotification::getByKey('journalist.request_processing_desc') )->send(); return $record; @@ -121,8 +121,8 @@ protected function setUp(): void if (empty($changedFields)) { CheerfulNotification::info( - CheerfulNotification::getMessage('Belum ada yang berubah ✨', 'Tidak Ada Perubahan'), - CheerfulNotification::getMessage('Ubah data terlebih dulu lalu simpan kembali 💪', 'Silakan ubah data terlebih dahulu sebelum menyimpan.') + CheerfulNotification::getByKey('journalist.no_change'), + CheerfulNotification::getByKey('journalist.no_change_desc') )->send(); return $record; @@ -138,16 +138,16 @@ protected function setUp(): void ]); CheerfulNotification::success( - CheerfulNotification::getMessage('Permohonan Berhasil 🎉', 'Permohonan Berhasil'), - CheerfulNotification::getMessage('Data sudah dikirim dan sedang menunggu verifikasi admin ⏳', 'Pengajuan perubahan data telah berhasil dikirim.') + CheerfulNotification::getByKey('journalist.request_success'), + CheerfulNotification::getByKey('journalist.request_success_desc') )->send(); User::superAdmin() ->get() ->each(function ($admin) use ($dataChangeRequest, $user): void { $admin->notify(new BroadcastNotification([ - 'title' => CheerfulNotification::getMessage('Ada Pengajuan Perubahan Jurnalis ✨', 'Pengajuan Perubahan Jurnalis'), - 'body' => CheerfulNotification::getMessage('Halooo Admin! 👋 '.$user->name.' baru saja mengajukan perubahan data jurnalis. Yuk, cek detailnya! 🚀', 'Pengguna '.$user->name.' telah mengajukan perubahan data jurnalis.'), + 'title' => CheerfulNotification::getByKey('journalist.change_request_title'), + 'body' => CheerfulNotification::getByKey('notification.user_submitted_journalist_change', ['user__name' => $user->name]), 'action' => [ Action::make('view') ->label('Lihat') diff --git a/app/Filament/Resources/Manage/Journalists/JournalistResource.php b/app/Filament/Resources/Manage/Journalists/JournalistResource.php index 8e82380..ed17a3c 100644 --- a/app/Filament/Resources/Manage/Journalists/JournalistResource.php +++ b/app/Filament/Resources/Manage/Journalists/JournalistResource.php @@ -207,15 +207,15 @@ public static function table(Table $table): Table ])->visible(fn () => ! (in_array(auth()->user()->company?->verificationRequest?->status, [VerificationStatus::PENDING, VerificationStatus::REJECTED]) || auth()->user()->company?->verificationRequest()->pending()->exists())), ]) ->emptyStateIcon(Heroicon::OutlinedIdentification) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Jurnalis nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Jurnalis yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('journalist.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) ->deferLoading() ->when(fn () => auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia, function (Table $table): Table { return $table - ->emptyStateHeading(fn () => CheerfulNotification::getMessage('Wah, Pintunya Dikunci Nih! 🔒✨', 'Akses Dibatasi')) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Ups! Silakan lengkapi data media Anda dulu ya sebelum mengelola jurnalis. ✨📝', 'Silakan lengkapi data media Anda terlebih dahulu untuk dapat mengelola informasi jurnalis.')) + ->emptyStateHeading(fn () => CheerfulNotification::getByKey('access.restricted')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('access.complete_media_data')) ->emptyStateIcon(Heroicon::OutlinedLockClosed) ->emptyStateActions([ Action::make('complete_media') diff --git a/app/Filament/Resources/Manage/Partners/PartnerResource.php b/app/Filament/Resources/Manage/Partners/PartnerResource.php index a6c3389..19a6965 100644 --- a/app/Filament/Resources/Manage/Partners/PartnerResource.php +++ b/app/Filament/Resources/Manage/Partners/PartnerResource.php @@ -54,8 +54,8 @@ public static function infolist(Schema $schema): Schema { return $schema ->schema([ - Section::make(fn () => CheerfulNotification::getMessage('Akun 👤', 'Akun')) - ->description(fn () => CheerfulNotification::getMessage('Detail informasi akun pengguna yang terdaftar. ✨', 'Informasi detail mengenai akun pengguna.')) + Section::make(fn () => CheerfulNotification::getByKey('company.account_title')) + ->description(fn () => CheerfulNotification::getByKey('company.account_desc')) ->schema([ Grid::make(3) ->schema([ @@ -79,8 +79,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make(fn () => CheerfulNotification::getMessage('Perusahaan 🏢', 'Perusahaan')) - ->description(fn () => CheerfulNotification::getMessage('Informasi lengkap mengenai profil dan legalitas perusahaan. 🏢✨', 'Informasi detail mengenai profil dan legalitas perusahaan.')) + Section::make(fn () => CheerfulNotification::getByKey('company.company_title')) + ->description(fn () => CheerfulNotification::getByKey('company.company_desc')) ->schema([ Grid::make(3) ->schema([ @@ -122,7 +122,7 @@ public static function infolist(Schema $schema): Schema Grid::make(3) ->schema([ - Section::make(fn () => CheerfulNotification::getMessage('NIK Direktur 👤✨', 'NIK Direktur')) + Section::make(fn () => CheerfulNotification::getByKey('company.director_nik')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-user' : null) ->schema([ TextEntry::make('company.director_nik') @@ -157,7 +157,7 @@ public static function infolist(Schema $schema): Schema }), ]), - Section::make(fn () => CheerfulNotification::getMessage('Akta Pendirian 📄✨', 'Akta Pendirian')) + Section::make(fn () => CheerfulNotification::getByKey('company.establishment_deed')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.deed_incorporation') @@ -166,7 +166,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.deed_incorporation'), ]), - Section::make(fn () => CheerfulNotification::getMessage('SIUP / NIB 📄✨', 'SIUP / NIB')) + Section::make(fn () => CheerfulNotification::getByKey('company.siup_nib')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.trade_license') @@ -175,7 +175,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.trade_license'), ]), - Section::make(fn () => CheerfulNotification::getMessage('NPWP 📄✨', 'NPWP')) + Section::make(fn () => CheerfulNotification::getByKey('company.npwp')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.tax_id_number') @@ -184,7 +184,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.tax_id_number'), ]), - Section::make(fn () => CheerfulNotification::getMessage('PKP 📄✨', 'PKP')) + Section::make(fn () => CheerfulNotification::getByKey('company.pkp')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.taxable_enterprise') @@ -193,7 +193,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.taxable_enterprise'), ]), - Section::make(fn () => CheerfulNotification::getMessage('SPT Tahunan 📄✨', 'SPT Tahunan')) + Section::make(fn () => CheerfulNotification::getByKey('company.annual_tax')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.annual_tax_return') @@ -202,7 +202,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.annual_tax_return'), ]), - Section::make(fn () => CheerfulNotification::getMessage('SK Domisili 📄✨', 'SK Domisili')) + Section::make(fn () => CheerfulNotification::getByKey('company.domicile')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.domicile_certificate') @@ -211,7 +211,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.domicile_certificate'), ]), - Section::make(fn () => CheerfulNotification::getMessage('Profil Perusahaan 📄✨', 'Profil Perusahaan')) + Section::make(fn () => CheerfulNotification::getByKey('company.company_profile')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.profile') @@ -222,8 +222,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make(fn () => CheerfulNotification::getMessage('Media 📺', 'Media')) - ->description(fn () => CheerfulNotification::getMessage('Detail informasi media yang dikelola oleh perusahaan ini. 📺✨', 'Informasi detail mengenai media yang dikelola.')) + Section::make(fn () => CheerfulNotification::getByKey('company.media_title')) + ->description(fn () => CheerfulNotification::getByKey('company.media_desc')) ->schema([ Grid::make(4) ->schema([ @@ -249,7 +249,7 @@ public static function infolist(Schema $schema): Schema Grid::make(2) ->schema([ - Section::make(fn () => CheerfulNotification::getMessage('Sertifikat Organisasi Kewartawanan 📄✨', 'Sertifikat Organisasi Kewartawanan')) + Section::make(fn () => CheerfulNotification::getByKey('company.journalism_org_cert')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.partnerMedia.journalism_organization') @@ -258,7 +258,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('company.partnerMedia.journalism_organization', 'company.partnerMedia', 'partnerMedia'), ]), - Section::make(fn () => CheerfulNotification::getMessage('Sertifikat Dewan Pers 📄✨', 'Sertifikat Dewan Pers')) + Section::make(fn () => CheerfulNotification::getByKey('company.press_council_cert')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('company.partnerMedia.press_council_certificate') @@ -269,8 +269,8 @@ public static function infolist(Schema $schema): Schema ]), ]), - Section::make(fn () => CheerfulNotification::getMessage('Jurnalis ✍️', 'Jurnalis')) - ->description(fn () => CheerfulNotification::getMessage('Daftar jurnalis yang terdaftar di bawah bendera media ini. ✍️✨', 'Daftar jurnalis yang terdaftar pada media ini.')) + Section::make(fn () => CheerfulNotification::getByKey('company.journalist_title')) + ->description(fn () => CheerfulNotification::getByKey('company.journalist_desc')) ->schema([ RepeatableEntry::make('company.partnerMedia.journalists') ->hiddenLabel() @@ -288,7 +288,7 @@ public static function infolist(Schema $schema): Schema ]), Grid::make(2) ->schema([ - Section::make(fn () => CheerfulNotification::getMessage('Kartu Pers 🆔✨', 'Kartu Pers')) + Section::make(fn () => CheerfulNotification::getByKey('company.press_card')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-identification' : null) ->schema([ TextEntry::make('press_card') @@ -297,7 +297,7 @@ public static function infolist(Schema $schema): Schema self::fileEntry('press_card', null, 'journalists'), ]), - Section::make(fn () => CheerfulNotification::getMessage('Sertifikat UKW 📄✨', 'Sertifikat UKW')) + Section::make(fn () => CheerfulNotification::getByKey('company.ukw_cert')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextEntry::make('ukw_certificate') @@ -415,7 +415,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedBuildingOffice2) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada rekanan yang terdaftar nih. Yuk, ajak mereka bergabung dengan aplikasi kita! 🏢✨', 'Belum ada data rekanan yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('company.partner_empty')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Categories/CategoryResource.php b/app/Filament/Resources/Master/Categories/CategoryResource.php index 80d148d..26c7f1e 100644 --- a/app/Filament/Resources/Master/Categories/CategoryResource.php +++ b/app/Filament/Resources/Master/Categories/CategoryResource.php @@ -111,7 +111,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedListBullet) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Kategori nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Kategori yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('category.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php index 902a389..acd535f 100644 --- a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php +++ b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Kategori Baru 🏷️✨', 'Tambah Kategori')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Tambahkan kategori baru biar data makin teratur dan rapi! 📁😊', 'Silakan masukkan detail kategori data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('category.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('category.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Classifications/ClassificationResource.php b/app/Filament/Resources/Master/Classifications/ClassificationResource.php index e2c3e85..a447e55 100644 --- a/app/Filament/Resources/Master/Classifications/ClassificationResource.php +++ b/app/Filament/Resources/Master/Classifications/ClassificationResource.php @@ -111,7 +111,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedBookOpen) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Klasifikasi nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Klasifikasi yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('classification.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php index 85d1c9d..6b34dc8 100644 --- a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php +++ b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Klasifikasi Baru 📂✨', 'Tambah Klasifikasi')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Bantu sistem mengelompokkan data dengan klasifikasi yang pas! 🧩😊', 'Silakan masukkan detail klasifikasi data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('classification.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('classification.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Departments/DepartmentResource.php b/app/Filament/Resources/Master/Departments/DepartmentResource.php index a753f64..0de6529 100644 --- a/app/Filament/Resources/Master/Departments/DepartmentResource.php +++ b/app/Filament/Resources/Master/Departments/DepartmentResource.php @@ -122,7 +122,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedBuildingLibrary) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data OPD nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data OPD yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('opd.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php index 8824bf2..99a0dee 100644 --- a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php +++ b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah OPD Baru 🏢✨', 'Tambah OPD')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Daftarkan instansi/OPD baru ke dalam sistem kita! 💪😊', 'Silakan masukkan detail instansi/OPD baru di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('opd.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('opd.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Locations/LocationResource.php b/app/Filament/Resources/Master/Locations/LocationResource.php index 23df7a3..f89aaed 100644 --- a/app/Filament/Resources/Master/Locations/LocationResource.php +++ b/app/Filament/Resources/Master/Locations/LocationResource.php @@ -111,7 +111,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedMapPin) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Lokus nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Lokus yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('locus.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php index c6b3593..700b3ad 100644 --- a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php +++ b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Lokus Baru 📍✨', 'Tambah Lokus')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Tentukan titik lokasi baru biar datanya makin presisi! 🗺️😊', 'Silakan masukkan detail lokasi/lokus data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('locus.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('locus.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php index 12ca45f..cf99aa2 100644 --- a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php +++ b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Subklasifikasi Baru 📑✨', 'Tambah Subklasifikasi')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Perdalam klasifikasi data biar makin detail dan tertata! 🗂️😊', 'Silakan masukkan detail subklasifikasi data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('classification.sub.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('classification.sub.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php index e5c7995..2455dc8 100644 --- a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php +++ b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php @@ -92,8 +92,8 @@ public static function table(Table $table): Table $record->save(); CheerfulNotification::success( - CheerfulNotification::getMessage('Status Berubah! 🔄✨', 'Status Diperbarui'), - CheerfulNotification::getMessage('Status data berhasil diperbarui. Perubahan langsung aktif ya! 👍', 'Perubahan status data telah berhasil disimpan dan diterapkan.') + CheerfulNotification::getByKey('status.updated'), + CheerfulNotification::getByKey('status.update_success') )->send(); }), @@ -132,7 +132,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedQueueList) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Subklasifikasi nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('user.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php index 0880dad..81ae508 100644 --- a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php +++ b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Sublokus Baru 📌✨', 'Tambah Sublokus')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Detailkan lebih dalam lagi titik lokasinya, ya! 📍😊', 'Silakan masukkan detail sublokus data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('locus.sub.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('locus.sub.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php index db45e68..0aa3d09 100644 --- a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php +++ b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php @@ -129,7 +129,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedNumberedList) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Sublokus nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Sublokus yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('locus.sub.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php index c9fa8f4..8d6d6f6 100644 --- a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php +++ b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Tema Baru 📂✨', 'Tambah Tema')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Ayo tambahkan tema biar pengelompokan makin lengkap! 📚😊', 'Silakan masukkan detail tema data di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('theme.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('theme.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Themes/ThemeResource.php b/app/Filament/Resources/Master/Themes/ThemeResource.php index 6952dbe..251a3ec 100644 --- a/app/Filament/Resources/Master/Themes/ThemeResource.php +++ b/app/Filament/Resources/Master/Themes/ThemeResource.php @@ -105,7 +105,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedPuzzlePiece) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Tema nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Tema yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('theme.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php index 413116c..166a55e 100644 --- a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php +++ b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php @@ -19,8 +19,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Tambah Pengguna Baru 🚀✨', 'Tambah Pengguna')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Yuk, buat akun baru biar makin lengkap penggunanya! 💪😊', 'Silakan masukkan detail akun pengguna baru di bawah ini.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('user.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('user.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Master/Users/UserResource.php b/app/Filament/Resources/Master/Users/UserResource.php index 39db759..358136c 100644 --- a/app/Filament/Resources/Master/Users/UserResource.php +++ b/app/Filament/Resources/Master/Users/UserResource.php @@ -140,8 +140,8 @@ public static function table(Table $table): Table } CheerfulNotification::success( - $state ? CheerfulNotification::getMessage('Pengguna Diaktifkan! ✅', 'Pengguna Diaktifkan') : CheerfulNotification::getMessage('Pengguna Dinonaktifkan ⛔', 'Pengguna Dinonaktifkan'), - $state ? CheerfulNotification::getMessage('Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! 🚀', 'Status akun pengguna telah berhasil diaktifkan kembali.') : CheerfulNotification::getMessage('Status akun pengguna berhasil dinonaktifkan. Istirahat dulu ya... 😴', 'Status akun pengguna telah berhasil dinonaktifkan.') + $state ? CheerfulNotification::getByKey('user.activated') : CheerfulNotification::getByKey('user.deactivated'), + $state ? CheerfulNotification::getByKey('user.status_activated_success') : CheerfulNotification::getByKey('user.status_activated_success') )->send(); }) ->disabled(fn (User $record): bool => $record->hasRole(RoleEnum::PERUSAHAAN->value)), @@ -192,7 +192,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedUserGroup) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data pengguna nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('user.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php index 6fc1c9d..1b6df84 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Schemas/ContentRecapForm.php @@ -22,8 +22,8 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Informasi Konten 📝', 'Informasi Konten')) - ->description(fn () => CheerfulNotification::getMessage('Lengkapi detail judul, tautan, dan jenis konten Anda biar makin keren! 🚀😊', 'Lengkapi detail judul, tautan, dan jenis konten Anda.')) + Section::make(fn () => CheerfulNotification::getByKey('content.section_title')) + ->description(fn () => CheerfulNotification::getByKey('content.section_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-document-text' : null) ->schema([ TextInput::make('title') @@ -74,8 +74,8 @@ public static function configure(Schema $schema): Schema ]), ])->columnSpan(2), - Section::make(fn () => CheerfulNotification::getMessage('Klasifikasi & Lampiran 📁', 'Klasifikasi & Lampiran')) - ->description(fn () => CheerfulNotification::getMessage('Pilih klasifikasi yang pas dan unggah gambar pendukung ya! 📁✨', 'Pilih klasifikasi yang sesuai dan unggah gambar pendukung.')) + Section::make(fn () => CheerfulNotification::getByKey('content.attachment_title')) + ->description(fn () => CheerfulNotification::getByKey('content.attachment_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-folder-open' : null) ->schema([ Select::make('classification_id') diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php b/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php index caae46b..dde4bb2 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php @@ -201,7 +201,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedClipboardDocumentList) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Rekap Konten nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Rekap Konten yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('content.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php index 9b6ba5a..0b6f202 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Schemas/IssueManagementForm.php @@ -20,8 +20,8 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Identifikasi Isu 🔍', 'Identifikasi Isu')) - ->description(fn () => CheerfulNotification::getMessage('Yuk, hubungkan dengan berita monitoring dan tentukan lokasi isunya! 🔍✨', 'Hubungkan dengan berita monitoring dan tentukan lokasi isu.')) + Section::make(fn () => CheerfulNotification::getByKey('issue.identification_title')) + ->description(fn () => CheerfulNotification::getByKey('issue.identification_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-magnifying-glass' : null) ->schema([ Select::make('media_monitoring_id') @@ -73,8 +73,8 @@ public static function configure(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make(fn () => CheerfulNotification::getMessage('Sentimen & Klasifikasi 📊', 'Sentimen & Klasifikasi')) - ->description(fn () => CheerfulNotification::getMessage('Tentukan sentimen isu, respon, dan kategorinya biar makin jelas! 📊✨', 'Tentukan sentimen isu, respon, dan kategori klasifikasinya.')) + Section::make(fn () => CheerfulNotification::getByKey('issue.sentiment_title')) + ->description(fn () => CheerfulNotification::getByKey('issue.sentiment_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-chart-bar' : null) ->schema([ Select::make('issue') diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php index 498c0cd..852848b 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php @@ -229,7 +229,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedExclamationCircle) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Manajemen Isu nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Manajemen Isu yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('issue.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php index 77e5ad0..78573ce 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php @@ -47,13 +47,13 @@ protected function setUp(): void if ($count > 0) { CheerfulNotification::success( - CheerfulNotification::getMessage('Crawl Berhasil! 🕸️🚀', 'Crawl Selesai'), - CheerfulNotification::getMessage("Mantap! Ada {$count} berita baru nih tentang '{$data['keyword']}' di Purwakarta. Databasenya makin kaya! 😎", "Berhasil mendapatkan {$count} berita baru terkait kata kunci '{$data['keyword']}'.") + CheerfulNotification::getByKey('crawl.success'), + CheerfulNotification::getByKey('news.content.fetch_success', ['count' => $count, 'data__keyword' => $data['keyword']]) )->send(); } else { CheerfulNotification::info( - CheerfulNotification::getMessage('Belum Ada Berita Baru 🔍', 'Tidak Ada Berita Baru'), - CheerfulNotification::getMessage("Hmm, sepertinya belum ada update berita baru untuk '{$data['keyword']}'. Coba lagi nanti ya! 😉", "Tidak ditemukan berita baru untuk kata kunci '{$data['keyword']}' saat ini.") + CheerfulNotification::getByKey('news.no_new_data'), + CheerfulNotification::getByKey('news.content.fetch_empty', ['data__keyword' => $data['keyword']]) )->send(); } }) diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php index a66c15f..2fb5d8a 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Schemas/MediaMonitoringForm.php @@ -21,8 +21,8 @@ public static function configure(Schema $schema): Schema { return $schema ->components([ - Section::make(fn () => CheerfulNotification::getMessage('Detail Berita 📰', 'Detail Berita')) - ->description(fn () => CheerfulNotification::getMessage('Masukkan informasi lengkap mengenai pemberitaan media biar makin lengkap! 📰✨', 'Masukkan informasi lengkap mengenai pemberitaan media.')) + Section::make(fn () => CheerfulNotification::getByKey('news.detail_title')) + ->description(fn () => CheerfulNotification::getByKey('news.detail_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-newspaper' : null) ->schema([ TextInput::make('media_name') @@ -75,8 +75,8 @@ public static function configure(Schema $schema): Schema ->required(), ])->columnSpan(2), - Section::make(fn () => CheerfulNotification::getMessage('Kategori & Metadata 🏷️', 'Kategori & Metadata')) - ->description(fn () => CheerfulNotification::getMessage('Tentukan kategori berita dan informasi tambahan lainnya biar makin rapi! 🏷️✨', 'Tentukan kategori berita dan informasi tambahan lainnya.')) + Section::make(fn () => CheerfulNotification::getByKey('news.category_title')) + ->description(fn () => CheerfulNotification::getByKey('news.category_desc')) ->icon(fn () => CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-tag' : null) ->schema([ Select::make('channel') diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php index 413c87b..ca8c308 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php @@ -214,7 +214,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedClipboardDocumentCheck) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Monitoring Media nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Monitoring Media yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('news.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php index 8c5af5f..0c1da3c 100644 --- a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php +++ b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php @@ -162,7 +162,7 @@ public static function table(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedMegaphone) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Pengumuman nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Pengumuman yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('announcement.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php index 6886f25..249931e 100644 --- a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php +++ b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php @@ -24,8 +24,8 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->modalHeading(fn () => CheerfulNotification::getMessage('Buat Pengumuman Baru 📢✨', 'Tambah Pengumuman')) - ->modalDescription(fn () => CheerfulNotification::getMessage('Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! 🚀😊', 'Silakan isi formulir di bawah ini untuk membuat pengumuman baru.')) + ->modalHeading(fn () => CheerfulNotification::getByKey('announcement.create_title')) + ->modalDescription(fn () => CheerfulNotification::getByKey('announcement.create_desc')) ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') ->extraModalFooterActions(fn (CreateAction $action): array => [ diff --git a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php index 6406a51..eab444e 100644 --- a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php +++ b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php @@ -27,8 +27,8 @@ public static function configure(Schema $schema): Schema Hidden::make('author_id') ->default(auth()->id()), - Section::make(CheerfulNotification::getMessage('Konten Berita ✍️', 'Konten Berita')) - ->description(CheerfulNotification::getMessage('Yuk, tuliskan judul, ringkasan, dan isi lengkap berita Anda biar makin menarik! 🚀😊', 'Silakan tuliskan judul, ringkasan, dan isi lengkap berita Anda.')) + Section::make(CheerfulNotification::getByKey('news.content.title')) + ->description(CheerfulNotification::getByKey('news.content.desc')) ->icon(CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-pencil-square' : null) ->schema([ TextInput::make('title') @@ -52,8 +52,8 @@ public static function configure(Schema $schema): Schema ->columnSpanFull(), ])->columnSpan(2), - Section::make(CheerfulNotification::getMessage('Kategori & Publikasi 🏷️', 'Kategori & Publikasi')) - ->description(CheerfulNotification::getMessage('Tentukan kategori, tautan media, dan status publikasi biar berita kita gampang dicari! 🏷️✨', 'Tentukan kategori, tautan media, dan status publikasi.')) + Section::make(CheerfulNotification::getByKey('news.content.category_title')) + ->description(CheerfulNotification::getByKey('news.content.category_desc')) ->icon(CheerfulNotification::getNotifStyle() === NotifStyle::CHEERFUL ? 'heroicon-o-tag' : null) ->schema([ TextInput::make('link') diff --git a/app/Filament/Resources/Publication/News/Tables/NewsTable.php b/app/Filament/Resources/Publication/News/Tables/NewsTable.php index 3e929ed..76e007a 100644 --- a/app/Filament/Resources/Publication/News/Tables/NewsTable.php +++ b/app/Filament/Resources/Publication/News/Tables/NewsTable.php @@ -115,7 +115,7 @@ public static function configure(Table $table): Table ]), ]) ->emptyStateIcon(Heroicon::OutlinedNewspaper) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Berita nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Berita yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('news.content.empty_state')) ->defaultSort('created_at', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Resources/Visitors/VisitorResource.php b/app/Filament/Resources/Visitors/VisitorResource.php index 24c1c02..7a9da4d 100644 --- a/app/Filament/Resources/Visitors/VisitorResource.php +++ b/app/Filament/Resources/Visitors/VisitorResource.php @@ -168,7 +168,7 @@ public static function table(Table $table): Table ], FiltersLayout::AboveContentCollapsible) ->filtersFormColumns(3) ->emptyStateIcon(Heroicon::OutlinedChartBar) - ->emptyStateDescription(fn () => CheerfulNotification::getMessage('Belum ada data Pengunjung nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', 'Belum ada data Pengunjung yang tersedia saat ini.')) + ->emptyStateDescription(fn () => CheerfulNotification::getByKey('visitor.empty_state')) ->defaultSort('date', 'desc') ->deferFilters(false) ->paginated([25, 50, 100, 'all']) diff --git a/app/Filament/Support/CheerfulNotification.php b/app/Filament/Support/CheerfulNotification.php index 8881bd1..3ab7b7e 100644 --- a/app/Filament/Support/CheerfulNotification.php +++ b/app/Filament/Support/CheerfulNotification.php @@ -29,91 +29,73 @@ public static function getNotifStyle(): NotifStyle public static function create(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Hore! Data Tersimpan 🎉✨' : 'Data Berhasil Disimpan') - ->body($cheerful ? 'Data baru berhasil ditambahkan! Sistem sudah menyimpannya dengan aman. 🚀💪' : 'Data baru telah berhasil ditambahkan ke dalam sistem.') + ->title(self::getByKey('create.title')) + ->body(self::getByKey('create.body')) ->success(); } public static function update(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Mantap! Data Diperbarui ✅🔥' : 'Perubahan Tersimpan') - ->body($cheerful ? 'Perubahan berhasil disimpan! Data sekarang sudah up-to-date dan segar lagi. ✨👌' : 'Perubahan pada data telah berhasil diperbarui dan disimpan.') + ->title(self::getByKey('update.title')) + ->body(self::getByKey('update.body')) ->success(); } public static function delete(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Oke, Data Dihapus 🗑️👋' : 'Data Dihapus') - ->body($cheerful ? 'Data tersebut sudah berhasil dihapus dari sistem. Semuanya bersih dan rapi sekarang! 😊🚮' : 'Data tersebut telah berhasil dihapus dari sistem aplikasi.') + ->title(self::getByKey('delete.title')) + ->body(self::getByKey('delete.body')) ->success(); } public static function forceDelete(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Selamat Tinggal Selamanya 👋😢' : 'Data Dihapus Permanen') - ->body($cheerful ? 'Data telah dihapus permanen dan tidak bisa kembali. Semoga ini keputusan yang tepat! 🚮💨' : 'Data tersebut telah dihapus secara permanen dari sistem.') + ->title(self::getByKey('force_delete.title')) + ->body(self::getByKey('force_delete.body')) ->success(); } public static function restore(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Welcome Back! Data Pulih ♻️✨' : 'Data Berhasil Dipulihkan') - ->body($cheerful ? 'Data berhasil dikembalikan! Hati-hati ya, jangan sampai terhapus lagi. 😉👍' : 'Data yang dihapus sebelumnya telah berhasil dipulihkan ke dalam sistem.') + ->title(self::getByKey('restore.title')) + ->body(self::getByKey('restore.body')) ->success(); } public static function statusUpdated(?string $title = null, ?string $body = null): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($title ?? ($cheerful ? 'Status Berubah! 🔄✨' : 'Status Diperbarui')) - ->body($body ?? ($cheerful ? 'Status data berhasil diperbarui. Perubahan langsung aktif ya! 👍' : 'Status data telah berhasil diperbarui dan telah diterapkan.')) + ->title($title ?? self::getByKey('status_updated.title')) + ->body($body ?? self::getByKey('status_updated.body')) ->success(); } public static function bulkDelete(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Oke, Banyak Data Dihapus 🗑️👋' : 'Data Berhasil Dihapus') - ->body($cheerful ? 'Semua data yang dipilih berhasil dihapus. Sistem makin lega deh! 😊' : 'Seluruh data yang dipilih telah berhasil dihapus dari sistem.') + ->title(self::getByKey('bulk_delete.title')) + ->body(self::getByKey('bulk_delete.body')) ->success(); } public static function bulkForceDelete(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Bye Bye Semua! 👋🔥' : 'Data Dihapus Permanen') - ->body($cheerful ? 'Data yang dipilih sudah dihapus permanen. Bersih total! 🧹💨' : 'Data yang dipilih telah berhasil dihapus secara permanen.') + ->title(self::getByKey('bulk_force_delete.title')) + ->body(self::getByKey('bulk_force_delete.body')) ->success(); } public static function bulkRestore(): Notification { - $cheerful = self::getNotifStyle() === NotifStyle::CHEERFUL; - return self::make() - ->title($cheerful ? 'Hore! Banyak Data Pulih ♻️🎉' : 'Data Berhasil Dipulihkan') - ->body($cheerful ? 'Data-data tersebut sudah kembali aktif. Selamat bekerja kembali! 💪✨' : 'Seluruh data yang dipilih telah berhasil dikembalikan ke posisi semula.') + ->title(self::getByKey('bulk_restore.title')) + ->body(self::getByKey('bulk_restore.body')) ->success(); } @@ -162,10 +144,16 @@ public static function danger(string $title, string $body): Notification } /** - * Get dynamic message based on UX style. + * Get dynamic message based on UX style from language file. */ - public static function getMessage(string $cheerful, string $formal): string + public static function getByKey(?string $key = null, array $replace = []): string { - return self::getNotifStyle() === NotifStyle::CHEERFUL ? $cheerful : $formal; + if (! $key) { + return ''; + } + + $style = self::getNotifStyle()->value; + + return __("notif.{$key}.{$style}", $replace); } } diff --git a/app/Providers/Filament/DashboardPanelProvider.php b/app/Providers/Filament/DashboardPanelProvider.php index af92ac0..162afdd 100644 --- a/app/Providers/Filament/DashboardPanelProvider.php +++ b/app/Providers/Filament/DashboardPanelProvider.php @@ -143,6 +143,7 @@ public function panel(Panel $panel): Panel ]) ->databaseNotifications() ->databaseNotificationsPolling('30s') - ->globalSearch(false); + ->globalSearch(false) + ->spa(); } } diff --git a/lang/id/notif.php b/lang/id/notif.php new file mode 100644 index 0000000..50c1a02 --- /dev/null +++ b/lang/id/notif.php @@ -0,0 +1,1511 @@ + [ + 'title' => [ + 'cheerful' => 'Hore! Data Tersimpan 🎉✨', + 'formal' => 'Data Berhasil Disimpan', + ], + 'body' => [ + 'cheerful' => 'Data baru berhasil ditambahkan! Sistem sudah menyimpannya dengan aman. 🚀💪', + 'formal' => 'Data baru telah berhasil ditambahkan ke dalam sistem.', + ], + ], + 'update' => [ + 'title' => [ + 'cheerful' => 'Mantap! Data Diperbarui ✅🔥', + 'formal' => 'Perubahan Tersimpan', + ], + 'body' => [ + 'cheerful' => 'Perubahan berhasil disimpan! Data sekarang sudah up-to-date dan segar lagi. ✨👌', + 'formal' => 'Perubahan pada data telah berhasil diperbarui dan disimpan.', + ], + ], + 'delete' => [ + 'title' => [ + 'cheerful' => 'Oke, Data Dihapus 🗑️👋', + 'formal' => 'Data Dihapus', + ], + 'body' => [ + 'cheerful' => 'Data tersebut sudah berhasil dihapus dari sistem. Semuanya bersih dan rapi sekarang! 😊🚮', + 'formal' => 'Data tersebut telah berhasil dihapus dari sistem aplikasi.', + ], + ], + 'force_delete' => [ + 'title' => [ + 'cheerful' => 'Selamat Tinggal Selamanya 👋😢', + 'formal' => 'Data Dihapus Permanen', + ], + 'body' => [ + 'cheerful' => 'Data telah dihapus permanen dan tidak bisa kembali. Semoga ini keputusan yang tepat! 🚮💨', + 'formal' => 'Data tersebut telah dihapus secara permanen dari sistem.', + ], + ], + 'restore' => [ + 'title' => [ + 'cheerful' => 'Welcome Back! Data Pulih ♻️✨', + 'formal' => 'Data Berhasil Dipulihkan', + ], + 'body' => [ + 'cheerful' => 'Data berhasil dikembalikan! Hati-hati ya, jangan sampai terhapus lagi. 😉👍', + 'formal' => 'Data yang dihapus sebelumnya telah berhasil dipulihkan ke dalam sistem.', + ], + ], + 'status_updated' => [ + 'title' => [ + 'cheerful' => 'Status Berubah! 🔄✨', + 'formal' => 'Status Diperbarui', + ], + 'body' => [ + 'cheerful' => 'Status data berhasil diperbarui. Perubahan langsung aktif ya! 👍', + 'formal' => 'Status data telah berhasil diperbarui dan telah diterapkan.', + ], + ], + 'bulk_delete' => [ + 'title' => [ + 'cheerful' => 'Oke, Banyak Data Dihapus 🗑️👋', + 'formal' => 'Data Berhasil Dihapus', + ], + 'body' => [ + 'cheerful' => 'Semua data yang dipilih berhasil dihapus. Sistem makin lega deh! 😊', + 'formal' => 'Seluruh data yang dipilih telah berhasil dihapus dari sistem.', + ], + ], + 'bulk_force_delete' => [ + 'title' => [ + 'cheerful' => 'Bye Bye Semua! 👋🔥', + 'formal' => 'Data Dihapus Permanen', + ], + 'body' => [ + 'cheerful' => 'Data yang dipilih sudah dihapus permanen. Bersih total! 🧹💨', + 'formal' => 'Data yang dipilih telah berhasil dihapus secara permanen.', + ], + ], + 'bulk_restore' => [ + 'title' => [ + 'cheerful' => 'Hore! Banyak Data Pulih ♻️🎉', + 'formal' => 'Data Berhasil Dipulihkan', + ], + 'body' => [ + 'cheerful' => 'Data-data tersebut sudah kembali aktif. Selamat bekerja kembali! 💪✨', + 'formal' => 'Seluruh data yang dipilih telah berhasil dikembalikan ke posisi semula.', + ], + ], + 'profile' => [ + 'detail' => [ + 'title' => [ + 'cheerful' => 'Detail Profil 👤✨', + 'formal' => 'Profil Pengguna', + ], + 'description' => [ + 'cheerful' => 'Yuk, kelola informasi detail profil Anda agar selalu terkini! 👤🚀', + 'formal' => 'Kelola informasi profil dasar Anda di bawah ini.', + ], + ], + 'ux' => [ + 'title' => [ + 'cheerful' => 'Pengaturan Tampilan & UX 🎨✨', + 'formal' => 'Preferensi Tampilan', + ], + 'description' => [ + 'cheerful' => 'Personalisasi pengalaman aplikasi Anda agar lebih nyaman dan sesuai selera! 🌈🚀', + 'formal' => 'Sesuaikan gaya bahasa, warna tema, dan jenis huruf aplikasi Anda.', + ], + ], + 'security' => [ + 'title' => [ + 'cheerful' => 'Keamanan Akun 🔐✨', + 'formal' => 'Ubah Kata Sandi', + ], + 'description' => [ + 'cheerful' => 'Ingin ganti kata sandi? Pastikan pilih yang kuat ya biar makin aman! 🔐💪', + 'formal' => 'Silakan masukkan kata sandi baru untuk memperbarui keamanan akun Anda.', + ], + ], + 'saved' => [ + 'title' => [ + 'cheerful' => 'Profil Diperbarui! ✨', + 'formal' => 'Profil Diperbarui', + ], + 'body' => [ + 'cheerful' => 'Sip! Detail profil baru Anda sudah tersimpan dengan aman. Terus semangat ya! 💪😊', + 'formal' => 'Perubahan pada profil Anda telah berhasil disimpan ke dalam sistem.', + ], + ], + 'password_changed' => [ + 'title' => [ + 'cheerful' => 'Sesi Berakhir 🔐', + 'formal' => 'Keamanan Diperbarui', + ], + 'body' => [ + 'cheerful' => 'Anda telah mengubah kata sandi. Silakan masuk kembali dengan kata sandi baru Anda ya. 😉👋', + 'formal' => 'Kata sandi Anda telah berhasil diubah. Harap lakukan login kembali menggunakan kata sandi yang baru untuk alasan keamanan.', + ], + ], + ], + 'settings' => [ + 'general' => [ + 'basic_info' => [ + 'title' => [ + 'cheerful' => 'Informasi Dasar 📋✨', + 'formal' => 'Informasi Dasar', + ], + 'description' => [ + 'cheerful' => 'Atur info penting website kita di sini biar makin lengkap! 🚀😊', + 'formal' => 'Silakan atur informasi dasar situs web pada bagian ini.', + ], + ], + 'logo_icon' => [ + 'title' => [ + 'cheerful' => 'Logo & Ikon 🖼️✨', + 'formal' => 'Logo & Ikon', + ], + 'description' => [ + 'cheerful' => 'Unggah logo dan ikon biar branding kita makin cakep! 🎨👌', + 'formal' => 'Silakan unggah logo dan ikon untuk keperluan branding situs web.', + ], + ], + ], + 'seo' => [ + 'section' => [ + 'title' => [ + 'cheerful' => 'Search Engine Optimization 🔍✨', + 'formal' => 'Optimasi Mesin Pencari (SEO)', + ], + 'description' => [ + 'cheerful' => 'Atur kata kunci dan deskripsi biar website kita gampang dicari orang ya! 🚀📈', + 'formal' => 'Atur kata kunci dan deskripsi untuk meningkatkan visibilitas situs web pada mesin pencari.', + ], + ], + ], + 'social_media' => [ + 'section' => [ + 'title' => [ + 'cheerful' => 'Link Media Sosial 🔗✨', + 'formal' => 'Tautan Media Sosial', + ], + 'description' => [ + 'cheerful' => 'Hubungkan semua media sosial resmi kita di sini untuk menjangkau lebih banyak orang! 🌐🤩', + 'formal' => 'Silakan masukkan tautan media sosial resmi perusahaan pada bagian ini.', + ], + ], + ], + ], + 'verification' => [ + 'submit' => [ + 'title' => [ + 'cheerful' => 'Ajukan Verifikasi Sekarang? 🚀✨', + 'formal' => 'Ajukan Verifikasi', + ], + 'description' => [ + 'incomplete' => [ + 'cheerful' => 'Aduh, data belum lengkap nih! 😅 Silakan lengkapi dulu bagian: :missing ya!', + 'formal' => 'Data belum lengkap. Silakan lengkapi bagian: :missing.', + ], + 'revision' => [ + 'cheerful' => 'Ayo kirim ulang perbaikannya! Pastikan semuanya sudah sesuai catatan admin biar langsung gaspol! 💪✨', + 'formal' => 'Silakan kirimkan kembali perbaikan data Anda sesuai dengan catatan Admin.', + ], + 'default' => [ + 'cheerful' => 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar and lengkap ya! Pasti bisa! 😊👍', + 'formal' => 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan seluruh data yang diinput telah sesuai.', + ], + ], + ], + 'incomplete' => [ + 'title' => [ + 'cheerful' => 'Data Belum Lengkap! 😅', + 'formal' => 'Data Tidak Lengkap', + ], + 'body' => [ + 'cheerful' => 'Silakan lengkapi data terlebih dahulu sebelum mengajukan verifikasi ya: :missing', + 'formal' => 'Silakan lengkapi seluruh data wajib sebelum mengajukan verifikasi: :missing', + ], + ], + 'success' => [ + 'title' => [ + 'cheerful' => 'Berhasil Diajukan! 🚀', + 'formal' => 'Berhasil Diajukan', + ], + 'body' => [ + 'cheerful' => 'Yeay! Pengajuan verifikasi Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! ✨', + 'formal' => 'Pengajuan verifikasi Anda telah berhasil dikirimkan ke pihak Admin untuk diproses.', + ], + ], + 'admin_notify' => [ + 'title' => [ + 'revision' => [ + 'cheerful' => 'Pembaruan Data Verifikasi ✨', + 'formal' => 'Pembaruan Data Verifikasi', + ], + 'new' => [ + 'cheerful' => 'Ada Pengajuan Verifikasi Baru! 🚀', + 'formal' => 'Pengajuan Verifikasi Baru', + ], + ], + 'body' => [ + 'revision' => [ + 'cheerful' => 'Cihuy! :name baru saja memperbarui data verifikasi untuk perusahaan :company. Yuk, cek perubahannya!', + 'formal' => 'Pengguna :name telah memperbarui data verifikasi untuk perusahaan :company.', + ], + 'new' => [ + 'cheerful' => 'Halo Admin! :name baru saja mengajukan verifikasi data untuk perusahaan :company. Segera diproses ya! 😊', + 'formal' => 'Pengguna :name telah mengajukan verifikasi data untuk perusahaan :company.', + ], + ], + ], + 'alert' => [ + 'approved' => [ + 'body' => 'Verifikasi Anda telah diterima dan disetujui oleh admin. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami!', + ], + 'pending' => [ + 'title' => 'Menunggu Verifikasi', + 'body' => 'Data Anda sedang dalam proses verifikasi oleh admin. Mohon tunggu.', + ], + ], + 'admin' => [ + 'process' => [ + 'not_found' => [ + 'title' => [ + 'cheerful' => 'Belum ketemu nih 🙌', + 'formal' => 'Data Tidak Ditemukan', + ], + 'body' => [ + 'cheerful' => 'Data verifikasi belum kami temukan. Coba sebentar lagi, ya.', + 'formal' => 'Permintaan verifikasi tidak ditemukan dalam sistem kami.', + ], + ], + 'success' => [ + 'title' => [ + 'cheerful' => 'Berhasil Diproses! ✨', + 'formal' => 'Berhasil Diproses', + ], + 'body' => [ + 'cheerful' => 'Mantap! Verifikasi telah :action dan notifikasi sudah dikirim ke pengguna. Kerja bagus, Admin! 💪', + 'formal' => 'Proses verifikasi telah :action dan notifikasi telah dikirimkan ke pihak pengguna.', + ], + ], + 'error' => [ + 'title' => [ + 'cheerful' => 'Terjadi Kesalahan ⚠️', + 'formal' => 'Terjadi Kesalahan Sistem', + ], + 'body' => [ + 'cheerful' => 'Proses verifikasi gagal karena kesalahan sistem. Tim kami sudah mencatat masalah ini. Silakan coba lagi nanti.', + 'formal' => 'Proses verifikasi gagal dilakukan karena kendala teknis. Silakan laporkan jika masalah berlanjut.', + ], + ], + ], + 'notif_user' => [ + 'approved' => [ + 'title' => [ + 'cheerful' => 'Horee! Verifikasi Disetujui 🎉', + 'formal' => 'Verifikasi Disetujui', + ], + 'body' => [ + 'cheerful' => 'Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! 🎊', + 'formal' => 'Pengajuan verifikasi perusahaan Anda telah disetujui.', + ], + ], + 'revision' => [ + 'title' => [ + 'cheerful' => 'Yah, Ada Yang Perlu Direvisi nih 📝', + 'formal' => 'Perlu Revisi Verifikasi', + ], + 'body' => [ + 'cheerful' => 'Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. 💪', + 'formal' => 'Admin meminta beberapa perbaikan pada pengajuan verifikasi Anda.', + ], + ], + 'rejected' => [ + 'title' => [ + 'cheerful' => 'Maaf, Verifikasi Ditolak 😔', + 'formal' => 'Verifikasi Ditolak', + ], + 'body' => [ + 'cheerful' => 'Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. 💔', + 'formal' => 'Pengajuan verifikasi perusahaan Anda tidak dapat kami setujui saat ini.', + ], + ], + 'note' => [ + 'cheerful' => 'Catatan Admin: :note 😊', + 'formal' => 'Catatan Admin: :note', + ], + ], + 'messages' => [ + 'detail' => [ + 'cheerful' => 'Detail Data 🔍✨', + 'formal' => 'Detail', + ], + 'revision' => [ + 'cheerful' => 'Sabar ya, pengguna lagi sibuk revisi data nih! ⏳✍️', + 'formal' => 'Menunggu revisi dari pengguna...', + ], + 'approved' => [ + 'cheerful' => 'Yeay! Verifikasi sudah beres dan disetujui! ✅🚀', + 'formal' => 'Verifikasi selesai', + ], + 'rejected' => [ + 'cheerful' => 'Yah, pengajuannya terpaksa belum bisa diterima. 🛑😔', + 'formal' => 'Pengajuan ditolak', + ], + ], + 'empty_state' => [ + 'heading' => [ + 'cheerful' => 'Belum ada pengajuan verifikasi nih! 📭✨', + 'formal' => 'Tidak ada pengajuan verifikasi', + ], + 'description' => [ + 'cheerful' => 'Tenang saja, mungkin sebentar lagi bakal ada yang kirim pengajuan verifikasi. Ditunggu saja ya! 😊⏳', + 'formal' => 'Belum ada pengajuan verifikasi dari user.', + ], + ], + ], + ], + 'auth' => [ + 'registration' => [ + 'success' => [ + 'title' => [ + 'cheerful' => 'Selamat Datang! 👋🎉', + 'formal' => 'Pendaftaran Berhasil', + ], + 'body' => [ + 'cheerful' => 'Halooo, :name!, terima kasih sudah bergabung! Akunmu berhasil dibuat. Silakan verifikasi alamat surelmu! 🚀✨', + 'formal' => 'Selamat datang, :name. Akun Anda telah berhasil dibuat. Silakan periksa email Anda untuk melakukan verifikasi.', + ], + ], + 'admin_notify' => [ + 'title' => [ + 'cheerful' => 'Warga Baru Nih! 👋🎉', + 'formal' => 'Pendaftaran Pengguna Baru', + ], + 'body' => [ + 'cheerful' => 'Halo Admin! :name baru saja mendaftar. Yuk cek kelengkapannya! 🚀', + 'formal' => 'Pengguna baru :name telah mendaftar ke dalam sistem.', + ], + ], + ], + 'login' => [ + 'inactive' => [ + 'title' => [ + 'cheerful' => 'Akun Tidak Aktif 🚫', + 'formal' => 'Akses Ditolak', + ], + 'body' => [ + 'cheerful' => 'Maaf, akun Anda saat ini tidak aktif. Silakan hubungi Administrator. 📞', + 'formal' => 'Akun Anda saat ini tidak memiliki izin untuk mengakses sistem. Silakan hubungi administrator.', + ], + ], + 'success' => [ + 'title' => [ + 'cheerful' => 'Hore! Berhasil Masuk 🎉', + 'formal' => 'Login Berhasil', + ], + 'body' => [ + 'cheerful' => 'Selamat datang kembali, :name! Siap untuk beraksi hari ini? 🚀✨', + 'formal' => 'Selamat datang kembali, :name. Anda telah berhasil masuk ke dalam sistem.', + ], + ], + 'failed' => [ + 'title' => [ + 'cheerful' => 'Ups! Gagal Masuk 😅', + 'formal' => 'Login Gagal', + ], + 'body' => [ + 'cheerful' => 'Sepertinya ada yang salah nih. Coba cek email atau kata sandi mu lagi ya! 🤔🔐', + 'formal' => 'Kredensial yang Anda masukkan salah. Silakan periksa kembali email dan kata sandi Anda.', + ], + ], + ], + 'email_verification' => [ + 'resend_success' => [ + 'title' => [ + 'cheerful' => 'Mail Meluncur! 📧🚀', + 'formal' => 'Email Terkirim', + ], + 'body' => [ + 'cheerful' => 'Tautan verifikasi baru sudah dikirim ke alamat surelmu. Cek inbox (atau spam) ya! 😉✨', + 'formal' => 'Tautan verifikasi baru telah dikirimkan ke alamat email Anda. Silakan periksa kotak masuk atau spam.', + ], + ], + 'rate_limited' => [ + 'title' => [ + 'cheerful' => 'Pelan-pelan ya ⏳', + 'formal' => 'Terlalu Banyak Permintaan', + ], + 'body' => [ + 'cheerful' => 'Permintaan terlalu sering. Tunggu sebentar lalu coba lagi dalam :seconds detik.', + 'formal' => 'Anda telah melakukan terlalu banyak permintaan. Silakan coba kembali dalam :seconds detik.', + ], + ], + ], + ], + 'actions' => [ + 'bulk' => [ + 'delete' => [ + 'cheerful' => 'Mau Hapus Banyak :entity? 🗑️🤔', + 'formal' => 'Hapus Data :entity Terpilih', + ], + 'force_delete' => [ + 'cheerful' => 'Hapus Permanen :entity Terpilih? 🗑️🔥', + 'formal' => 'Hapus Permanen Data :entity Terpilih', + ], + 'restore' => [ + 'cheerful' => 'Pulihkan :entity yang Dipilih? ♻️✨', + 'formal' => 'Pulihkan Data :entity Terpilih', + ], + ], + 'create' => [ + 'title' => [ + 'cheerful' => 'Tambah Data Seru! 🚀✨', + 'formal' => 'Tambah Data Baru', + ], + 'description' => [ + 'cheerful' => 'Isi form di bawah ini dengan semangat ya, biar datanya tersimpan dengan aman! 💪😊', + 'formal' => 'Silakan isi formulir di bawah ini dengan lengkap untuk menambahkan data baru.', + ], + ], + 'restore' => [ + 'title' => [ + 'cheerful' => 'Panggil Balik Datanya? ♻️✨', + 'formal' => 'Pulihkan Data', + ], + 'description' => [ + 'cheerful' => 'Siap buat mengaktifkan kembali data yang sempat hilang? Yuk, kita pulihkan bareng-bareng! 😉🙌', + 'formal' => 'Apakah Anda yakin ingin memulihkan data yang telah dihapus ini?', + ], + ], + 'edit' => [ + 'title' => [ + 'cheerful' => 'Sempurnakan Datanya 📝✨', + 'formal' => 'Ubah Data', + ], + 'description' => [ + 'cheerful' => 'Ayo kita perbarui supaya datanya makin akurat dan segar lagi! 🛠️👌', + 'formal' => 'Silakan perbarui informasi pada formulir di bawah ini.', + ], + ], + 'approve' => [ + 'title' => [ + 'cheerful' => 'Setujui Verifikasi? ✅✨', + 'formal' => 'Setujui Verifikasi', + ], + 'description' => [ + 'cheerful' => 'Yakin datanya sudah oke semua? Yuk, kita resmikan verifikasinya sekarang! 🚀😊', + 'formal' => 'Apakah Anda yakin ingin menyetujui verifikasi ini? Seluruh data yang diajukan akan dianggap valid.', + ], + ], + 'reject' => [ + 'title' => [ + 'cheerful' => 'Tolak Verifikasi? 🛑🤔', + 'formal' => 'Tolak Verifikasi', + ], + 'description' => [ + 'cheerful' => 'Yakin mau ditolak secara permanen? Pastikan alasannya sudah sreg di hati ya! 😔📝', + 'formal' => 'Apakah Anda yakin ingin menolak verifikasi ini secara permanen?', + ], + ], + 'revision' => [ + 'title' => [ + 'cheerful' => 'Minta Revisi Data 📝⚠️', + 'formal' => 'Minta Revisi Data', + ], + 'description' => [ + 'cheerful' => 'Siap kirim instruksi perbaikan? Kasih catatan yang jelas ya biar pengguna nggak bingung! 😊', + 'formal' => 'Silakan masukkan instruksi perbaikan yang diperlukan untuk pengguna.', + ], + ], + ], + 'media' => [ + 'section' => [ + 'title' => [ + 'cheerful' => 'Detail Informasi 📰✨', + 'formal' => 'Informasi Media', + ], + 'description' => [ + 'cheerful' => 'Kelola informasi media Anda biar tetap eksis dan terpercaya! 🚀✨', + 'formal' => 'Kelola informasi detail media Anda di sini.', + ], + ], + 'save' => [ + 'title' => [ + 'cheerful' => 'Ajukan Perubahan Media 📝✨', + 'formal' => 'Ubah Data Media', + ], + 'description' => [ + 'cheerful' => 'Mau mengubah data media? Sertakan alasan yang jelas ya biar admin makin yakin! 😊', + 'formal' => 'Silakan masukkan alasan Anda melakukan perubahan data media.', + ], + ], + ], + 'company' => [ + 'section' => [ + 'title' => [ + 'cheerful' => 'Informasi Perusahaan 🏗️✨', + 'formal' => 'Profil Perusahaan', + ], + 'description' => [ + 'cheerful' => 'Kelola informasi perusahaan Anda biar tetap resmi dan kredibel! 🚀✨', + 'formal' => 'Kelola informasi detail perusahaan Anda di sini.', + ], + ], + 'nik_section' => [ + 'title' => [ + 'cheerful' => 'NIK Direktur 👤✨', + 'formal' => 'NIK Direktur', + ], + ], + 'save' => [ + 'title' => [ + 'cheerful' => 'Ajukan Perubahan Profil 📝✨', + 'formal' => 'Ubah Profil Perusahaan', + ], + 'description' => [ + 'cheerful' => 'Yakin ingin mengubah data perusahaan? Jelaskan alasannya supaya proses verifikasi makin lancar! 😊', + 'formal' => 'Silakan masukkan alasan Anda melakukan perubahan profil perusahaan.', + ], + ], + ], + 'data_change' => [ + 'existing' => [ + 'title' => [ + 'cheerful' => 'Pengajuan Sudah Ada ⏳', + 'formal' => 'Pengajuan Sedang Diproses', + ], + 'body' => [ + 'cheerful' => 'Masih ada pengajuan perubahan data yang sedang menunggu verifikasi. Silakan tunggu hingga selesai diproses.', + 'formal' => 'Pengajuan perubahan data Anda masih dalam proses verifikasi oleh admin.', + ], + ], + 'no_change' => [ + 'title' => [ + 'cheerful' => 'Belum ada yang berubah ✨', + 'formal' => 'Tidak Ada Perubahan', + ], + 'body' => [ + 'cheerful' => 'Ubah data terlebih dulu lalu simpan kembali 💪', + 'formal' => 'Silakan ubah data terlebih dahulu sebelum melakukan penyimpanan.', + ], + ], + 'success' => [ + 'title' => [ + 'cheerful' => 'Permohonan Berhasil 🎉', + 'formal' => 'Permohonan Berhasil', + ], + 'body' => [ + 'cheerful' => 'Data sudah dikirim dan sedang menunggu verifikasi admin ⏳', + 'formal' => 'Permohonan perubahan data telah berhasil dikirimkan.', + ], + ], + 'admin_notify' => [ + 'title' => [ + 'cheerful' => 'Ada Pengajuan Perubahan Data ✨', + 'formal' => 'Pengajuan Perubahan Data', + ], + 'body' => [ + 'cheerful' => 'Halooo Admin! 👋 :name baru saja mengajukan perubahan data. Yuk, cek detailnya dan lakukan verifikasi ya! 🚀', + 'formal' => 'Pengguna :name telah mengajukan perubahan data.', + ], + ], + ], + 'enum' => [ + 'news_status' => [ + 'draft' => [ + 'cheerful' => 'Draft - Sempurnakan Lagi! ✍️🛠️', + 'formal' => 'Draft', + ], + 'published' => [ + 'cheerful' => 'Telah Tayang! 🚀✨', + 'formal' => 'Publish', + ], + 'archived' => [ + 'cheerful' => 'Arsip - Disimpan Dulu Ya! 📦🔒', + 'formal' => 'Arsip', + ], + ], + 'data_change_decision' => [ + 'approved' => [ + 'cheerful' => 'Perubahan Disetujui! ✅🚀', + 'formal' => 'Disetujui', + ], + 'rejected' => [ + 'cheerful' => 'Perubahan Ditolak 🛑😔', + 'formal' => 'Ditolak', + ], + ], + 'decision_admin' => [ + 'approved' => [ + 'cheerful' => 'Sudah Disetujui! ✅🚀', + 'formal' => 'Disetujui', + ], + 'need_revision' => [ + 'cheerful' => 'Perlu Revisi nih! ✍️🛠️', + 'formal' => 'Perlu Revisi', + ], + 'rejected' => [ + 'cheerful' => 'Ditolak, Tetap Semangat! 🛑😔', + 'formal' => 'Ditolak', + ], + ], + 'approval_status' => [ + 'pending' => [ + 'cheerful' => 'Menunggu Persetujuan ⏳✨', + 'formal' => 'Menunggu', + ], + 'accepted' => [ + 'cheerful' => 'Diterima! ✅🚀', + 'formal' => 'Menerima', + ], + 'rejected' => [ + 'cheerful' => 'Ditolak, Tetap Semangat! 🛑😔', + 'formal' => 'Menolak', + ], + ], + 'data_change_status' => [ + 'pending' => [ + 'cheerful' => 'Menunggu Verifikasi ⏳✨', + 'formal' => 'Menunggu Verifikasi', + ], + 'approved' => [ + 'cheerful' => 'Perubahan Disetujui! ✅🚀', + 'formal' => 'Disetujui', + ], + 'rejected' => [ + 'cheerful' => 'Perubahan Ditolak 🛑😔', + 'formal' => 'Ditolak', + ], + ], + 'verification_status' => [ + 'pending' => [ + 'cheerful' => 'Menunggu Verifikasi ⏳✨', + 'formal' => 'Menunggu Verifikasi', + ], + 'approved' => [ + 'cheerful' => 'Sudah Disetujui! ✅🚀', + 'formal' => 'Disetujui', + ], + 'need_revision' => [ + 'cheerful' => 'Perlu Revisi nih! ✍️🛠️', + 'formal' => 'Perlu Revisi', + ], + 'rejected' => [ + 'cheerful' => 'Ditolak, Tetap Semangat! 🛑😔', + 'formal' => 'Ditolak', + ], + ], + 'cooperation_status' => [ + 'pending' => [ + 'cheerful' => 'Menunggu... Tetap Sabar Ya! ⏳✨', + 'formal' => 'Menunggu', + ], + 'assignment' => [ + 'cheerful' => 'Sedang Ditugaskan nih! 📋🛠️', + 'formal' => 'Penugasan', + ], + 'verification' => [ + 'cheerful' => 'Lagi Diverifikasi, Tunggu Sebentar! 🔍✅', + 'formal' => 'Verifikasi', + ], + 'payment' => [ + 'cheerful' => 'Waktunya Pembayaran! 💵🚀', + 'formal' => 'Pembayaran', + ], + 'completed' => [ + 'cheerful' => 'Selesai! Mantap Jiwa! 🎉🔥', + 'formal' => 'Selesai', + ], + ], + ], + 'visitor' => [ + 'empty_state' => [ + 'cheerful' => 'Belum ada data Pengunjung nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Pengunjung yang tersedia saat ini.', + ], + ], + 'content' => [ + 'section_title' => [ + 'cheerful' => 'Informasi Konten 📝', + 'formal' => 'Informasi Konten', + ], + 'section_desc' => [ + 'cheerful' => 'Lengkapi detail judul, tautan, dan jenis konten Anda biar makin keren! 🚀😊', + 'formal' => 'Lengkapi detail judul, tautan, dan jenis konten Anda.', + ], + 'attachment_title' => [ + 'cheerful' => 'Klasifikasi & Lampiran 📁', + 'formal' => 'Klasifikasi & Lampiran', + ], + 'attachment_desc' => [ + 'cheerful' => 'Pilih klasifikasi yang pas dan unggah gambar pendukung ya! 📁✨', + 'formal' => 'Pilih klasifikasi yang sesuai dan unggah gambar pendukung.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Rekap Konten nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Rekap Konten yang tersedia saat ini.', + ], + ], + 'crawl' => [ + 'success' => [ + 'cheerful' => 'Crawl Berhasil! 🕸️🚀', + 'formal' => 'Crawl Selesai', + ], + ], + 'news' => [ + 'no_new_data' => [ + 'cheerful' => 'Belum Ada Berita Baru 🔍', + 'formal' => 'Tidak Ada Berita Baru', + ], + 'detail_title' => [ + 'cheerful' => 'Detail Berita 📰', + 'formal' => 'Detail Berita', + ], + 'detail_desc' => [ + 'cheerful' => 'Masukkan informasi lengkap mengenai pemberitaan media biar makin lengkap! 📰✨', + 'formal' => 'Masukkan informasi lengkap mengenai pemberitaan media.', + ], + 'category_title' => [ + 'cheerful' => 'Kategori & Metadata 🏷️', + 'formal' => 'Kategori & Metadata', + ], + 'category_desc' => [ + 'cheerful' => 'Tentukan kategori berita dan informasi tambahan lainnya biar makin rapi! 🏷️✨', + 'formal' => 'Tentukan kategori berita dan informasi tambahan lainnya.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Monitoring Media nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Monitoring Media yang tersedia saat ini.', + ], + 'content' => [ + 'title' => [ + 'cheerful' => 'Konten Berita ✍️', + 'formal' => 'Konten Berita', + ], + 'desc' => [ + 'cheerful' => 'Yuk, tuliskan judul, ringkasan, dan isi lengkap berita Anda biar makin menarik! 🚀😊', + 'formal' => 'Silakan tuliskan judul, ringkasan, dan isi lengkap berita Anda.', + ], + 'category_title' => [ + 'cheerful' => 'Kategori & Publikasi 🏷️', + 'formal' => 'Kategori & Publikasi', + ], + 'category_desc' => [ + 'cheerful' => 'Tentukan kategori, tautan media, dan status publikasi biar berita kita gampang dicari! 🏷️✨', + 'formal' => 'Tentukan kategori, tautan media, dan status publikasi.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Berita nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Berita yang tersedia saat ini.', + ], + 'fetch_success' => [ + 'cheerful' => 'Mantap! Ada :count berita baru nih tentang \':data__keyword\' di Purwakarta. Databasenya makin kaya! 😎', + 'formal' => 'Berhasil mendapatkan :count berita baru terkait kata kunci \':data__keyword\'.', + ], + 'fetch_empty' => [ + 'cheerful' => 'Hmm', + 'formal' => 'sepertinya belum ada update berita baru untuk \':data__keyword\'. Coba lagi nanti ya! 😉', + ], + ], + ], + 'issue' => [ + 'identification_title' => [ + 'cheerful' => 'Identifikasi Isu 🔍', + 'formal' => 'Identifikasi Isu', + ], + 'identification_desc' => [ + 'cheerful' => 'Yuk, hubungkan dengan berita monitoring dan tentukan lokasi isunya! 🔍✨', + 'formal' => 'Hubungkan dengan berita monitoring dan tentukan lokasi isu.', + ], + 'sentiment_title' => [ + 'cheerful' => 'Sentimen & Klasifikasi 📊', + 'formal' => 'Sentimen & Klasifikasi', + ], + 'sentiment_desc' => [ + 'cheerful' => 'Tentukan sentimen isu, respon, dan kategorinya biar makin jelas! 📊✨', + 'formal' => 'Tentukan sentimen isu, respon, dan kategori klasifikasinya.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Manajemen Isu nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Manajemen Isu yang tersedia saat ini.', + ], + ], + 'user' => [ + 'activated' => [ + 'cheerful' => 'Pengguna Diaktifkan! ✅', + 'formal' => 'Pengguna Diaktifkan', + ], + 'deactivated' => [ + 'cheerful' => 'Pengguna Dinonaktifkan ⛔', + 'formal' => 'Pengguna Dinonaktifkan', + ], + 'status_activated_success' => [ + 'cheerful' => 'Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! 🚀', + 'formal' => 'Status akun pengguna telah berhasil diaktifkan kembali.', + ], + 'status_deactivated_success' => [ + 'cheerful' => 'Status akun pengguna berhasil dinonaktifkan. Istirahat dulu ya... 😴', + 'formal' => 'Status akun pengguna telah berhasil dinonaktifkan.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data pengguna nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data yang tersedia saat ini.', + ], + 'create_title' => [ + 'cheerful' => 'Tambah Pengguna Baru 🚀✨', + 'formal' => 'Tambah Pengguna', + ], + 'create_desc' => [ + 'cheerful' => 'Yuk, buat akun baru biar makin lengkap penggunanya! 💪😊', + 'formal' => 'Silakan masukkan detail akun pengguna baru di bawah ini.', + ], + ], + 'theme' => [ + 'create_title' => [ + 'cheerful' => 'Tambah Tema Baru 📂✨', + 'formal' => 'Tambah Tema', + ], + 'create_desc' => [ + 'cheerful' => 'Ayo tambahkan tema biar pengelompokan makin lengkap! 📚😊', + 'formal' => 'Silakan masukkan detail tema data di bawah ini.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Tema nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Tema yang tersedia saat ini.', + ], + ], + 'category' => [ + 'create_title' => [ + 'cheerful' => 'Tambah Kategori Baru 🏷️✨', + 'formal' => 'Tambah Kategori', + ], + 'create_desc' => [ + 'cheerful' => 'Tambahkan kategori baru biar data makin teratur dan rapi! 📁😊', + 'formal' => 'Silakan masukkan detail kategori data di bawah ini.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Kategori nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Kategori yang tersedia saat ini.', + ], + ], + 'classification' => [ + 'create_title' => [ + 'cheerful' => 'Tambah Klasifikasi Baru 📂✨', + 'formal' => 'Tambah Klasifikasi', + ], + 'create_desc' => [ + 'cheerful' => 'Bantu sistem mengelompokkan data dengan klasifikasi yang pas! 🧩😊', + 'formal' => 'Silakan masukkan detail klasifikasi data di bawah ini.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Klasifikasi nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Klasifikasi yang tersedia saat ini.', + ], + 'sub' => [ + 'empty_state' => [ + 'cheerful' => 'Belum ada data Subklasifikasi nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data yang tersedia saat ini.', + ], + 'create_title' => [ + 'cheerful' => 'Tambah Subklasifikasi Baru 📑✨', + 'formal' => 'Tambah Subklasifikasi', + ], + 'create_desc' => [ + 'cheerful' => 'Perdalam klasifikasi data biar makin detail dan tertata! 🗂️😊', + 'formal' => 'Silakan masukkan detail subklasifikasi data di bawah ini.', + ], + ], + ], + 'locus' => [ + 'empty_state' => [ + 'cheerful' => 'Belum ada data Lokus nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Lokus yang tersedia saat ini.', + ], + 'create_title' => [ + 'cheerful' => 'Tambah Lokus Baru 📍✨', + 'formal' => 'Tambah Lokus', + ], + 'create_desc' => [ + 'cheerful' => 'Tentukan titik lokasi baru biar datanya makin presisi! 🗺️😊', + 'formal' => 'Silakan masukkan detail lokasi/lokus data di bawah ini.', + ], + 'sub' => [ + 'create_title' => [ + 'cheerful' => 'Tambah Sublokus Baru 📌✨', + 'formal' => 'Tambah Sublokus', + ], + 'create_desc' => [ + 'cheerful' => 'Detailkan lebih dalam lagi titik lokasinya, ya! 📍😊', + 'formal' => 'Silakan masukkan detail sublokus data di bawah ini.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Sublokus nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Sublokus yang tersedia saat ini.', + ], + ], + ], + 'opd' => [ + 'create_title' => [ + 'cheerful' => 'Tambah OPD Baru 🏢✨', + 'formal' => 'Tambah OPD', + ], + 'create_desc' => [ + 'cheerful' => 'Daftarkan instansi/OPD baru ke dalam sistem kita! 💪😊', + 'formal' => 'Silakan masukkan detail instansi/OPD baru di bawah ini.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data OPD nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data OPD yang tersedia saat ini.', + ], + ], + 'status' => [ + 'updated' => [ + 'cheerful' => 'Status Berubah! 🔄✨', + 'formal' => 'Status Diperbarui', + ], + 'update_success' => [ + 'cheerful' => 'Status data berhasil diperbarui. Perubahan langsung aktif ya! 👍', + 'formal' => 'Perubahan status data telah berhasil disimpan dan diterapkan.', + ], + ], + 'cooperation' => [ + 'info_title' => [ + 'cheerful' => 'Informasi Kerja Sama 🤝', + 'formal' => 'Informasi Kerja Sama', + ], + 'info_desc' => [ + 'cheerful' => 'Detail lengkap mengenai data kerja sama yang sedang berjalan. 🤝✨', + 'formal' => 'Informasi detail mengenai pelaksanaan kerja sama.', + ], + 'reject_proposal_title' => [ + 'cheerful' => 'Tolak Proposal Ini? 🛑🤔', + 'formal' => 'Tolak Proposal', + ], + 'reject_proposal_desc' => [ + 'cheerful' => 'Yakin ingin menolak proposal ini? Berikan alasan biar media bisa melakukan perbaikan ke depannya! 📝😊', + 'formal' => 'Apakah Anda yakin ingin menolak proposal kerja sama ini? Harap berikan alasan penolakan.', + ], + 'proposal_rejected' => [ + 'cheerful' => 'Proposal Ditolak! 🛑', + 'formal' => 'Proposal Ditolak', + ], + 'proposal_rejection_notice' => [ + 'cheerful' => 'Maaf, Proposal Belum Diterima 😔', + 'formal' => 'Pemberitahuan Penolakan Proposal', + ], + 'accept_proposal_title' => [ + 'cheerful' => 'Terima Proposal Ini? ✅✨', + 'formal' => 'Terima Proposal', + ], + 'accept_proposal_desc' => [ + 'cheerful' => 'Yakin ingin menerima proposal kerja sama ini? Pastikan profil medianya sudah oke semua ya! 😊', + 'formal' => 'Apakah Anda yakin ingin menyetujui proposal kerja sama ini?', + ], + 'proposal_approved_success' => [ + 'cheerful' => 'Proposal Diterima! ✅✨', + 'formal' => 'Proposal Berhasil Disetujui', + ], + 'proposal_approved' => [ + 'cheerful' => 'Horee! Proposal Disetujui 🎉', + 'formal' => 'Proposal Kerja Sama Disetujui', + ], + 'proposal_approved_desc' => [ + 'cheerful' => 'Yeay! Proposal kerja sama Anda telah disetujui oleh Admin. Mari kita lanjut ke tahap berikutnya! 🎊', + 'formal' => 'Proposal kerja sama Anda telah disetujui oleh pihak Admin.', + ], + 'offer_rejected' => [ + 'cheerful' => 'Berhasil Ditolak 🙏', + 'formal' => 'Tawaran Kerja Sama Ditolak', + ], + 'offer_rejection_sent' => [ + 'cheerful' => 'Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. 😊', + 'formal' => 'Penolakan penawaran kerja sama telah berhasil dikirimkan ke pihak Admin.', + ], + 'offer_rejected_by_media' => [ + 'cheerful' => 'Yah, Tawaran Ditolak 😔🤝', + 'formal' => 'Tawaran Kerja Sama Ditolak Media', + ], + 'complete_title' => [ + 'cheerful' => 'Selesaikan Kerja Sama? 🏁✨', + 'formal' => 'Selesaikan Kerja Sama', + ], + 'complete_desc' => [ + 'cheerful' => 'Yakin mau menyelesaikan kerja sama ini? Pastikan semua pembayaran ke media sudah lunas dan aman ya! 🤝😊', + 'formal' => 'Apakah Anda yakin ingin menyelesaikan kerja sama ini? Pastikan seluruh kewajiban pembayaran telah terpenuhi.', + ], + 'media_empty' => [ + 'cheerful' => 'Tidak Ada Media! ❌', + 'formal' => 'Data Media Kosong', + ], + 'media_empty_desc' => [ + 'cheerful' => 'Tidak ada media yang menerima kerja sama ini. Tidak dapat diselesaikan.', + 'formal' => 'Proses tidak dapat dilanjutkan karena tidak ada media yang terlibat dalam kerja sama ini.', + ], + 'payment_unfulfilled' => [ + 'cheerful' => 'Pembayaran Belum Lunas! ⚠️', + 'formal' => 'Pembayaran Belum Terpenuhi', + ], + 'payment_unfulfilled_desc' => [ + 'cheerful' => 'Masih ada media yang belum dibayar. Harap selesaikan pembayaran untuk semua media yang menerima kerja sama.', + 'formal' => 'Terdapat kewajiban pembayaran yang belum diselesaikan untuk media terkait.', + ], + 'completed_success' => [ + 'cheerful' => 'Kerja Sama Selesai! 🎉✨', + 'formal' => 'Kerja Sama Berhasil Diselesaikan', + ], + 'completed_desc' => [ + 'cheerful' => 'Alhamdulillah! Kerja sama ini telah resmi diselesaikan. Terima kasih atas kerja samanya! 🙌😊', + 'formal' => 'Proses kerja sama ini telah resmi ditutup dan diselesaikan.', + ], + 'offer_accepted' => [ + 'cheerful' => 'Berhasil Diterima! ✅✨', + 'formal' => 'Tawaran Diterima', + ], + 'offer_accepted_desc' => [ + 'cheerful' => 'Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! 💪', + 'formal' => 'Anda telah menyetujui penawaran kerja sama ini. Silakan lanjutkan ke tahap pengiriman proposal.', + ], + 'offer_accepted_by_media' => [ + 'cheerful' => 'Kabar Baik! Tawaran Diterima ✨🤝', + 'formal' => 'Tawaran Kerja Sama Disetujui Media', + ], + 'proposal_sent_success' => [ + 'cheerful' => 'Berhasil Diajukan! 🚀', + 'formal' => 'Proposal Berhasil Dikirim', + ], + 'proposal_sent_desc' => [ + 'cheerful' => 'Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! ✨', + 'formal' => 'Proposal kerja sama Anda telah berhasil dikirimkan ke pihak Admin.', + ], + 'proposal_update' => [ + 'cheerful' => 'Pembaruan Proposal Kerja Sama ✨', + 'formal' => 'Pembaruan Proposal Kerja Sama', + ], + 'new_proposal' => [ + 'cheerful' => 'Ada Proposal Kerja Sama Baru! 🚀', + 'formal' => 'Proposal Kerja Sama Baru', + ], + 'submit_proposal_title' => [ + 'cheerful' => 'Ajukan Proposal Kerja Sama 🚀📝', + 'formal' => 'Ajukan Proposal Kerja Sama', + ], + 'submit_proposal_desc' => [ + 'cheerful' => 'Ayo kirimkan proposal terbaikmu! Pastikan semua dokumen sudah lengkap ya biar admin makin sreg! ✨😊', + 'formal' => 'Silakan ajukan proposal kerja sama Anda. Pastikan seluruh dokumen pendukung telah dilampirkan.', + ], + 'proceed_to_payment_title' => [ + 'cheerful' => 'Lanjut ke Pembayaran? 💸💳', + 'formal' => 'Lanjutkan ke Pembayaran', + ], + 'proceed_to_payment_desc' => [ + 'cheerful' => 'Siap buat lanjut ke tahap pembayaran? Pastikan semua laporan sudah diverifikasi dulu ya! ✅😊', + 'formal' => 'Apakah Anda yakin ingin melanjutkan ke tahap pembayaran? Pastikan seluruh laporan telah diverifikasi.', + ], + 'payment_stage_active' => [ + 'cheerful' => 'Tahap Pembayaran Dimulai! 💸✨', + 'formal' => 'Tahap Pembayaran Aktif', + ], + 'payment_stage_changed_desc' => [ + 'cheerful' => 'Kerja sama telah dipindahkan ke tahap pembayaran. Silakan proses pembayarannya ya! 😊', + 'formal' => 'Status kerja sama telah dialihkan ke tahap pembayaran.', + ], + 'new_assignment' => [ + 'cheerful' => 'Tugas Baru Telah Menanti! 📝✨', + 'formal' => 'Penugasan Kerja Sama Baru', + ], + 'assignment_created_success' => [ + 'cheerful' => 'Penugasan Berhasil Dibuat! 🚀✨', + 'formal' => 'Penugasan Berhasil Dibuat', + ], + 'assignment_created_desc' => [ + 'cheerful' => 'Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! 💪', + 'formal' => 'Penugasan telah berhasil dibuat dan seluruh media terkait telah dinotifikasi.', + ], + 'create_assignment_title' => [ + 'cheerful' => 'Buat Penugasan Baru 📝✨', + 'formal' => 'Buat Penugasan Baru', + ], + 'create_assignment_desc' => [ + 'cheerful' => 'Waktunya bagi-bagi tugas! Tentukan detail penugasan untuk para media biar mereka bisa langsung gaspol! 🚀💪', + 'formal' => 'Silakan tentukan detail penugasan untuk pihak media eksternal.', + ], + 'reject_report_title' => [ + 'cheerful' => 'Tolak Laporan? 🛑🤔', + 'formal' => 'Tolak Laporan', + ], + 'reject_report_desc' => [ + 'cheerful' => 'Apakah Anda yakin ingin menolak laporan ini? Sertakan alasan biar media bisa segera memperbaikinya ya! 📝😊', + 'formal' => 'Apakah Anda yakin ingin menolak laporan ini? Silakan berikan alasan penolakan untuk perbaikan oleh pihak media.', + ], + 'report_rejected' => [ + 'cheerful' => 'Laporan Ditolak! 🛑', + 'formal' => 'Laporan Ditolak', + ], + 'report_cooperation_rejected' => [ + 'cheerful' => 'Yah, Laporan Ditolak 🙁', + 'formal' => 'Laporan Kerja Sama Ditolak', + ], + 'report_approved_success' => [ + 'cheerful' => 'Laporan Diterima! ✅✨', + 'formal' => 'Laporan Berhasil Disetujui', + ], + 'report_cooperation_approved' => [ + 'cheerful' => 'Mantap! Laporan Diterima 🎊✨', + 'formal' => 'Laporan Kerja Sama Disetujui', + ], + 'payment_recorded_success' => [ + 'cheerful' => 'Pembayaran Berhasil! 💸✨', + 'formal' => 'Pembayaran Berhasil Dicatat', + ], + 'payment_sent' => [ + 'cheerful' => 'Pembayaran Telah Dikirim! 💸✨', + 'formal' => 'Pembayaran Kerja Sama Telah Dikirim', + ], + 'new_offer' => [ + 'cheerful' => 'Ada Penawaran Kerja Sama Baru! 🤝✨', + 'formal' => 'Penawaran Kerja Sama Baru', + ], + 'detail_title' => [ + 'cheerful' => 'Detail Kerja Sama 🤝', + 'formal' => 'Detail Kerja Sama', + ], + 'detail_desc' => [ + 'cheerful' => 'Ayo lengkapi informasi mengenai judul, durasi, dan media yang diajak kerja sama! 🤝✨', + 'formal' => 'Lengkapi informasi mengenai judul, durasi, dan media yang terlibat.', + ], + 'attachment_title' => [ + 'cheerful' => 'Lampiran & Media 🖼️', + 'formal' => 'Lampiran & Media', + ], + 'attachment_desc' => [ + 'cheerful' => 'Jangan lupa unggah banner promosi dan template pengajuannya ya! 🖼️✨', + 'formal' => 'Unggah banner promosi dan template untuk pengajuan.', + ], + 'payment_empty' => [ + 'cheerful' => 'Ups! Belum ada data pembayaran yang tercatat nih. Sabar ya! 💸✨', + 'formal' => 'Belum ada data pembayaran yang tersedia saat ini.', + ], + 'media_data_empty' => [ + 'cheerful' => 'Daftar media pendukung masih kosong nih! Yuk, tambahkan media sekarang. 📰✨', + 'formal' => 'Belum ada data media yang tersedia.', + ], + 'proposal_deleted' => [ + 'cheerful' => 'Proposal Dihapus! 🗑️', + 'formal' => 'Proposal Dihapus', + ], + 'proposal_deleted_desc' => [ + 'cheerful' => 'Semua proposal yang dipilih telah berhasil dihapus dari sistem. 👋', + 'formal' => 'Seluruh data proposal yang dipilih telah berhasil dihapus dari sistem.', + ], + 'proposal_empty' => [ + 'cheerful' => 'Belum ada proposal yang masuk nih! Tenang, nanti juga ada yang tertarik kok. ✨🚀', + 'formal' => 'Belum ada data proposal yang diajukan saat ini.', + ], + 'create_report_title' => [ + 'cheerful' => 'Sampaikan Laporan Baru 📝🚀', + 'formal' => 'Buat Laporan Baru', + ], + 'create_report_desc' => [ + 'cheerful' => 'Ayo kirimkan hasil kerja kerasmu! Isi detail laporannya biar admin bisa langsung verifikasi ya! 💪✨', + 'formal' => 'Silakan masukkan detail laporan pekerjaan Anda pada formulir di bawah ini.', + ], + 'report_sent_success' => [ + 'cheerful' => 'Laporan Berhasil Terkirim! 🚀✨', + 'formal' => 'Laporan Berhasil Terkirim', + ], + 'report_sent_desc' => [ + 'cheerful' => 'Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! 💪', + 'formal' => 'Laporan Anda telah berhasil dikirimkan ke sistem dan sedang menunggu verifikasi admin.', + ], + 'report_empty' => [ + 'cheerful' => 'Belum ada laporan yang dikirimkan nih! Yuk, kirimkan hasil kerjamu sekarang juga! 🚀✨', + 'formal' => 'Belum ada data laporan yang diajukan saat ini.', + ], + 'assignment_success' => [ + 'cheerful' => 'Penugasan Dibuat! 🚀✨', + 'formal' => 'Penugasan Berhasil', + ], + 'assignment_set_success' => [ + 'cheerful' => 'Tugas baru berhasil ditetapkan. Media terkait akan segera mengetahuinya! 💪', + 'formal' => 'Tugas baru telah berhasil ditetapkan untuk pihak media.', + ], + 'assignment_updated' => [ + 'cheerful' => 'Penugasan Diperbarui! ✅', + 'formal' => 'Penugasan Diperbarui', + ], + 'assignment_updated_desc' => [ + 'cheerful' => 'Perubahan pada penugasan berhasil disimpan dengan aman. 👍', + 'formal' => 'Perubahan pada detail penugasan telah berhasil disimpan.', + ], + 'assignment_deleted' => [ + 'cheerful' => 'Penugasan Dihapus! 🗑️', + 'formal' => 'Penugasan Dihapus', + ], + 'assignment_deleted_desc' => [ + 'cheerful' => 'Penugasan telah berhasil dihapus dari sistem. 👋', + 'formal' => 'Data penugasan telah berhasil dihapus dari sistem.', + ], + 'assignment_deleted_success' => [ + 'cheerful' => 'Banyak Penugasan Dihapus! 🗑️👋', + 'formal' => 'Penugasan Berhasil Dihapus', + ], + 'bulk_assignment_deleted' => [ + 'cheerful' => 'Semua penugasan yang dipilih telah dihapus dari sistem. 🧹', + 'formal' => 'Seluruh data penugasan yang dipilih telah berhasil dihapus.', + ], + 'assignment_empty' => [ + 'cheerful' => 'Belum ada penugasan nih! Mari buat penugasan pertama untuk media. 🚀✨', + 'formal' => 'Tidak ada data penugasan yang tersedia.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data kerja sama nih. Yuk, mulai buat data pertama Anda! 🤝✨', + 'formal' => 'Belum ada data kerja sama yang tersedia saat ini.', + ], + 'new_report' => [ + 'cheerful' => 'Ada Laporan Baru! 📝✨', + 'formal' => 'Laporan Kerja Sama Baru', + ], + ], + 'journalist' => [ + 'edit_title' => [ + 'cheerful' => 'Sempurnakan Data Jurnalis 📝✨', + 'formal' => 'Ubah Data Jurnalis', + ], + 'edit_desc' => [ + 'cheerful' => 'Ayo kita perbarui supaya data jurnalis makin akurat dan segar lagi! 🛠️👌', + 'formal' => 'Silakan perbarui informasi jurnalis pada formulir di bawah ini.', + ], + 'request_processing' => [ + 'cheerful' => 'Pengajuan Sudah Ada ⏳', + 'formal' => 'Pengajuan Sedang Diproses', + ], + 'request_processing_desc' => [ + 'cheerful' => 'Masih ada pengajuan perubahan data yang sedang menunggu verifikasi.', + 'formal' => 'Pengajuan perubahan data ini masih dalam proses verifikasi admin.', + ], + 'no_change' => [ + 'cheerful' => 'Belum ada yang berubah ✨', + 'formal' => 'Tidak Ada Perubahan', + ], + 'no_change_desc' => [ + 'cheerful' => 'Ubah data terlebih dulu lalu simpan kembali 💪', + 'formal' => 'Silakan ubah data terlebih dahulu sebelum menyimpan.', + ], + 'request_success' => [ + 'cheerful' => 'Permohonan Berhasil 🎉', + 'formal' => 'Permohonan Berhasil', + ], + 'request_success_desc' => [ + 'cheerful' => 'Data sudah dikirim dan sedang menunggu verifikasi admin ⏳', + 'formal' => 'Pengajuan perubahan data telah berhasil dikirim.', + ], + 'change_request_title' => [ + 'cheerful' => 'Ada Pengajuan Perubahan Jurnalis ✨', + 'formal' => 'Pengajuan Perubahan Jurnalis', + ], + 'request_deletion_title' => [ + 'cheerful' => 'Mau Ajukan Penghapusan Jurnalis? 🗑️📬', + 'formal' => 'Ajukan Penghapusan Jurnalis', + ], + 'delete_title' => [ + 'cheerful' => 'Betulan Mau Hapus Jurnalis? 🗑️🤔', + 'formal' => 'Hapus Jurnalis', + ], + 'deletion_request_processing' => [ + 'cheerful' => 'Masih ada pengajuan penghapusan jurnalis yang sedang menunggu verifikasi.', + 'formal' => 'Pengajuan penghapusan jurnalis ini masih dalam proses verifikasi admin.', + ], + 'deletion_request_success' => [ + 'cheerful' => 'Permohonan penghapusan jurnalis telah dikirim dan sedang menunggu verifikasi admin ⏳', + 'formal' => 'Pengajuan penghapusan jurnalis telah berhasil dikirim.', + ], + 'deletion_request_notif' => [ + 'cheerful' => 'Ada Pengajuan Penghapusan Jurnalis ✨', + 'formal' => 'Pengajuan Penghapusan Jurnalis', + ], + 'create_title' => [ + 'cheerful' => 'Tambah Jurnalis Baru 🚀✨', + 'formal' => 'Tambah Jurnalis', + ], + 'create_desc' => [ + 'cheerful' => 'Yuk, masukkan data jurnalisnya dengan lengkap biar sistem makin mantap! 💪😊', + 'formal' => 'Silakan masukkan detail data jurnalis baru di bawah ini.', + ], + 'addition_request_processing' => [ + 'cheerful' => 'Data jurnalis baru telah dikirim dan sedang menunggu verifikasi admin ⏳', + 'formal' => 'Permohonan penambahan jurnalis baru sedang menunggu verifikasi.', + ], + 'new_addition_notif' => [ + 'cheerful' => 'Ada Penambahan Jurnalis Baru ✨', + 'formal' => 'Penambahan Jurnalis Baru', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Jurnalis nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Jurnalis yang tersedia saat ini.', + ], + ], + 'access' => [ + 'restricted' => [ + 'cheerful' => 'Wah, Pintunya Dikunci Nih! 🔒✨', + 'formal' => 'Akses Dibatasi', + ], + 'complete_media_data' => [ + 'cheerful' => 'Ups! Silakan lengkapi data media Anda dulu ya sebelum mengelola jurnalis. ✨📝', + 'formal' => 'Silakan lengkapi data media Anda terlebih dahulu untuk dapat mengelola informasi jurnalis.', + ], + ], + 'contact' => [ + 'reply_title' => [ + 'cheerful' => 'Balas Pesan Kontak ✨✉️', + 'formal' => 'Balas Pesan Kontak', + ], + 'reply_desc' => [ + 'cheerful' => 'Tuliskan jawaban terbaik Anda di sini ya! Hati-hati, setelah dikirim tidak bisa ditarik kembali. 👋😊', + 'formal' => 'Silakan masukkan balasan Anda untuk pesan kontak ini.', + ], + 'reply_success' => [ + 'cheerful' => 'Balasan Terkirim! 🚀✉️', + 'formal' => 'Balasan Berhasil Dikirim', + ], + 'reply_success_desc' => [ + 'cheerful' => 'Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! 😊', + 'formal' => 'Pesan balasan telah berhasil dikirim ke alamat email pengirim.', + ], + 'sender_info_title' => [ + 'cheerful' => 'Informasi Pengirim 📧', + 'formal' => 'Informasi Pengirim', + ], + 'sender_info_desc' => [ + 'cheerful' => 'Cek detail identitas pengirim pesan biar makin kenal! 📧✨', + 'formal' => 'Detail mengenai identitas pengirim pesan.', + ], + 'message_content_title' => [ + 'cheerful' => 'Isi Pesan 💬', + 'formal' => 'Isi Pesan', + ], + 'message_content_desc' => [ + 'cheerful' => 'Yuk, baca pesan lengkap yang dikirimkan oleh pengguna! 💬✨', + 'formal' => 'Pesan lengkap yang dikirimkan oleh pengguna.', + ], + 'reply_history_title' => [ + 'cheerful' => 'Riwayat Balasan 📤', + 'formal' => 'Riwayat Balasan', + ], + 'reply_history_desc' => [ + 'cheerful' => 'Lihat detail tanggapan yang sudah Admin berikan sebelumnya! 📤✨', + 'formal' => 'Detail mengenai tanggapan yang telah diberikan.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada kontak atau pesan masuk nih! Santai dulu yuk. ✨✅', + 'formal' => 'Belum ada kontak atau pesan masuk yang tersedia.', + ], + ], + 'announcement' => [ + 'create_title' => [ + 'cheerful' => 'Buat Pengumuman Baru 📢✨', + 'formal' => 'Tambah Pengumuman', + ], + 'create_desc' => [ + 'cheerful' => 'Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! 🚀😊', + 'formal' => 'Silakan isi formulir di bawah ini untuk membuat pengumuman baru.', + ], + 'empty_state' => [ + 'cheerful' => 'Belum ada data Pengumuman nih! Mulai buat data pertama sekarang biar makin rame! 🚀✨', + 'formal' => 'Belum ada data Pengumuman yang tersedia saat ini.', + ], + ], + 'notification' => [ + 'proposal_from_rejected' => [ + 'cheerful' => 'Proposal dari \':record__partnerMedia__name\' telah ditolak. Media terkait akan segera mendapatkan notifikasi. 🙏', + 'formal' => 'Proposal kerja sama dari \':record__partnerMedia__name\' telah ditolak.', + ], + 'proposal_rejected_reason' => [ + 'cheerful' => 'Yah, maaf banget... proposal kerja sama Anda belum bisa kami terima saat ini. 💔 Alasan: :data__reason', + 'formal' => 'Proposal kerja sama Anda telah ditolak oleh pihak Admin. Alasan: :data__reason', + ], + 'proposal_from_approved' => [ + 'cheerful' => 'Mantap! Proposal dari \':record__partnerMedia__name\' telah berhasil diterima. Mari kita lanjut ke tahap berikutnya! 💪', + 'formal' => 'Proposal kerja sama dari \':record__partnerMedia__name\' telah berhasil disetujui.', + ], + 'media_rejected_offer' => [ + 'cheerful' => 'Media :cooperationMedia__partnerMedia__name baru saja menolak penawaran kerja sama ":record__title". Mungkin di lain waktu ya! 🙏', + 'formal' => 'Pihak media :cooperationMedia__partnerMedia__name telah menolak penawaran kerja sama ":record__title".', + ], + 'media_accepted_offer' => [ + 'cheerful' => 'Media :cooperationMedia__partnerMedia__name baru saja menerima penawaran kerja sama ":record__title". Siap-siap cek proposal mereka ya! 😊', + 'formal' => 'Pihak media :cooperationMedia__partnerMedia__name telah menyetujui penawaran kerja sama ":record__title".', + ], + 'user_updated_proposal' => [ + 'cheerful' => 'Cihuy! :user__name baru saja memperbarui proposal kerja sama untuk media :cooperationMedia__partnerMedia__name pada kampanye :record__title. Yuk, cek perubahannya!', + 'formal' => 'Pengguna :user__name telah memperbarui proposal kerja sama untuk media :cooperationMedia__partnerMedia__name pada kampanye :record__title.', + ], + 'user_submitted_proposal' => [ + 'cheerful' => 'Halo Admin! :user__name baru saja mengajukan proposal kerja sama baru untuk media :cooperationMedia__partnerMedia__name pada kampanye :record__title. Segera diproses ya! 😊', + 'formal' => 'Pengguna :user__name telah mengajukan proposal kerja sama baru untuk media :cooperationMedia__partnerMedia__name pada kampanye :record__title.', + ], + 'admin_assigned_task' => [ + 'cheerful' => 'Halo! Admin sudah menetapkan tugas untuk kerja sama ":record__title". Yuk, cek detail tugasnya dan mulai buat laporannya! Semangat! 💪😊', + 'formal' => 'Admin telah menetapkan penugasan baru untuk kerja sama ":record__title". Silakan tinjau detail tugas dan laporan yang diperlukan.', + ], + 'report_rejected_notice' => [ + 'cheerful' => 'Laporan \':record__title\' telah ditolak. Media terkait akan segera mendapatkan notifikasi untuk perbaikan. 🙏', + 'formal' => 'Laporan \':record__title\' telah ditolak. Notifikasi perbaikan telah dikirimkan ke pihak media.', + ], + 'report_rejected_reason' => [ + 'cheerful' => 'Halo! Laporan \\":record__title\\" pada kerja sama \\":record__mediaTaskAssignment__taskAssignment__cooperation__title\\" ditolak oleh Admin. 💪nnCatatan Admin: :data__reason', + 'formal' => 'Laporan \\":record__title\\" untuk kerja sama \\":record__mediaTaskAssignment__taskAssignment__cooperation__title\\" ditolak oleh Admin.nnAlasan: :data__reason', + ], + 'report_approved_notice' => [ + 'cheerful' => 'Laporan \':record__title\' telah berhasil diproses. Notifikasi sudah dikirim ke media terkait! 💪', + 'formal' => 'Laporan \':record__title\' telah disetujui dan notifikasi telah dikirimkan ke pihak media.', + ], + 'report_cooperation_approved' => [ + 'cheerful' => 'Hore! Laporan \\":record__title\\" pada kerja sama \\":record__mediaTaskAssignment__taskAssignment__cooperation__title\\" telah disetujui oleh Admin. Satu langkah lebih dekat! 🚀', + 'formal' => 'Laporan \\":record__title\\" untuk kerja sama \\":record__mediaTaskAssignment__taskAssignment__cooperation__title\\" telah disetujui oleh Admin.', + ], + 'payment_processed' => [ + 'cheerful' => 'Pembayaran untuk :record__partnerMedia__name telah berhasil dicatat.', + 'formal' => 'Proses pembayaran untuk :record__partnerMedia__name telah berhasil diselesaikan.', + ], + 'payment_sent_desc' => [ + 'cheerful' => 'Halo! Pembayaran untuk kerja sama ":record__cooperation__title" telah berhasil dikirim oleh Admin. Silakan cek detailnya ya! 😊', + 'formal' => 'Admin telah mengirimkan pembayaran untuk kerja sama ":record__cooperation__title". Silakan periksa detail transaksi Anda.', + ], + 'admin_offered_cooperation' => [ + 'cheerful' => 'Halo! Admin baru saja menawarkan kerja sama ":record__title" untuk media :media__name. Yuk, cek detailnya dan berikan tanggapanmu! 😊', + 'formal' => 'Admin telah menawarkan kerja sama ":record__title" untuk media :media__name.', + ], + 'user_submitted_report' => [ + 'cheerful' => 'Halo Admin! :user__name baru saja mengirimkan laporan ":record__title" untuk kerja sama terkait. Yuk, dicek! 😊', + 'formal' => 'Pengguna :user__name telah mengirimkan laporan baru ":record__title" untuk pengajuan kerja sama.', + ], + 'data_change_rejected' => [ + 'cheerful' => 'Halo! Mohon maaf, permohonan perubahan data Anda untuk :record__change_reason ditolak oleh admin. Alasan: :data__rejection_reason 😔', + 'formal' => 'Permohonan perubahan data Anda untuk :record__change_reason telah ditolak oleh Admin. Alasan: :data__rejection_reason', + ], + 'data_deletion_approved' => [ + 'cheerful' => 'Halo! Permohonan penghapusan data Anda untuk :record__change_reason telah disetujui oleh admin. 🚀', + 'formal' => 'Permohonan penghapusan data untuk :record__change_reason telah disetujui oleh Admin.', + ], + 'data_change_approved' => [ + 'cheerful' => 'Halo! Permohonan perubahan data Anda untuk :record__change_reason telah disetujui oleh admin. Cek sekarang ya! 🚀', + 'formal' => 'Permohonan perubahan data untuk :record__change_reason telah disetujui oleh Admin.', + ], + 'user_submitted_journalist_change' => [ + 'cheerful' => 'Halooo Admin! 👋 :user__name baru saja mengajukan perubahan data jurnalis. Yuk, cek detailnya! 🚀', + 'formal' => 'Pengguna :user__name telah mengajukan perubahan data jurnalis.', + ], + 'user_submitted_journalist_deletion' => [ + 'cheerful' => 'Halooo Admin! 👋 :user__name baru saja mengajukan penghapusan jurnalis :record__name. Yuk, cek detailnya! 🚀', + 'formal' => 'Pengguna :user__name telah mengajukan penghapusan jurnalis :record__name.', + ], + 'user_added_journalist' => [ + 'cheerful' => 'Halooo Admin! 👋 :user__name baru saja menambahkan jurnalis baru. Yuk, cek detailnya! 🚀', + 'formal' => 'Pengguna :user__name telah menambahkan jurnalis baru ke dalam sistem.', + ], + ], + 'general' => [ + 'empty_msg' => [ + 'cheerful' => ':doc__title 📄✨', + 'formal' => ':doc__title', + ], + ], +];