diff --git a/app/Http/Controllers/Qms/TicketController.php b/app/Http/Controllers/Qms/TicketController.php index 69cd758..7b8b7d5 100644 --- a/app/Http/Controllers/Qms/TicketController.php +++ b/app/Http/Controllers/Qms/TicketController.php @@ -65,7 +65,15 @@ class TicketController extends Controller ->orderBy('name') ->get(); - return view('qms.tickets.create', compact('queues', 'organization')); + $selectedQueueId = (int) ( + old('service_queue_id') + ?? $request->query('queue') + ?? $queues->first()?->id + ?? 0 + ); + $selectedQueue = $queues->firstWhere('id', $selectedQueueId) ?? $queues->first(); + + return view('qms.tickets.create', compact('queues', 'organization', 'selectedQueue')); } public function store(Request $request): RedirectResponse diff --git a/resources/views/qms/tickets/create.blade.php b/resources/views/qms/tickets/create.blade.php index ada8334..3172401 100644 --- a/resources/views/qms/tickets/create.blade.php +++ b/resources/views/qms/tickets/create.blade.php @@ -1,38 +1,9 @@ @php - $queuePayload = $queues->map(fn ($queue) => [ - 'id' => $queue->id, - 'label' => $queue->name.($queue->branch ? ' ('.$queue->branch->name.')' : ''), - 'assigned_only' => $queue->usesAssignedOnlyRouting(), - 'counters' => $queue->counters->map(fn ($c) => [ - 'id' => $c->id, - 'label' => $c->name.($c->code ? ' · '.$c->code : ''), - ])->values(), - ])->values(); + $selectedQueueId = (int) ($selectedQueue?->id ?? 0); + $needsPoint = $selectedQueue?->usesAssignedOnlyRouting() ?? false; @endphp -
+

Issue ticket

@csrf @@ -42,36 +13,39 @@ name="service_queue_id" required class="mt-1 w-full rounded-lg border-slate-300 text-sm" - x-model="queueId" - @change="onQueueChange()" + onchange="window.location = @json(route('qms.tickets.create')).concat('?queue=', encodeURIComponent(this.value))" > - + @foreach ($queues as $queue) + + @endforeach @error('service_queue_id')

{{ $message }}

@enderror
-
- - -

This queue only serves tickets assigned to a desk or room.

- @error('assigned_counter_id') -

{{ $message }}

- @enderror -
+ + @if ($needsPoint) +
+ + +

This queue only serves tickets assigned to a desk or room.

+ @error('assigned_counter_id') +

{{ $message }}

+ @enderror +
+ @endif +
diff --git a/tests/Feature/ServicePointRoutingTest.php b/tests/Feature/ServicePointRoutingTest.php index f7aee9f..94b84bc 100644 --- a/tests/Feature/ServicePointRoutingTest.php +++ b/tests/Feature/ServicePointRoutingTest.php @@ -117,6 +117,18 @@ class ServicePointRoutingTest extends TestCase ]); } + public function test_web_issue_create_page_shows_service_point_without_alpine_leak(): void + { + [$user, , , $queue] = $this->setUpAssignedConsultation(); + + $this->actingAs($user) + ->get(route('qms.tickets.create', ['queue' => $queue->id])) + ->assertOk() + ->assertSee('Service point') + ->assertDontSee('needsPoint') + ->assertDontSee('onQueueChange'); + } + public function test_web_issue_without_service_point_returns_validation_error_not_500(): void { [$user, , , $queue] = $this->setUpAssignedConsultation();