51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Admin;
|
|
|
|
use App\Models\Host;
|
|
use LivewireUI\Modal\ModalComponent;
|
|
|
|
/**
|
|
* Bestätigung fürs Lösen einer Host-Reservierung (R23).
|
|
*
|
|
* Mutiert nichts selbst: "der Kunde verliert seine eigene Maschine" bleibt an
|
|
* der Stelle geprüft und ausgeführt, an der sie schon steht —
|
|
* HostDetail::releaseReservation(). Der Bestätigen-Knopf löst nur das
|
|
* Ereignis aus, das die Seiten-Komponente per #[On(...)] auffängt und
|
|
* weiterreicht — dieselbe Berechtigungsprüfung bleibt an der einen Stelle,
|
|
* statt sie hier zu verdoppeln.
|
|
*/
|
|
class ConfirmReleaseReservation extends ModalComponent
|
|
{
|
|
public string $uuid;
|
|
|
|
public string $hostName = '';
|
|
|
|
public string $customerName = '';
|
|
|
|
public function mount(string $uuid): void
|
|
{
|
|
// Ein Modal ist ohne die Route-Middleware der Seite erreichbar (R20),
|
|
// und zeigt hier den Namen des Kunden, der die Maschine verliert.
|
|
$this->authorize('hosts.manage');
|
|
|
|
$host = Host::query()->where('uuid', $uuid)->with('reservedFor')->first();
|
|
|
|
$this->uuid = $uuid;
|
|
$this->hostName = $host?->name ?? '';
|
|
$this->customerName = $host?->reservedFor?->name ?? '';
|
|
}
|
|
|
|
public function confirmRelease(): void
|
|
{
|
|
$this->authorize('hosts.manage');
|
|
$this->dispatch('host-reservation-release-confirmed');
|
|
$this->closeModal();
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
return view('livewire.admin.confirm-release-reservation');
|
|
}
|
|
}
|