Deploy Ladill Queue / deploy (push) Successful in 36s
Introduce shared x-qms.page-hero with summary stats across queues, tickets, counters, admin pages, and insights; remove bordered cards on Analytics, Reports, Feedback, and Branches list views. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.9 KiB
PHP
53 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Qms;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Controllers\Qms\Concerns\ScopesToAccount;
|
|
use App\Models\CustomerFeedback;
|
|
use App\Services\Qms\OrganizationResolver;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
class FeedbackAdminController extends Controller
|
|
{
|
|
use ScopesToAccount;
|
|
|
|
public function index(Request $request): View
|
|
{
|
|
$this->authorizeAbility($request, 'feedback.view');
|
|
$owner = $this->ownerRef($request);
|
|
$organization = $this->organization($request);
|
|
$branchScope = app(OrganizationResolver::class)->branchScope($this->member($request));
|
|
|
|
$feedback = CustomerFeedback::owned($owner)
|
|
->where('organization_id', $organization->id)
|
|
->when($branchScope, fn ($q) => $q->whereHas('ticket', fn ($t) => $t->where('branch_id', $branchScope)))
|
|
->with(['ticket', 'counter'])
|
|
->latest()
|
|
->paginate(30);
|
|
|
|
$avgRating = CustomerFeedback::owned($owner)
|
|
->where('organization_id', $organization->id)
|
|
->when($branchScope, fn ($q) => $q->whereHas('ticket', fn ($t) => $t->where('branch_id', $branchScope)))
|
|
->avg('rating');
|
|
|
|
$feedbackQuery = CustomerFeedback::owned($owner)
|
|
->where('organization_id', $organization->id)
|
|
->when($branchScope, fn ($q) => $q->whereHas('ticket', fn ($t) => $t->where('branch_id', $branchScope)));
|
|
|
|
$heroStats = [
|
|
'total' => (clone $feedbackQuery)->count(),
|
|
'avg_rating' => round((float) $avgRating, 1),
|
|
'this_month' => (clone $feedbackQuery)->where('created_at', '>=', now()->startOfMonth())->count(),
|
|
];
|
|
|
|
return view('qms.feedback.index', [
|
|
'feedback' => $feedback,
|
|
'organization' => $organization,
|
|
'avgRating' => round((float) $avgRating, 1),
|
|
'heroStats' => $heroStats,
|
|
]);
|
|
}
|
|
}
|