diff --git a/app/Services/ApprovalService.php b/app/Services/ApprovalService.php index 474a8dd..744e3a0 100644 --- a/app/Services/ApprovalService.php +++ b/app/Services/ApprovalService.php @@ -17,7 +17,7 @@ class ApprovalService $workflow = $travelRequest->workflow; if (! $workflow) { - return; + throw new \RuntimeException('No active approval workflow is configured.'); } $steps = $workflow->steps()->orderBy('order')->get(); diff --git a/resources/views/livewire/travel-request/create.blade.php b/resources/views/livewire/travel-request/create.blade.php index 95353f5..db1de19 100644 --- a/resources/views/livewire/travel-request/create.blade.php +++ b/resources/views/livewire/travel-request/create.blade.php @@ -92,7 +92,6 @@ new #[Layout('components.layouts.app')] class extends Component { public function saveDraft(): void { $this->saveRequest(submit: false); - session()->flash('success', 'Draft saved successfully.'); } public function submit(): void @@ -102,6 +101,12 @@ new #[Layout('components.layouts.app')] class extends Component { private function saveRequest(bool $submit): void { + if ($submit && ! ApprovalWorkflow::where('is_active', true)->exists()) { + $this->addError('workflow', 'No active approval workflow is configured. Please contact an administrator.'); + + return; + } + $this->validate([ 'emergencyFullName' => ['required', 'string', 'max:255'], 'emergencyPhone' => ['required', 'string', 'max:50'], @@ -182,6 +187,8 @@ new #[Layout('components.layouts.app')] class extends Component { if ($submit) { app(ApprovalService::class)->submit($travelRequest); session()->flash('success', 'Travel request submitted for approval.'); + } else { + session()->flash('success', 'Draft saved successfully.'); } $this->redirect(route('travel-requests.show', $travelRequest), navigate: true); @@ -209,6 +216,10 @@ new #[Layout('components.layouts.app')] class extends Component { @endif + @error('workflow') +