diff --git a/app/Http/Controllers/Qms/DeviceController.php b/app/Http/Controllers/Qms/DeviceController.php index 161362b..04fc024 100644 --- a/app/Http/Controllers/Qms/DeviceController.php +++ b/app/Http/Controllers/Qms/DeviceController.php @@ -9,6 +9,8 @@ use App\Models\Device; use App\Models\ServiceQueue; use App\Services\Qms\AuditLogger; use App\Services\Qms\DeviceService; +use App\Services\Qms\OrganizationResolver; +use App\Services\Qms\QmsPermissions; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\View\View; @@ -23,16 +25,25 @@ class DeviceController extends Controller public function index(Request $request): View { - $this->authorizeAbility($request, 'displays.manage'); + $this->authorizeAbility($request, 'displays.view'); $owner = $this->ownerRef($request); $organization = $this->organization($request); + $member = app(OrganizationResolver::class)->memberFor($request->user()); + $permissions = app(QmsPermissions::class); + $devices = Device::owned($owner) ->where('organization_id', $organization->id) + ->with('branch') ->orderBy('name') ->paginate(20); - return view('qms.devices.index', compact('devices', 'organization')); + return view('qms.devices.index', [ + 'devices' => $devices, + 'organization' => $organization, + 'deviceTypes' => config('qms.device_types'), + 'canManage' => $permissions->can($member, 'displays.manage'), + ]); } public function create(Request $request): View diff --git a/app/Http/Controllers/Qms/DisplayScreenController.php b/app/Http/Controllers/Qms/DisplayScreenController.php index d4096a8..5789834 100644 --- a/app/Http/Controllers/Qms/DisplayScreenController.php +++ b/app/Http/Controllers/Qms/DisplayScreenController.php @@ -8,6 +8,8 @@ use App\Models\Branch; use App\Models\DisplayScreen; use App\Models\ServiceQueue; use App\Services\Qms\AuditLogger; +use App\Services\Qms\OrganizationResolver; +use App\Services\Qms\QmsPermissions; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\View\View; @@ -22,12 +24,20 @@ class DisplayScreenController extends Controller $owner = $this->ownerRef($request); $organization = $this->organization($request); + $member = app(OrganizationResolver::class)->memberFor($request->user()); + $permissions = app(QmsPermissions::class); + $screens = DisplayScreen::owned($owner) ->where('organization_id', $organization->id) + ->with('branch') ->orderBy('name') ->paginate(20); - return view('qms.displays.index', compact('screens', 'organization')); + return view('qms.displays.index', [ + 'screens' => $screens, + 'organization' => $organization, + 'canManage' => $permissions->can($member, 'displays.manage'), + ]); } public function show(Request $request, DisplayScreen $display): View diff --git a/resources/views/components/empty-state.blade.php b/resources/views/components/empty-state.blade.php new file mode 100644 index 0000000..d3069a2 --- /dev/null +++ b/resources/views/components/empty-state.blade.php @@ -0,0 +1,16 @@ +@props(['title', 'description' => null]) + +
{{ $description }}
+ @endif + @if (isset($action)) +Kiosks and ticket printers for self-service and reception
+{{ session('success') }}
@endif -{{ $device->name }}
-{{ config('qms.device_types.'.$device->type) }} · {{ $device->status }}
- @if ($device->type === 'kiosk' && $device->device_token) -Kiosk URL: {{ route('qms.kiosk.device', $device->device_token) }}
- @endif -| Name | +Type | +Status | +Branch | ++ |
|---|---|---|---|---|
| {{ $device->name }} | +{{ $deviceTypes[$device->type] ?? $device->type }} | ++ + {{ ucfirst($device->status) }} + + | +{{ $device->branch?->name ?? '—' }} | ++ @if ($device->type === 'kiosk' && $device->device_token) + Open kiosk + @endif + @if ($canManage) + + @endif + | +
Waiting-area screens and voice announcements for called tickets
+{{ $screen->name }}
-{{ config('qms.display_layouts.'.$screen->layout) }}
-| Name | +Layout | +Branch | ++ |
|---|---|---|---|
| + {{ $screen->name }} + | +{{ config('qms.display_layouts.'.$screen->layout, $screen->layout) }} | +{{ $screen->branch?->name ?? '—' }} | ++ Open display + | +