Replace Upgrade to Pro with Report Issue for staff.
Deploy Ladill Frontdesk / deploy (push) Successful in 34s
Deploy Ladill Frontdesk / deploy (push) Successful in 34s
Non-owners submit Frontdesk issues to Ladill admin via Identity. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Frontdesk;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Controllers\Frontdesk\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('frontdesk.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 Frontdesk',
|
||||
'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:frontdesk'],
|
||||
], 'frontdesk');
|
||||
} 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('frontdesk.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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user