From d5a4d8bd9c72e05bc5ac0fbd6c593b318513f4d3 Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Thu, 18 Sep 2025 13:59:26 +0900 Subject: [PATCH] =?UTF-8?q?=E9=A7=90=E8=BC=AA=E5=A0=B4=E6=A4=9C=E7=B4=A2?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/ParkDetailController.php | 43 +++++++++++++------ .../RegularContractCreateController.php | 23 +++++++--- .../Controllers/UserWithdrawController.php | 1 + public/assets/js/commons.js | 30 ++++++++++++- resources/views/layouts/app.blade.php | 2 +- .../views/partials/mypage_header.blade.php | 8 ++-- .../views/partials/mypage_menu.blade.php | 6 +-- .../views/partials/mypagefootermenu.blade.php | 6 +-- .../views/regular_contract/create.blade.php | 8 +++- routes/web.php | 3 ++ 10 files changed, 95 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/ParkDetailController.php b/app/Http/Controllers/ParkDetailController.php index bde4c8e..371802e 100644 --- a/app/Http/Controllers/ParkDetailController.php +++ b/app/Http/Controllers/ParkDetailController.php @@ -11,14 +11,14 @@ class ParkDetailController extends Controller public function show($park_id) { $park = DB::table('park')->where('park_id', $park_id)->first(); - Log::debug('park:', (array)$park); + $zones = DB::table('zone') ->leftJoin('psection', 'zone.psection_id', '=', 'psection.psection_id') ->leftJoin('ptype', 'zone.ptype_id', '=', 'ptype.ptype_id') ->select('zone.*', 'psection.psection_subject', 'ptype.ptype_subject') ->where('zone.park_id', $park_id) ->get(); - Log::debug('zones:', $zones->toArray()); + $reserves = DB::table('reserve') ->join('zone', function ($join) { $join->on('reserve.psection_id', '=', 'zone.psection_id') @@ -29,16 +29,7 @@ class ParkDetailController extends Controller ->where('reserve.valid_flag', 1) ->select('reserve.*', 'ptype.ptype_subject') ->get(); - Log::debug('reserves:', $reserves->toArray()); - $zoneStandardSum = []; - /*foreach ($zones as $zone) { - $psectionId = $zone->psection_id; - if (!isset($zoneStandardSum[$psectionId])) { - $zoneStandardSum[$psectionId] = 0; - } - $zoneStandardSum[$psectionId] += $zone->zone_standard; - }*/ $zoneStandardSum = []; foreach ($zones as $zone) { $key = $zone->psection_subject; // 「自転車」「原付」など @@ -47,7 +38,6 @@ class ParkDetailController extends Controller } $zoneStandardSum[$key] += $zone->zone_standard; } - Log::debug('zoneStandardSum:', $zoneStandardSum); // 空き台数集計用配列 $vacancyData = []; @@ -59,7 +49,6 @@ class ParkDetailController extends Controller // zone_tolerance - zone_number を合計 $vacancyData[$key] += ($zone->zone_tolerance - $zone->zone_number); } - Log::debug('vacancyData:', $vacancyData); // reserve件数分を減算 foreach ($reserves as $reserve) { @@ -77,11 +66,37 @@ class ParkDetailController extends Controller }) ->get() ->keyBy('city_id'); - Log::debug('city_grace_periods:', $city_grace_periods->toArray()); // 必要なら他テーブルJOINや追加情報も取得 return response()->json([ 'html' => view('regular_contract.park_detail', compact('park', 'zones', 'reserves', 'zoneStandardSum', 'vacancyData', 'city_grace_periods'))->render() ]); } + + public function showWait($reserve_id) + { + $reserve = DB::table('reserve')->where('reserve_id', $reserve_id)->first(); + $park = DB::table('park')->where('park_id', $reserve->park_id)->first(); + + $zones = DB::table('zone') + ->leftJoin('psection', 'zone.psection_id', '=', 'psection.psection_id') + ->leftJoin('ptype', 'zone.ptype_id', '=', 'ptype.ptype_id') + ->select('zone.*', 'psection.psection_subject', 'ptype.ptype_subject') + ->where('zone.park_id', $park->park_id) + ->get(); + + $zoneStandardSum = []; + foreach ($zones as $zone) { + $key = $zone->psection_subject; // 「自転車」「原付」など + if (!isset($zoneStandardSum[$key])) { + $zoneStandardSum[$key] = 0; + } + $zoneStandardSum[$key] += $zone->zone_standard; + } + + // 必要なら他テーブルJOINや追加情報も取得 + return response()->json([ + 'html' => view('park_waitlist.park_detail', compact('park', 'zones', 'reserve', 'zoneStandardSum'))->render() + ]); + } } diff --git a/app/Http/Controllers/RegularContractCreateController.php b/app/Http/Controllers/RegularContractCreateController.php index 7dd2675..e2ccfb3 100644 --- a/app/Http/Controllers/RegularContractCreateController.php +++ b/app/Http/Controllers/RegularContractCreateController.php @@ -13,7 +13,7 @@ use function redirect; class RegularContractCreateController extends Controller { // 新規作成画面表示 - public function show() + public function show(Request $request) { $user_id = session('user_id'); if (!$user_id) { @@ -108,12 +108,24 @@ class RegularContractCreateController extends Controller ->get() ->groupBy('park_id'); - \Log::info('新規定期契約-駐輪場選択画面にアクセス', [ - 'user_id' => $user_id, - ]); + // ルート名で画面表示を切り替え(新規定期契約 or 駐輪場検索) + $isRegularContract = $request->route()->getName() === 'regular_contract.create'; + + // ヘッダーの選択状態を分岐 + $active_menu = $isRegularContract ? 'SWC-8-1' : 'SWC-10-1'; + + if ($isRegularContract) { + \Log::info('新規定期契約-駐輪場選択画面にアクセス', [ + 'user_id' => $user_id, + ]); + } else { + \Log::info('駐輪場検索-駐輪場選択画面にアクセス', [ + 'user_id' => $user_id, + ]); + } return view('regular_contract.create', [ - 'active_menu' => 'SWC-8-1', // この画面のID + 'active_menu' => $active_menu, // この画面のID 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) 'cities' => $cities, 'stations' => $stations, @@ -125,6 +137,7 @@ class RegularContractCreateController extends Controller 'zones' => $zones, 'city_grace_periods' => $city_grace_periods, 'reserve' => $reserve, + 'isRegularContract' => $isRegularContract ]); } diff --git a/app/Http/Controllers/UserWithdrawController.php b/app/Http/Controllers/UserWithdrawController.php index 5869e07..a4500b9 100644 --- a/app/Http/Controllers/UserWithdrawController.php +++ b/app/Http/Controllers/UserWithdrawController.php @@ -7,6 +7,7 @@ use Illuminate\Support\Facades\Auth; use App\Models\User; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Log; use App\Mail\WithdrawCompleteMail; class UserWithdrawController extends Controller diff --git a/public/assets/js/commons.js b/public/assets/js/commons.js index ef0a3b2..97c3d3e 100644 --- a/public/assets/js/commons.js +++ b/public/assets/js/commons.js @@ -130,6 +130,21 @@ $(document).on('click', '.btn-popup', function () { }); }); +$(document).on('click', '.btn-reserve-popup', function () { + var reserveId = $(this).data('reserve-id'); + $.ajax({ + url: '/api/park-detail-wait/' + reserveId, + method: 'GET', + success: function (data) { + $('#modalArea').html(data.html); // モーダル全体を挿入 + $('#parkDetailWaitModal').modal('show'); // モーダルを表示 + }, + error: function () { + alert('詳細情報の取得に失敗しました'); + } + }); +}); + $(document).on('click', '.btn-reserve', function (e) { e.preventDefault(); var parkId = $(this).data('park-id'); @@ -141,8 +156,19 @@ $(document).on('click', '.btn-reserve', function (e) { content: 'こちらの駐輪場を予約しますか?
お申込みいただく各自治体の条例等によって、駐輪場までの距離制限等によりご契約いただけない場合がございます。
予めご了承くださいますようお願いいたします。', buttons: { OK: function () { - // GETパラメータでregulationメソッドに遷移 - location.href = '/park-waitlist/create?park_id=' + parkId + '&psection_id=' + psectionId + '&ptype_id=' + ptypeId; + // Ajaxで予約済みかチェック + $.get('/park-waitlist/check', { + park_id: parkId, + psection_id: psectionId, + ptype_id: ptypeId + }, function (response) { + if (response.status === 'exists') { + $.alert('こちらの駐輪場は予約済みです。'); + } else { + // 予約画面へ遷移 + location.href = '/park-waitlist/create?park_id=' + parkId + '&psection_id=' + psectionId + '&ptype_id=' + ptypeId; + } + }); }, キャンセル: function () { } } diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 6aed38d..7a4c2a0 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -9,7 +9,7 @@ - + diff --git a/resources/views/partials/mypage_header.blade.php b/resources/views/partials/mypage_header.blade.php index 0200183..4dafa6a 100644 --- a/resources/views/partials/mypage_header.blade.php +++ b/resources/views/partials/mypage_header.blade.php @@ -1,12 +1,11 @@ @php -// コントローラーから $user_name を渡してください if (!isset($user_name)) $user_name = ''; @endphp
diff --git a/resources/views/partials/mypage_menu.blade.php b/resources/views/partials/mypage_menu.blade.php index 1bf0bec..26d6985 100644 --- a/resources/views/partials/mypage_menu.blade.php +++ b/resources/views/partials/mypage_menu.blade.php @@ -15,15 +15,15 @@ if (!isset($active_menu)) $active_menu = ''; diff --git a/resources/views/partials/mypagefootermenu.blade.php b/resources/views/partials/mypagefootermenu.blade.php index 12a1e4a..cea0d0b 100644 --- a/resources/views/partials/mypagefootermenu.blade.php +++ b/resources/views/partials/mypagefootermenu.blade.php @@ -42,7 +42,7 @@
- +

駐輪場検索


@@ -66,7 +66,7 @@
- +

ログアウト

@@ -74,7 +74,7 @@
- +

このページの使い方

diff --git a/resources/views/regular_contract/create.blade.php b/resources/views/regular_contract/create.blade.php index 662276b..c0d741a 100644 --- a/resources/views/regular_contract/create.blade.php +++ b/resources/views/regular_contract/create.blade.php @@ -2,7 +2,11 @@ @section('content')
+ @if($isRegularContract)

新規定期契約 > 空き駐輪場を確認する

+ @else +

駐輪場検索 > 駐輪場選択

+ @endif
@@ -122,9 +126,9 @@ @endphp @if ($vacancy > 0 && $inGrace) - @elseif ($vacancy > 0 && !$inGrace) + @elseif (!$inGrace) - @else + @elseif ($vacancy <= 0 && $inGrace) @endif @empty diff --git a/routes/web.php b/routes/web.php index 9b4a6a1..270edd2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -158,6 +158,9 @@ Route::post('regular_contract/update_period', [RegularContractController::class, // 定期契約履歴 Route::get('regular_contract/history', [RegularContractController::class, 'showHistory']) ->name('regular_contract.history'); +// 駐輪場検索 +Route::get('park_search', [RegularContractCreateController::class, 'show']) + ->name('park_search'); // 空き待ち状況確認画面 Route::get('park_waitlist', [ParkWaitlistController::class, 'index']) -- 2.47.3