'from', 'type' => 'date', 'label' => 'Od', 'nullable' => true], ['key' => 'to', 'type' => 'date', 'label' => 'Do', 'nullable' => true], ]; } public function columns(): array { return [ ['key' => 'decision_name', 'label' => 'Odločitev'], ['key' => 'activities_count', 'label' => 'Št. aktivnosti'], ]; } public function query(array $filters): Builder { return Activity::query() ->leftJoin('decisions', 'activities.decision_id', '=', 'decisions.id') ->when(!empty($filters['from']), fn ($q) => $q->whereDate('activities.created_at', '>=', $filters['from'])) ->when(!empty($filters['to']), fn ($q) => $q->whereDate('activities.created_at', '<=', $filters['to'])) ->groupBy('decisions.name') ->selectRaw("COALESCE(decisions.name, '—') as decision_name, COUNT(*) as activities_count"); } }