Files
Helpddesk/Modules/Helpdesk/Http/Controllers/LegacySystemController.php

53 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace Modules\Helpdesk\Http\Controllers;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Modules\Helpdesk\Models\LegacyCategory;
use Modules\Helpdesk\Models\LegacyTicket;
final class LegacySystemController
{
public function tickets(Request $request): View
{
$search = trim((string) $request->query('search', ''));
$category = $request->integer('category');
$tickets = LegacyTicket::query()
->when($search !== '', fn ($query) => $query->where(function ($q) use ($search): void {
$q->where('reference', 'like', "%{$search}%")
->orWhere('subject', 'like', "%{$search}%")
->orWhere('requester_name', 'like', "%{$search}%");
}))
->when($category > 0, fn ($query) => $query->where('legacy_category_id', $category))
->orderByDesc('legacy_created_at')
->orderByDesc('legacy_id')
->paginate(30)
->withQueryString();
return view('helpdesk::legacy.tickets', [
'tickets' => $tickets,
'categories' => LegacyCategory::query()->orderBy('name')->get(),
'search' => $search,
'selectedCategory' => $category,
]);
}
public function show(LegacyTicket $ticket): View
{
$ticket->load('comments');
return view('helpdesk::legacy.show', compact('ticket'));
}
public function categories(): View
{
return view('helpdesk::legacy.categories', [
'categories' => LegacyCategory::query()->orderBy('name')->paginate(50),
]);
}
}