diff --git a/app/Http/Controllers/Admin/ZoneController.php b/app/Http/Controllers/Admin/ZoneController.php new file mode 100644 index 0000000..1834da8 --- /dev/null +++ b/app/Http/Controllers/Admin/ZoneController.php @@ -0,0 +1,130 @@ +input('action') === 'reset') { + return redirect()->route('zones'); + } + + // ソート設定 + $sort = $request->input('sort', 'zone_id'); + $sort_type = $request->input('sort_type', 'desc'); + + // ベースクエリ + $query = Zone::query(); + + // === 絞り込み条件 === + if ($request->filled('zone_id')) { + $query->where('zone_id', $request->zone_id); + } + if ($request->filled('zone_name')) { + $query->where('zone_name', 'LIKE', "%{$request->zone_name}%"); + } + if ($request->filled('park_id')) { + $query->where('park_id', $request->park_id); + } + if ($request->filled('ptype_id')) { + $query->where('ptype_id', $request->ptype_id); + } + if ($request->filled('psection_id')) { + $query->where('psection_id', $request->psection_id); + } + if ($request->has('use_flag') && $request->use_flag !== '') { + $query->where('use_flag', $request->use_flag); + } + + // ページネーション + $zones = $query->orderBy($sort, $sort_type)->paginate(20); + + return view('admin.zones.list', compact( + 'zones', 'sort', 'sort_type' + )); + } + + /** + * 新規登録 + */ + public function add(Request $request) + { + if ($request->isMethod('post')) { + $data = $this->validateZone($request); + Zone::create($data); + + return redirect()->route('zones') + ->with('success', 'ゾーンを登録しました'); + } + + $zone = new Zone(); + return view('admin.zones.add', compact('zone')); + } + + /** + * 編集 + */ + public function edit($id, Request $request) + { + $zone = Zone::findOrFail($id); + + if ($request->isMethod('post')) { + $data = $this->validateZone($request); + $zone->update($data); + + return redirect()->route('zones') + ->with('success', 'ゾーンを更新しました'); + } + + return view('admin.zones.edit', compact('zone')); + } + + /** + * 詳細表示 + */ + public function info($id) + { + $zone = Zone::findOrFail($id); + + return view('admin.zones.info', compact('zone')); + } + + /** + * 削除 + */ + public function delete(Request $request) + { + $id = $request->input('id'); + if ($id) { + Zone::destroy($id); + return redirect()->route('zones')->with('success', 'ゾーンを削除しました'); + } + return redirect()->route('zones')->with('error', '削除対象が指定されていません'); + } + + /** + * バリデーション共通化 + */ + private function validateZone(Request $request) + { + return $request->validate([ + 'zone_name' => 'required|string|max:50', + 'park_id' => 'required|integer', + 'ptype_id' => 'nullable|integer', + 'psection_id' => 'nullable|integer', + 'zone_number' => 'nullable|integer|min:0', + 'zone_standard' => 'nullable|integer|min:0', + 'zone_tolerance' => 'nullable|integer|min:0', + 'use_flag' => 'nullable|boolean', + 'memo' => 'nullable|string|max:255', + ]); + } +} diff --git a/app/Models/Zone.php b/app/Models/Zone.php new file mode 100644 index 0000000..3d3e94d --- /dev/null +++ b/app/Models/Zone.php @@ -0,0 +1,44 @@ + {{-- チェック + 編集ボタン --}} - - + + 定期種別ID 市区名 diff --git a/resources/views/admin/settings/list.blade.php b/resources/views/admin/settings/list.blade.php index ecc5122..6831074 100644 --- a/resources/views/admin/settings/list.blade.php +++ b/resources/views/admin/settings/list.blade.php @@ -71,9 +71,9 @@ - + diff --git a/resources/views/admin/settlement_transactions/list.blade.php b/resources/views/admin/settlement_transactions/list.blade.php index 50a23cd..aebd6f6 100644 --- a/resources/views/admin/settlement_transactions/list.blade.php +++ b/resources/views/admin/settlement_transactions/list.blade.php @@ -87,9 +87,10 @@
- - + + {{ __('設定ID') }} {{ __('編集マスタ') }} {{ __('ウェブ参照マスタ') }}
- + @@ -110,10 +111,11 @@ + diff --git a/resources/views/admin/zones/_form.blade.php b/resources/views/admin/zones/_form.blade.php new file mode 100644 index 0000000..8646bf6 --- /dev/null +++ b/resources/views/admin/zones/_form.blade.php @@ -0,0 +1,93 @@ +@csrf +
+ +
+ + @error('zone_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('park_id') + {{ $message }} + @enderror +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + @error('zone_name') + {{ $message }} + @enderror +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ @if(isset($zone) && $zone->zone_id) + {{-- 編集画面 --}} + + 戻る + @else + {{-- 新規画面 --}} + + 削除 + @endif +
diff --git a/resources/views/admin/zones/add.blade.php b/resources/views/admin/zones/add.blade.php new file mode 100644 index 0000000..6492f99 --- /dev/null +++ b/resources/views/admin/zones/add.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.app') + +@section('title', '[東京都|〇〇駐輪場] ゾーンマスタ新規登録') + +@section('content') +
+
+
+
+

新規

+
+
+ +
+
+
+
+ +
+
+
+
+
+ @include('admin.zones._form') + +
+
+
+
+@endsection diff --git a/resources/views/admin/zones/edit.blade.php b/resources/views/admin/zones/edit.blade.php new file mode 100644 index 0000000..b07c211 --- /dev/null +++ b/resources/views/admin/zones/edit.blade.php @@ -0,0 +1,35 @@ +@extends('layouts.app') + +@section('title', '[東京都|〇〇駐輪場] ゾーンマスタ編集') + +@section('content') +
+
+
+
+

編集

+
+ +
+
+
+ +
+
+
+
+
+ @method('POST') + @include('admin.zones._form') + +
+
+
+
+@endsection diff --git a/resources/views/admin/zones/info.blade.php b/resources/views/admin/zones/info.blade.php new file mode 100644 index 0000000..0227c52 --- /dev/null +++ b/resources/views/admin/zones/info.blade.php @@ -0,0 +1,51 @@ +@extends('layouts.app') + +@section('title', '[東京都|〇〇駐輪場] ゾーンマスタ詳細') + +@section('content') +
+
+
+
+

ゾーンマスタ 詳細

+
+ +
+
+
+ +
+
+
+
+ {{-- 共通フォームをインクルード --}} +
+ @csrf + + {{-- form.blade.phpの内容を読み込み --}} + @include('admin.zones.form', ['zone' => $zone]) + + {{-- すべてのフォーム要素を非活性にするJS --}} + + +
+ 戻る +
+ +
+
+
+
+@endsection diff --git a/resources/views/admin/zones/list.blade.php b/resources/views/admin/zones/list.blade.php new file mode 100644 index 0000000..cd162df --- /dev/null +++ b/resources/views/admin/zones/list.blade.php @@ -0,0 +1,194 @@ +@extends('layouts.app') + +@section('title', '[東京都|〇〇駐輪場] ゾーンマスタ') + +@section('content') +
+
+
+
+

ゾーンマスタ

+
+
+ +
+
+
+
+ +
+ +
+
+
+

絞り込みフィルター

+
+
+
+ @csrf + + + +
- + + 決済トランザクションID 定期契約ID ステータス
- + 編集
{{ $item->settlement_transaction_id }} {{ $item->contract_id }} {{ $item->status }}
+ + + + + + + + + + + + +
駐輪場ID + + 駐輪分類ID + +
車種区分ID + +
+ +
+ + +
+ + + + + + + +
+ 新規 + +
+ {{ $zones->appends(request()->all())->links('pagination') }} +
+
+ + + +
+
+
+ @csrf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @foreach($zones as $item) + + + + + + + + + + + + + + @endforeach + +
+ + + ゾーンID + + 駐輪場ID + + 駐輪分類ID + + ゾーン名 + + ゾーン内現在契約台数 + + ゾーン内標準台数 + + ゾーン内許容台数 + + ゾーン順 + + 車種区分ID +
+
+ + 編集 +
+
{{ $item->zone_id }}{{ $item->park_id }}{{ $item->ptype_id }}{{ $item->zone_name }}{{ $item->zone_number }}{{ $item->zone_standard }}{{ $item->zone_tolerance }}{{ $item->zone_sort }}{{ $item->psection_id }}
+
+
+
+ + + +@push('scripts') + +@endpush + +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index ae25009..42d4db0 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -399,6 +399,11 @@

-