filters['startDate'] ?? null; $endDate = $this->filters['endDate'] ?? null; $user = auth()->user(); $data = Cooperation::query() ->when($startDate, fn ($q) => $q->whereDate('created_at', '>=', $startDate)) ->when($endDate, fn ($q) => $q->whereDate('created_at', '<=', $endDate)) ->when($user && $user->hasRole(RoleEnum::PERUSAHAAN->value), function ($query) use ($user) { $partnerMediaId = $user->company?->partnerMedia?->id; $query->whereHas('partnerMedia', function ($q) use ($partnerMediaId) { $q->where('partner_media.id', $partnerMediaId); }); }) ->selectRaw('status, count(*) as total') ->groupBy('status') ->get(); $labels = []; $counts = []; $colors = []; foreach (CooperationStatus::cases() as $case) { $labels[] = $case->getLabel(); $counts[] = $data->where('status', $case)->first()?->total ?? 0; $colors[] = match ($case) { CooperationStatus::PENDING => '#F59E0B', CooperationStatus::ASSIGNMENT => '#3B82F6', CooperationStatus::PAYMENT => '#8B5CF6', CooperationStatus::COMPLETED => '#10B981', }; } return [ 'datasets' => [ [ 'label' => 'Jumlah Kerjasama', 'data' => $counts, 'backgroundColor' => $colors, ], ], 'labels' => $labels, ]; } protected function getType(): string { return 'pie'; } }