user()->role === 'admin'; $filamentCount = Filament::count(); $recentFilaments = Filament::with(['prices' => fn ($query) => $query->orderByDesc('recordedAt')->limit(1)]) ->orderByDesc('id')->limit(4)->get(); $materials = Filament::query()->select('material')->selectRaw('COUNT(*) as total') ->groupBy('material')->orderByDesc('total')->get() ->map(fn (Filament $filament): array => [ 'label' => $filament->material ?: 'Unspecified', 'count' => (int) $filament->total, ])->all(); $etsyStatus = $isAdmin ? 'Not connected' : null; $etsyConnected = false; $receipts = []; $listingCount = null; $shippingStatus = $isAdmin ? 'Not configured' : null; $shipments = []; if ($isAdmin && ($connection = EtsyConnection::first()) && $etsy->configured()) { try { $receipts = $etsy->receipts($connection)['results'] ?? []; $etsyStatus = 'Live ยท '.$connection->shop_name; $etsyConnected = true; } catch (Throwable $exception) { report($exception); $etsyStatus = 'Temporarily unavailable'; } try { $listings = $etsy->listings($connection); $listingCount = (int) ($listings['count'] ?? count($listings['results'] ?? [])); } catch (Throwable $exception) { report($exception); } } if ($isAdmin && filled(config('services.parcel2go.client_id')) && filled(config('services.parcel2go.client_secret'))) { try { $shipments = array_slice($parcel2Go->fetch('me/orders/detail')['Orders'] ?? [], 0, 4); $shippingStatus = 'Live account'; } catch (Throwable $exception) { report($exception); $shippingStatus = 'Temporarily unavailable'; } } $printers = []; $printerStatus = 'Not configured'; if ($bambuddy->configured()) { try { $printers = $bambuddy->printers(); $printerStatus = 'Live from BamBuddy'; } catch (Throwable $exception) { report($exception); $printerStatus = 'Temporarily unavailable'; } } $printingCount = collect($printers)->filter(fn (array $printer): bool => in_array( strtoupper((string) ($printer['live']['state'] ?? $printer['status'] ?? '')), ['RUNNING', 'PRINTING'], true, ))->count(); $dryerState = 'Not configured'; if (filled(config('services.dryer.api_key'))) { try { $dryerState = ucfirst((string) ($dryer->status()['state'] ?? 'Unknown')); } catch (Throwable $exception) { report($exception); $dryerState = 'Unavailable'; } } $days = collect(range(13, 0))->map(fn (int $offset): Carbon => now()->startOfDay()->subDays($offset)); $orderTrend = $days->map(fn (Carbon $day): int => collect($receipts)->filter( fn (array $receipt): bool => isset($receipt['create_timestamp']) && Carbon::createFromTimestamp((int) $receipt['create_timestamp'])->isSameDay($day), )->count())->all(); return view('dashboard', [ 'isAdmin' => $isAdmin, 'filamentCount' => $filamentCount, 'recentFilaments' => $recentFilaments, 'materials' => $materials, 'receipts' => array_slice($receipts, 0, 5), 'awaitingDispatch' => count($receipts), 'listingCount' => $listingCount, 'etsyStatus' => $etsyStatus, 'etsyConnected' => $etsyConnected, 'shipments' => $shipments, 'shippingStatus' => $shippingStatus, 'printers' => $printers, 'printerStatus' => $printerStatus, 'printingCount' => $printingCount, 'dryerState' => $dryerState, 'orderChart' => [ 'labels' => $days->map(fn (Carbon $day): string => $day->format('d M'))->all(), 'series' => $orderTrend, ], ]); } }