argument('id'); $reasonInput = $this->option('reason'); $note = $this->option('note'); if ($reasonInput === null) { $this->error('--reason is required. Allowed: ' . implode(', ', array_map(static fn (DismissalReasonType $r): string => $r->value, DismissalReasonType::cases()))); return self::FAILURE; } $reason = DismissalReasonType::tryFrom((string) $reasonInput); if ($reason === null) { $this->error("Unknown reason '{$reasonInput}'."); return self::FAILURE; } if ($reason->requiresNote() && empty($note)) { $this->error("--note is required when --reason={$reason->value}."); return self::FAILURE; } $failure = FormSubmissionActionFailure::query()->withoutGlobalScopes()->find($id); if ($failure === null) { $this->error("Failure {$id} not found."); return self::FAILURE; } if ($failure->resolved_at !== null) { $this->warn("Failure {$id} already resolved; cannot dismiss."); return self::SUCCESS; } if ($failure->dismissed_at !== null) { $this->warn("Failure {$id} already dismissed; no-op."); return self::SUCCESS; } $failure->dismissed_at = now(); $failure->dismissed_reason_type = $reason; $failure->dismissed_reason_note = $note !== null ? (string) $note : null; $failure->save(); $this->info("Dismissed failure {$id} ({$reason->value})."); return self::SUCCESS; } }