Attempt to fix N+1 issues still there and more now

This commit is contained in:
Mark Gregory
2026-06-16 20:15:22 +01:00
parent e81a509007
commit a07bfd13df
9 changed files with 65 additions and 72 deletions
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Modules\Helpdesk\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -50,8 +51,8 @@ final class TicketControlsController extends Controller
'last_activity_at' => now(),
]);
$fresh = $ticket->fresh(['agent', 'owner', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
$workflow->dispatch($fresh, 'ticket.updated', Auth::user());
$fresh = $ticket->fresh(['user.company', 'owner.company', 'agent.company', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
$workflow->dispatch($fresh, 'ticket.updated', $this->actor());
return redirect()
->route('helpdesk.tickets.show', $fresh)
@@ -83,13 +84,13 @@ final class TicketControlsController extends Controller
$this->ensureBoardContainsStatus($ticket, (int) $status->id);
$fresh = $ticket->fresh(['agent', 'owner', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
$fresh = $ticket->fresh(['user.company', 'owner.company', 'agent.company', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
if ($status->is_closed) {
$sla->recordClosure($fresh);
}
$workflow->dispatch($fresh, $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user());
$workflow->dispatch($fresh, $status->is_closed ? 'ticket.closed' : 'ticket.updated', $this->actor());
return redirect()
->route('helpdesk.tickets.show', $fresh)
@@ -114,8 +115,8 @@ final class TicketControlsController extends Controller
'last_activity_at' => now(),
]);
$fresh = $ticket->fresh(['agent', 'owner', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
$workflow->dispatch($fresh, 'ticket.updated', Auth::user());
$fresh = $ticket->fresh(['user.company', 'owner.company', 'agent.company', 'status', 'priority', 'category', 'project', 'team', 'product']) ?? $ticket;
$workflow->dispatch($fresh, 'ticket.updated', $this->actor());
return redirect()
->route('helpdesk.tickets.show', $fresh)
@@ -172,6 +173,19 @@ final class TicketControlsController extends Controller
);
}
/**
* Return the authenticated user with company eager-loaded for workflow rendering/N+1 safety.
*/
private function actor(): User
{
/** @var User $user */
$user = Auth::user();
$user->loadMissing('company');
return $user;
}
/**
* Convert form select values to nullable integers.
*/