@extends('layouts.app') @section('title', $city->city_name . ' ダッシュボード') @section('content')

{{ $city->city_name }} ダッシュボード

{{ $stats['parks_count'] }}

駐輪場数

詳細を見る

{{ number_format($stats['contracts_count']) }}

契約数

詳細を見る

{{ number_format($stats['users_count']) }}

利用者数

詳細を見る

{{ number_format($stats['waiting_count']) }}

予約待ち人数

詳細を見る
@php // park_number テーブルから指定駐輪場群の容量を集計 $parkIds = $parks->pluck('park_id')->toArray(); $parkNumberCapacity = 0; if (!empty($parkIds)) { $parkNumberData = \Illuminate\Support\Facades\DB::table('park_number') ->whereIn('park_id', $parkIds) ->selectRaw('COALESCE(SUM(park_standard), 0) + COALESCE(SUM(park_number), 0) + COALESCE(SUM(park_limit), 0) as total') ->first(); $parkNumberCapacity = $parkNumberData->total ?? 0; } @endphp

{{ number_format($parkNumberCapacity) }}

総収容台数

@php $totalCapacity = $parkNumberCapacity; $utilizationRate = $totalCapacity > 0 ? round(($stats['contracts_count'] / $totalCapacity) * 100, 1) : 0; @endphp

{{ $utilizationRate }}%

利用率

{{ number_format(max(0, $totalCapacity - $stats['contracts_count'])) }}

空き台数

@php // 待機超過分 / 総容量で予約待ち率を計算(超過なしは0%) // 分母チェック付き:総容量 > 0 の場合のみ計算 $totalVacant = max(0, $totalCapacity - $stats['contracts_count']); $waitingRate = 0; if ($totalCapacity > 0 && $stats['waiting_count'] > 0 && $stats['waiting_count'] > $totalVacant) { $waitingRate = (int) floor((($stats['waiting_count'] - $totalVacant) / $totalCapacity) * 100); } @endphp

{{ $waitingRate }}%

予約待ち率

{{ $city->city_name }}の駐輪場一覧

@if($parks->count() > 0)
@foreach($parks as $park) @endforeach
駐輪場ID 駐輪場名 住所 収容台数 状態 操作
{{ $park->park_id }} {{ $park->park_name }} {{ $park->park_address ?? '-' }} {{ number_format($park->park_capacity ?? 0) }}台 @if($park->park_status == 1) 稼働中 @else 停止中 @endif 編集
@else
この自治体にはまだ駐輪場が登録されていません。
@endif

{{ $city->city_name }}関連のクイックアクション

@endsection @push('scripts') @endpush