user()->role === 'admin'; $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); } } $shippingConfig = $settings->for('parcel2go'); if ($isAdmin && filled($shippingConfig['client_id'] ?? null) && filled($shippingConfig['client_secret'] ?? null) && filled($shippingConfig['auth_url'] ?? null)) { try { $parcel2Go->verifyCredentials(); try { $shipments = array_slice($parcel2Go->fetch('me/orders/detail')['Orders'] ?? [], 0, 4); $shippingStatus = 'Live account'; } catch (Throwable $exception) { $shippingStatus = 'History access needed'; } } 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'; } } $printerStates = collect($printers)->countBy(function (array $printer): string { $live = $printer['live'] ?? []; $state = strtoupper((string) ($live['state'] ?? $printer['status'] ?? '')); if ($live === []) { return 'Unavailable'; } if (($live['connected'] ?? false) === false) { return 'Offline'; } if (in_array($state, ['RUNNING', 'PRINTING'], true)) { return 'Printing'; } if (in_array($state, ['IDLE', 'READY', 'FINISH'], true)) { return 'Idle'; } return 'Other'; }); $dryerState = 'Not configured'; if ($dryer->configured()) { 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, 'receipts' => array_slice($receipts, 0, 5), 'awaitingDispatch' => count($receipts), 'listingCount' => $listingCount, 'etsyStatus' => $etsyStatus, 'etsyConnected' => $etsyConnected, 'shipments' => $shipments, 'shippingStatus' => $shippingStatus, 'printers' => $printers, 'printerStatus' => $printerStatus, 'printingCount' => $printerStates->get('Printing', 0), 'printerChart' => $printerStates->map(fn (int $count, string $state): array => [ 'label' => $state, 'count' => $count, ])->values()->all(), 'dryerState' => $dryerState, 'orderChart' => [ 'labels' => $days->map(fn (Carbon $day): string => $day->format('d M'))->all(), 'series' => $orderTrend, ], ]); } }