CluPilotCloud/app/Livewire/Admin/ConfirmReleaseReservation.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');
}
}