vito/app/Http/Controllers/QueueController.php
2024-03-16 12:20:32 +01:00

61 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Actions\Queue\CreateQueue;
use App\Actions\Queue\DeleteQueue;
use App\Actions\Queue\GetQueueLogs;
use App\Actions\Queue\ManageQueue;
use App\Facades\Toast;
use App\Helpers\HtmxResponse;
use App\Models\Queue;
use App\Models\Server;
use App\Models\Site;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class QueueController extends Controller
{
public function index(Server $server, Site $site): View
{
return view('queues.index', [
'server' => $server,
'site' => $site,
'queues' => $site->queues,
]);
}
public function store(Server $server, Site $site, Request $request): HtmxResponse
{
app(CreateQueue::class)->create($site, $request->input());
Toast::success('Queue is being created.');
return htmx()->back();
}
public function action(Server $server, Site $site, Queue $queue, string $action): HtmxResponse
{
app(ManageQueue::class)->{$action}($queue);
Toast::success('Queue is about to '.$action);
return htmx()->back();
}
public function destroy(Server $server, Site $site, Queue $queue): RedirectResponse
{
app(DeleteQueue::class)->delete($queue);
Toast::success('Queue is being deleted.');
return back();
}
public function logs(Server $server, Site $site, Queue $queue): RedirectResponse
{
return back()->with('content', app(GetQueueLogs::class)->getLogs($queue));
}
}