simedkom/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/ProceedToPaymentAction.php

54 lines
2.2 KiB
PHP

<?php
namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation;
use App\Enums\ApprovalStatus;
use App\Enums\CooperationStatus;
use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
use Filament\Actions\Action;
use Filament\Support\Icons\Heroicon;
class ProceedToPaymentAction extends Action
{
protected function setUp(): void
{
parent::setUp();
$this->label('Lanjutkan ke Pembayaran')
->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.'))
->action(function (Cooperation $record): void {
$record->update([
'status' => CooperationStatus::PAYMENT,
'payment_date' => now()->toDateString(),
]);
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.')
)->send();
})
->visible(function (Cooperation $record): bool {
$user = auth()->user();
if (! $user || $user->hasRole(RoleEnum::PERUSAHAAN->value) || $record->status !== CooperationStatus::VERIFICATION) {
return false;
}
// Check if all reports are verified (either Accepted or Rejected, not Pending)
$reports = $record->reports;
if ($reports->isEmpty()) {
return true;
}
return $reports->every(fn ($report) => $report->status !== ApprovalStatus::PENDING);
});
}
}