refactor: Update modal headings and descriptions for clarity, enhance date formatting, and improve user notifications in verification processes.
This commit is contained in:
parent
87b0275151
commit
6574684f46
@ -5,6 +5,7 @@
|
|||||||
use App\Enums\DecisionAdmin;
|
use App\Enums\DecisionAdmin;
|
||||||
use App\Enums\VerificationStatus;
|
use App\Enums\VerificationStatus;
|
||||||
use App\Filament\Resources\Manage\Partners\Pages\ViewPartner;
|
use App\Filament\Resources\Manage\Partners\Pages\ViewPartner;
|
||||||
|
use App\Filament\Support\CheerfulNotification;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\VerificationRequest;
|
use App\Models\VerificationRequest;
|
||||||
use App\Notifications\BroadcastNotification;
|
use App\Notifications\BroadcastNotification;
|
||||||
@ -161,8 +162,8 @@ public function approveAction(): Action
|
|||||||
->icon('heroicon-o-check')
|
->icon('heroicon-o-check')
|
||||||
->size('sm')
|
->size('sm')
|
||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
->modalHeading('Setujui Verifikasi Lengkap')
|
->modalHeading('Setujui Verifikasi')
|
||||||
->modalDescription('Apakah Anda yakin ingin menyetujui verifikasi ini? Status akan diterapkan pada Perusahaan, Media, dan semua Jurnalis sekaligus.')
|
->modalDescription('Apakah Anda yakin ingin menyetujui verifikasi ini? Pastikan data sudah benar dan lengkap.')
|
||||||
->modalSubmitActionLabel('Ya, Setujui')
|
->modalSubmitActionLabel('Ya, Setujui')
|
||||||
->action(function (array $arguments, array $data): void {
|
->action(function (array $arguments, array $data): void {
|
||||||
$this->processReview($arguments['id'], DecisionAdmin::APPROVED, $data['note'] ?? null);
|
$this->processReview($arguments['id'], DecisionAdmin::APPROVED, $data['note'] ?? null);
|
||||||
@ -180,13 +181,12 @@ public function revisionAction(): Action
|
|||||||
->icon('heroicon-o-pencil-square')
|
->icon('heroicon-o-pencil-square')
|
||||||
->size('sm')
|
->size('sm')
|
||||||
->modalHeading('Minta Revisi')
|
->modalHeading('Minta Revisi')
|
||||||
->modalDescription('User akan diminta untuk memperbaiki data sesuai catatan yang diberikan.')
|
->modalDescription('Pengguna akan diminta untuk memperbaiki data sesuai catatan yang diberikan.')
|
||||||
->schema([
|
->schema([
|
||||||
Textarea::make('note')
|
Textarea::make('note')
|
||||||
->label('Catatan Revisi')
|
->label('Catatan Revisi')
|
||||||
->required()
|
->required()
|
||||||
->placeholder('Jelaskan bagian yang perlu diperbaiki (Perusahaan, Media, atau Jurnalis)...')
|
->placeholder('Jelaskan bagian yang perlu diperbaiki (Perusahaan, Media, atau Jurnalis)...')
|
||||||
->helperText('Catatan ini akan ditampilkan kepada user.')
|
|
||||||
->autocomplete(false)
|
->autocomplete(false)
|
||||||
->autofocus(),
|
->autofocus(),
|
||||||
])
|
])
|
||||||
@ -206,15 +206,14 @@ public function rejectAction(): Action
|
|||||||
->icon('heroicon-o-x-mark')
|
->icon('heroicon-o-x-mark')
|
||||||
->size('sm')
|
->size('sm')
|
||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
->modalHeading('Tolak Verifikasi Lengkap')
|
->modalHeading('Tolak Verifikasi')
|
||||||
->modalDescription('Pengajuan akan ditolak secara permanen. Status REJECTED akan diterapkan pada Perusahaan, Media, dan semua Jurnalis. User tidak dapat mengajukan ulang untuk data ini.')
|
->modalDescription('Pengajuan akan ditolak secara permanen. Pengguna tidak dapat mengajukan ulang untuk data ini.')
|
||||||
->modalSubmitActionLabel('Ya, Tolak')
|
->modalSubmitActionLabel('Ya, Tolak')
|
||||||
->schema([
|
->schema([
|
||||||
Textarea::make('note')
|
Textarea::make('note')
|
||||||
->label('Alasan Penolakan')
|
->label('Alasan Penolakan')
|
||||||
->required()
|
->required()
|
||||||
->placeholder('Jelaskan alasan pengajuan ditolak...')
|
->placeholder('Jelaskan alasan pengajuan ditolak...')
|
||||||
->helperText('Alasan ini akan ditampilkan kepada user.')
|
|
||||||
->autocomplete(false)
|
->autocomplete(false)
|
||||||
->autofocus(),
|
->autofocus(),
|
||||||
])
|
])
|
||||||
@ -249,16 +248,10 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin
|
|||||||
DecisionAdmin::REJECTED => 'ditolak',
|
DecisionAdmin::REJECTED => 'ditolak',
|
||||||
};
|
};
|
||||||
|
|
||||||
$color = match ($decision) {
|
CheerfulNotification::success(
|
||||||
DecisionAdmin::APPROVED => 'success',
|
'Berhasil Diproses! ✨',
|
||||||
DecisionAdmin::NEED_REVISION => 'info',
|
"Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke user. Kerja bagus, Admin! 💪"
|
||||||
DecisionAdmin::REJECTED => 'danger',
|
)
|
||||||
};
|
|
||||||
|
|
||||||
Notification::make()
|
|
||||||
->title('Berhasil Diproses! ✨')
|
|
||||||
->body("Mantap! Verifikasi telah {$actionLabel} dan notifikasi sudah dikirim ke user. Kerja bagus, Admin! 💪")
|
|
||||||
->color($color)
|
|
||||||
->send();
|
->send();
|
||||||
|
|
||||||
// Notify User
|
// Notify User
|
||||||
@ -271,7 +264,7 @@ protected function processReview(int $requestId, DecisionAdmin $decision, ?strin
|
|||||||
};
|
};
|
||||||
|
|
||||||
$body = match ($decision) {
|
$body = match ($decision) {
|
||||||
DecisionAdmin::APPROVED => 'Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi! 🎊',
|
DecisionAdmin::APPROVED => 'Yeay! Pengajuan verifikasi perusahaan Anda telah disetujui. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami! 🎊',
|
||||||
DecisionAdmin::NEED_REVISION => 'Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. 💪',
|
DecisionAdmin::NEED_REVISION => 'Ayo sedikit lagi! Admin meminta beberapa perbaikan pada pengajuan Anda agar bisa segera disetujui. 💪',
|
||||||
DecisionAdmin::REJECTED => 'Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. 💔',
|
DecisionAdmin::REJECTED => 'Yah, maaf banget... pengajuan verifikasi perusahaan Anda belum bisa kami terima saat ini. 💔',
|
||||||
};
|
};
|
||||||
|
|||||||
@ -77,7 +77,7 @@ public function getVerificationProgress(): array
|
|||||||
// Add additional data for view
|
// Add additional data for view
|
||||||
$progress['missingDataButtons'] = $this->verificationService->getMissingDataButtons($this->company);
|
$progress['missingDataButtons'] = $this->verificationService->getMissingDataButtons($this->company);
|
||||||
$progress['alert'] = $this->verificationService->getAlertData($this->verificationRequest);
|
$progress['alert'] = $this->verificationService->getAlertData($this->verificationRequest);
|
||||||
$progress['lastSubmittedAt'] = $this->verificationRequest?->updated_at?->format('d M Y, H:i');
|
$progress['lastSubmittedAt'] = $this->verificationRequest?->updated_at?->translatedFormat('l, d M Y H:i');
|
||||||
|
|
||||||
return $progress;
|
return $progress;
|
||||||
}
|
}
|
||||||
@ -96,13 +96,13 @@ public function submitVerificationAction(): Action
|
|||||||
->icon('heroicon-o-paper-airplane')
|
->icon('heroicon-o-paper-airplane')
|
||||||
->color('primary')
|
->color('primary')
|
||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
->modalHeading('Ajukan Verifikasi Lengkap')
|
->modalHeading('Ajukan Verifikasi')
|
||||||
->modalDescription(function () use ($progress): string {
|
->modalDescription(function () use ($progress): string {
|
||||||
if (! $progress['isDataComplete']) {
|
if (! $progress['isDataComplete']) {
|
||||||
return 'Data belum lengkap. Silakan lengkapi terlebih dahulu: '.implode(', ', $progress['missingData']);
|
return 'Data belum lengkap. Silakan lengkapi terlebih dahulu: '.implode(', ', $progress['missingData']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'Apakah Anda yakin ingin mengajukan verifikasi untuk Perusahaan, Media, dan Jurnalis? Pastikan semua data sudah benar dan lengkap.';
|
return 'Apakah Anda yakin ingin mengajukan verifikasi? Pastikan semua data sudah benar dan lengkap.';
|
||||||
})
|
})
|
||||||
->modalSubmitActionLabel('Ya, Ajukan')
|
->modalSubmitActionLabel('Ya, Ajukan')
|
||||||
->visible(fn (): bool => $progress['canSubmit'])
|
->visible(fn (): bool => $progress['canSubmit'])
|
||||||
|
|||||||
@ -335,7 +335,7 @@ public function getAlertData(?VerificationRequest $verificationRequest): ?array
|
|||||||
'type' => 'approved',
|
'type' => 'approved',
|
||||||
'icon' => 'check-circle',
|
'icon' => 'check-circle',
|
||||||
'title' => 'Verifikasi Diterima',
|
'title' => 'Verifikasi Diterima',
|
||||||
'message' => 'Verifikasi lengkap Anda telah diterima dan disetujui oleh admin. Seluruh data (Perusahaan, Media, dan Jurnalis) telah terverifikasi.',
|
'message' => 'Verifikasi Anda telah diterima dan disetujui oleh admin. Sekarang Anda sudah resmi terverifikasi dan bekerja sama dengan kami!',
|
||||||
'color' => 'success',
|
'color' => 'success',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public function definition(): array
|
|||||||
'email' => fake()->unique()->safeEmail(),
|
'email' => fake()->unique()->safeEmail(),
|
||||||
'username' => $this->faker->unique()->bothify('?????#####'),
|
'username' => $this->faker->unique()->bothify('?????#####'),
|
||||||
'email_verified_at' => now(),
|
'email_verified_at' => now(),
|
||||||
'password' => static::$password ??= Hash::make('password'),
|
'password' => static::$password ??= Hash::make(config('auth.password_default')),
|
||||||
'remember_token' => Str::random(10),
|
'remember_token' => Str::random(10),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -113,9 +113,6 @@
|
|||||||
title="{{ $card['companyName'] }}">
|
title="{{ $card['companyName'] }}">
|
||||||
{{ $card['companyName'] }}
|
{{ $card['companyName'] }}
|
||||||
</h3>
|
</h3>
|
||||||
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
|
|
||||||
Perusahaan, Media & Jurnalis
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Status Badge --}}
|
{{-- Status Badge --}}
|
||||||
@ -194,17 +191,18 @@ class="w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-500/20 flex items-c
|
|||||||
<div>
|
<div>
|
||||||
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase font-semibold">Diajukan</p>
|
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase font-semibold">Diajukan</p>
|
||||||
<p class="text-gray-700 dark:text-gray-300">
|
<p class="text-gray-700 dark:text-gray-300">
|
||||||
{{ $verification->created_at->format('d M Y') }}
|
{{ $verification->created_at->translatedFormat('l, d M Y H:i') }}
|
||||||
</p>
|
</p>
|
||||||
<p class="text-xs text-gray-500">
|
<p class="text-xs text-gray-500">
|
||||||
{{ $verification->created_at->format('H:i') }}
|
{{ $verification->created_at->diffForHumans() }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase font-semibold">Update Terakhir
|
<p class="text-xs text-gray-500 dark:text-gray-400 uppercase font-semibold">Pembaruan
|
||||||
|
Terakhir
|
||||||
</p>
|
</p>
|
||||||
<p class="text-gray-700 dark:text-gray-300">
|
<p class="text-gray-700 dark:text-gray-300">
|
||||||
{{ $verification->updated_at->format('d M Y') }}
|
{{ $verification->updated_at->translatedFormat('l, d M Y H:i') }}
|
||||||
</p>
|
</p>
|
||||||
<p class="text-xs text-gray-500">
|
<p class="text-xs text-gray-500">
|
||||||
{{ $verification->updated_at->diffForHumans() }}
|
{{ $verification->updated_at->diffForHumans() }}
|
||||||
@ -284,7 +282,7 @@ class="w-4 h-4 text-gray-500 transition-transform duration-200"
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="shrink-0 text-xs text-gray-400">
|
<div class="shrink-0 text-xs text-gray-400">
|
||||||
{{ $review->created_at->format('d M Y, H:i') }}
|
{{ $review->created_at->translatedFormat('l, d M Y H:i') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -314,7 +312,7 @@ class="w-4 h-4 text-gray-500 transition-transform duration-200"
|
|||||||
<span
|
<span
|
||||||
class="flex items-center gap-1 text-xs text-warning-600 dark:text-warning-400 font-medium italic">
|
class="flex items-center gap-1 text-xs text-warning-600 dark:text-warning-400 font-medium italic">
|
||||||
<x-heroicon-s-clock class="w-3 h-3 animate-pulse" />
|
<x-heroicon-s-clock class="w-3 h-3 animate-pulse" />
|
||||||
Menunggu revisi dari user...
|
Menunggu revisi dari pengguna...
|
||||||
</span>
|
</span>
|
||||||
@elseif($card['isApproved'])
|
@elseif($card['isApproved'])
|
||||||
<span
|
<span
|
||||||
|
|||||||
@ -173,7 +173,7 @@ class="w-full flex items-center justify-between p-4 bg-gray-50 dark:bg-gray-800
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="shrink-0 text-xs text-gray-400">
|
<div class="shrink-0 text-xs text-gray-400">
|
||||||
{{ $review->created_at->format('d M Y, H:i') }}
|
{{ $review->created_at->translatedFormat('l, d M Y H:i') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user