user(); $query = Feedback::query() ->whereIn('status', ['resolved', 'closed']) ->whereNotNull('assigned_to'); if ($user->hasRole('manager')) { $deptIds = Department::where('manager_id', $user->id)->pluck('id'); $query->whereIn('current_department_id', $deptIds); } $handlers = (clone $query) ->select('assigned_to') ->selectRaw('AVG(strftime("%s", updated_at) - strftime("%s", created_at)) / 60 as avg_minutes') ->groupBy('assigned_to') ->with('assignedTo') ->get(); $labels = $handlers->map(fn ($h) => $h->assignedTo?->name ?? 'Unknown')->toArray(); $data = $handlers->map(fn ($h) => round($h->avg_minutes, 1))->toArray(); return [ 'datasets' => [ [ 'label' => 'Avg Time (minutes)', 'data' => $data, 'backgroundColor' => '#3b82f6', ], ], 'labels' => $labels, ]; } public static function canView(): bool { return auth()->user()?->hasRole(['admin', 'manager']) ?? false; } }