diff --git a/app/Console/Commands/UpdateCooperationStatusCommand.php b/app/Console/Commands/UpdateCooperationStatusCommand.php index 58978d1..6d530ac 100644 --- a/app/Console/Commands/UpdateCooperationStatusCommand.php +++ b/app/Console/Commands/UpdateCooperationStatusCommand.php @@ -2,8 +2,10 @@ namespace App\Console\Commands; +use App\Enums\ApprovalStatus; use App\Enums\CooperationStatus; use App\Models\Cooperation; +use App\Models\CooperationMedia; use Carbon\Carbon; use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; @@ -36,6 +38,17 @@ public function handle() Log::info('Running UpdateCooperationStatusJob at '.now()); // 1. PENDING -> ASSIGNMENT (final_submission_date) + // Automatically reject media that haven't responded + $rejectedPendingMedia = CooperationMedia::whereHas('cooperation', function ($query) use ($today) { + $query->pending()->whereDate('final_submission_date', '<=', $today); + }) + ->pending() + ->update(['status' => ApprovalStatus::REJECTED]); + + if ($rejectedPendingMedia > 0) { + Log::info("Updated {$rejectedPendingMedia} media in PENDING cooperations to REJECTED because they didn't respond before final_submission_date."); + } + $updatedPending = Cooperation::pending() ->whereDate('final_submission_date', '<=', $today) ->update(['status' => CooperationStatus::ASSIGNMENT]); @@ -45,6 +58,17 @@ public function handle() } // 2. ASSIGNMENT -> VERIFICATION (assignment_deadline) + // Automatically reject media that haven't responded + $rejectedMedia = CooperationMedia::whereHas('cooperation', function ($query) use ($today) { + $query->assignment()->whereDate('assignment_deadline', '<=', $today); + }) + ->pending() + ->update(['status' => ApprovalStatus::REJECTED]); + + if ($rejectedMedia > 0) { + Log::info("Updated {$rejectedMedia} media assignments to REJECTED because they didn't respond before the deadline."); + } + $updatedAssignment = Cooperation::assignment() ->whereDate('assignment_deadline', '<=', $today) ->update(['status' => CooperationStatus::VERIFICATION]); @@ -54,6 +78,17 @@ public function handle() } // 3. VERIFICATION -> PAYMENT (verification_deadline) + // Automatically reject media that haven't responded + $rejectedVerificationMedia = CooperationMedia::whereHas('cooperation', function ($query) use ($today) { + $query->verification()->whereDate('verification_deadline', '<=', $today); + }) + ->pending() + ->update(['status' => ApprovalStatus::REJECTED]); + + if ($rejectedVerificationMedia > 0) { + Log::info("Updated {$rejectedVerificationMedia} media in VERIFICATION cooperations to REJECTED because they didn't respond before verification_deadline."); + } + $updatedVerification = Cooperation::verification() ->whereDate('verification_deadline', '<=', $today) ->update(['status' => CooperationStatus::PAYMENT]); diff --git a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php index 8ff6db6..c56a207 100644 --- a/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php +++ b/app/Filament/Resources/Manage/Cooperations/Tables/CooperationsTable.php @@ -53,10 +53,10 @@ public static function configure(Table $table): Table ->sortable() ->date('l, d F Y') ->description( - fn (Cooperation $record): string => now()->greaterThan($record->final_submission_date) + fn (Cooperation $record): string => now()->greaterThan($record->final_submission_date->copy()->endOfDay()) ? 'Waktu Pengajuan Habis' : 'Sisa waktu pengajuan: '.now()->diffForHumans( - $record->final_submission_date, + $record->final_submission_date->copy()->endOfDay(), ['syntax' => CarbonInterface::DIFF_ABSOLUTE] ) ),