Replace Upgrade to Pro with Report Issue for staff.
Deploy Ladill Queue / deploy (push) Successful in 38s

Non-owners submit Queue issues to Ladill admin via Identity.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-14 22:23:48 +00:00
co-authored by Cursor
parent 6e66f7c584
commit 7c8a8f889e
5 changed files with 155 additions and 9 deletions
@@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Qms;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Qms\Concerns\ScopesToAccount;
use App\Services\Identity\IdentityTeamClient;
use App\Support\StaffUx;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class IssueReportController extends Controller
{
use ScopesToAccount;
public function create(Request $request): View
{
abort_unless(! StaffUx::showBilling($request->user()), 403);
return view('qms.issues.create');
}
public function store(Request $request, IdentityTeamClient $identity): RedirectResponse
{
abort_unless(! StaffUx::showBilling($request->user()), 403);
$validated = $request->validate([
'subject' => ['required', 'string', 'max:255'],
'message' => ['required', 'string', 'max:5000'],
'priority' => ['required', 'in:low,normal,high'],
]);
$user = $request->user();
$organization = $this->organization($request);
$member = $this->member($request);
$context = trim(implode("\n", array_filter([
'App: Ladill Queue',
'Organization: '.($organization->name ?? '—'),
'Role: '.($member?->role ?? '—'),
'Reporter: '.($user->email ?? $user->ownerRef()),
'',
$validated['message'],
])));
try {
$ticket = $identity->createSupportTicket($user->ownerRef(), [
'subject' => $validated['subject'],
'message' => $context,
'priority' => $validated['priority'],
'tags' => ['staff_issue', 'app:queue'],
], 'queue');
} catch (\Throwable $e) {
report($e);
return back()
->withInput()
->with('error', 'Could not send your report right now. Please try again in a moment.');
}
$ref = (string) ($ticket['ticket_ref'] ?? '');
return redirect()
->route('qms.dashboard')
->with('success', $ref !== ''
? "Issue reported to Ladill support ({$ref}). Our team will follow up."
: 'Issue reported to Ladill support. Our team will follow up.');
}
}