From 56d05014cb17479feb28155a40c94c0528f33b90 Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Fri, 29 Aug 2025 22:18:37 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=B6=E3=83=BC=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E5=A4=89=E6=9B=B4=E9=96=A2=E9=80=A3=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20-=20=E5=88=A9=E7=94=A8=E8=80=85=E5=8C=BA=E5=88=86=E3=81=AE?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/UserEditConfirmController.php | 67 ++++++++----------- app/Http/Controllers/UserEditController.php | 41 +++++++----- app/Http/Controllers/UserInfoController.php | 25 ++++--- resources/views/user/confirm.blade.php | 10 +-- resources/views/user/edit.blade.php | 43 +++++------- resources/views/user/info.blade.php | 4 +- routes/web.php | 34 +++++++++- 7 files changed, 124 insertions(+), 100 deletions(-) diff --git a/app/Http/Controllers/UserEditConfirmController.php b/app/Http/Controllers/UserEditConfirmController.php index 9bc2683..fdc189b 100644 --- a/app/Http/Controllers/UserEditConfirmController.php +++ b/app/Http/Controllers/UserEditConfirmController.php @@ -16,7 +16,6 @@ use App\Http\Controllers\Controller; class UserEditConfirmController extends Controller { use ValidatesRequests; - // GET: 確認画面表示(戻って修正するボタン等で利用) public function show(Request $request) { $user_id = session('user_id'); @@ -31,29 +30,14 @@ class UserEditConfirmController extends Controller // 直前のPOST値をold()やsession()->get('_old_input')で取得 $input = session()->get('_old_input', []); - // 利用者区分ラベル変換 - $ward_residents_label = ''; - if (isset($input['ward_residents'])) { - if ($input['ward_residents'] === '0') { - $ward_residents_label = '一般'; - } elseif ($input['ward_residents'] === '1') { - $ward_residents_label = '学生'; - } elseif ($input['ward_residents'] === '2') { - $ward_residents_label = '減免'; - } else { - $ward_residents_label = $input['ward_residents']; - } - } - return view('user.confirm', [ 'user' => $user, 'input' => $input, - 'ward_residents_label' => $ward_residents_label, - 'active_menu' => 'SWC-1-1', // この画面のID + 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) ]); } - // 編集画面からのPOSTで入力内容確認画面を表示 + public function confirm(Request $request) { $user_id = session('user_id'); @@ -92,28 +76,18 @@ class UserEditConfirmController extends Controller $input['photo_filename2'] = $filename2; } - // 利用者区分ラベル変換 - $ward_residents_label = ''; - if (isset($input['ward_residents'])) { - if ($input['ward_residents'] === '0') { - $ward_residents_label = '一般'; - } elseif ($input['ward_residents'] === '1') { - $ward_residents_label = '学生'; - } elseif ($input['ward_residents'] === '2') { - $ward_residents_label = '減免'; - } else { - $ward_residents_label = $input['ward_residents']; - } - } + \Log::info('ユーザー情報編集確認画面にアクセス', [ + 'user_id' => $user_id, + ]); return view('user.confirm', [ 'user' => $user, 'input' => $input, - 'ward_residents_label' => $ward_residents_label, - 'active_menu' => 'SWC-1-1', // この画面のID + 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) ]); } + // 入力内容確認画面から「変更を確定する」ボタン押下時 public function submit(Request $request) { @@ -126,7 +100,6 @@ class UserEditConfirmController extends Controller return redirect('/login'); } - $token = Str::random(64); $changeData = $request->except(['_token']); $changeData['user_id'] = $user_id; @@ -144,8 +117,6 @@ class UserEditConfirmController extends Controller $file2->storeAs('photo', $filename2, 'public'); $changeData['photo_filename2'] = $filename2; } - // ※ public/storage/photo で画像が参照できない場合は、 - // コマンドプロンプトで `php artisan storage:link` を実行してください。 Cache::put('change_request_' . $token, $changeData, now()->addDay()); @@ -154,8 +125,12 @@ class UserEditConfirmController extends Controller // Mailableでメール送信 Mail::to($changeData['user_primemail'])->send(new UserEditVerifyMail($verifyUrl, $user)); + \Log::info('ユーザー情報変更メール送信完了画面にアクセス', [ + 'user_id' => $user_id, + ]); + return view('user.mail_sent', [ - 'active_menu' => 'SWC-1-1', // この画面のID + 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) ]); } @@ -170,7 +145,7 @@ class UserEditConfirmController extends Controller return redirect()->route('user.edit')->withErrors(['register_expired' => '登録期間が過ぎています。もう一度登録してください。']); } - // 変更内容をDBに保存(例: userテーブル更新) + // 変更内容をDBに保存(userテーブル更新) // 更新データ生成(photo_filename1, photo_filename2, user_passは入力時のみ追加) $updateData = [ 'user_gender' => $changeData['user_gender'] ?? null, @@ -184,7 +159,9 @@ class UserEditConfirmController extends Controller 'user_mobile' => implode('-', $changeData['user_mobile'] ?? []), 'user_primemail' => $changeData['user_primemail'], 'user_submail' => $changeData['user_submail'], - 'ward_residents' => $changeData['ward_residents'], + // 利用者区分(user_categoryid)をusertypeテーブルから取得して登録 + // 画面からはuser_category(一般/学生)が渡ってくる + 'user_categoryid' => self::getUserCategoryId($changeData['user_category'] ?? null), 'user_workplace' => $changeData['user_workplace'] ?? null, 'user_school' => $changeData['user_school'] ?? null, 'user_graduate' => $changeData['user_graduate'] ?? null, @@ -192,7 +169,7 @@ class UserEditConfirmController extends Controller 'user_relate_pre' => $changeData['user_relate_pre'], 'user_relate_city' => $changeData['user_relate_city'], 'user_relate_add' => $changeData['user_relate_add'], - 'updated_at' => now(), // 追加: 認証時の日時 + 'updated_at' => now(), // ]; if (!empty($changeData['photo_filename1'])) { $updateData['photo_filename1'] = $changeData['photo_filename1']; @@ -214,6 +191,16 @@ class UserEditConfirmController extends Controller return redirect()->route('user.info')->with('success', '更新に成功しました。'); } + /** + * 利用者区分の文言(一般/学生)からuser_categoryidを取得 + */ + private static function getUserCategoryId($categoryName) + { + if (!$categoryName) return null; + $row = DB::table('usertype')->where('usertype_subject1', $categoryName)->first(); + return $row ? $row->user_categoryid : null; + } + /** * パスワードをSHA256→SALT連結→25回ストレッチでハッシュ化 */ diff --git a/app/Http/Controllers/UserEditController.php b/app/Http/Controllers/UserEditController.php index b1352cc..1b5c66d 100644 --- a/app/Http/Controllers/UserEditController.php +++ b/app/Http/Controllers/UserEditController.php @@ -19,13 +19,21 @@ class UserEditController extends Controller if (!$user_id) { return redirect('/login'); } - $user = DB::table('user')->where('user_id', $user_id)->first(); - if (!$user) { - return redirect('/login'); - } + $user = DB::table('user')->where('user_id', $user_id)->first(); - // 契約・更新期間判定(例: DBから契約情報取得) + // 利用者区分をusertypeテーブルから取得 + $user_category = ''; + if (isset($user->user_categoryid)) { + $usertype = DB::table('usertype') + ->where('user_categoryid', $user->user_categoryid) + ->first(); + if ($usertype && isset($usertype->usertype_subject1)) { + $user_category = $usertype->usertype_subject1; + } + } + + // 契約・更新期間判定 $contract = DB::table('regular_contract') ->join('park', 'regular_contract.park_id', '=', 'park.park_id') ->where('regular_contract.user_id', $user->user_id) @@ -125,11 +133,16 @@ class UserEditController extends Controller $user->user_relate_zip_1 = substr($user->user_relate_zip ?? '', 0, 3); $user->user_relate_zip_2 = substr($user->user_relate_zip ?? '', 3, 4); + \Log::info('ユーザー情報編集画面にアクセス', [ + 'user_id' => $user_id, + ]); + return view('user.edit', [ 'user' => $user, + 'user_category' => $user_category, 'is_update_period' => $is_update_period, 'in_contract_period' => $in_contract_period, - 'active_menu' => 'SWC-1-1', // この画面のID + 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) ]); } @@ -143,10 +156,6 @@ class UserEditController extends Controller return redirect('/login'); } $user = DB::table('user')->where('user_id', $user_id)->first(); - if (!$user) { - return redirect('/login'); - } - // バリデーションルール $rules = [ @@ -162,7 +171,7 @@ class UserEditController extends Controller 'user_primemail' => 'required|email', 'user_primemail_confirmation' => 'required|same:user_primemail', 'user_submail' => 'nullable|email|different:user_primemail', - 'ward_residents' => ['required', Rule::in(['0', '1', '2'])], + 'user_category' => ['required', Rule::in(['一般', '学生'])], 'user_workplace' => 'nullable|string|max:50', 'user_school' => 'nullable|string|max:50', 'user_graduate' => 'nullable|date', @@ -183,7 +192,7 @@ class UserEditController extends Controller ]; // 利用者区分による必須項目 - if ($request->ward_residents == '1') { // 学生 + if ($request->user_category == '学生') { $rules['user_school'] = 'required|string|max:50'; $rules['user_graduate'] = 'required|date'; } @@ -204,8 +213,8 @@ class UserEditController extends Controller 'user_primemail_confirmation.same' => '「メールアドレス」と「メールアドレスの確認」が一致しません。', 'user_submail.email' => '予備メールアドレスは正しい形式で入力してください。', 'user_submail.different' => 'メールアドレスと予備メールアドレスに同じアドレスを入力できません。', - 'ward_residents.required' => '利用者区分は必須です。', - 'ward_residents.in' => '利用者区分の値が不正です。', + 'user_category.required' => '利用者区分は必須です。', + 'user_category.in' => '利用者区分の値が不正です。', 'user_workplace.max' => '勤務先は50文字以内で入力してください。', 'user_school.max' => '学校名は50文字以内で入力してください。', 'user_school.required' => '学校名は必須です。', @@ -331,7 +340,7 @@ class UserEditController extends Controller 'user_workplace', 'user_school', 'user_graduate', - 'ward_residents' + 'user_category' ]; if (!$is_update_period) { @@ -367,7 +376,7 @@ class UserEditController extends Controller $user->user_submail = $request->user_submail; // 利用者区分 - $user->ward_residents = $request->ward_residents; + $user->user_category = $request->user_category; $user->user_workplace = $request->user_workplace; $user->user_school = $request->user_school; $user->user_graduate = $request->user_graduate; diff --git a/app/Http/Controllers/UserInfoController.php b/app/Http/Controllers/UserInfoController.php index edc236c..2cbeada 100644 --- a/app/Http/Controllers/UserInfoController.php +++ b/app/Http/Controllers/UserInfoController.php @@ -15,22 +15,25 @@ class UserInfoController extends Controller } $user = DB::table('user')->where('user_id', $user_id)->first(); - // 利用者区分の表示変換(取得できなければ空欄) - $ward_residents_label = ''; - if (isset($user->ward_residents)) { - if ($user->ward_residents == 0) { - $ward_residents_label = '一般'; - } elseif ($user->ward_residents == 1) { - $ward_residents_label = '学生'; - } elseif ($user->ward_residents == 2) { - $ward_residents_label = '減免'; + // 利用者区分をusertypeテーブルから取得 + $user_category = ''; + if (isset($user->user_categoryid)) { + $usertype = DB::table('usertype') + ->where('user_categoryid', $user->user_categoryid) + ->first(); + if ($usertype && isset($usertype->usertype_subject1)) { + $user_category = $usertype->usertype_subject1; } } + \Log::info('ユーザー情報確認画面にアクセス', [ + 'user_id' => $user_id, + ]); + return view('user.info', [ 'user' => $user, - 'ward_residents_label' => $ward_residents_label, - 'active_menu' => 'SWC-1-1', // この画面のID + 'user_category' => $user_category, + 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) ]); } diff --git a/resources/views/user/confirm.blade.php b/resources/views/user/confirm.blade.php index ae44783..b703079 100644 --- a/resources/views/user/confirm.blade.php +++ b/resources/views/user/confirm.blade.php @@ -108,13 +108,13 @@
- +
-

{{ $ward_residents_label }}

- +

{{ $input['user_category'] }}

+
- @if ($input['ward_residents'] === '1') + @if ($input['user_category'] === '学生')
@@ -131,7 +131,7 @@
@else - +
diff --git a/resources/views/user/edit.blade.php b/resources/views/user/edit.blade.php index 4e2fcaa..a99ea55 100644 --- a/resources/views/user/edit.blade.php +++ b/resources/views/user/edit.blade.php @@ -28,7 +28,7 @@

入力内容に不備があります。

-
+ @csrf {{-- お名前(編集不可) --}}
@@ -124,7 +124,7 @@
- {{-- 年齢(自動計算 or 表示のみ) --}} + {{-- 年齢(自動計算 かつ 表示のみ) --}}
@@ -181,39 +181,35 @@
-
-
- ward_residents) == '0' ? 'checked' : '' }} @if(!$is_update_period)disabled @endif> - -
-
- ward_residents) == '1' ? 'checked' : '' }} @if(!$is_update_period)disabled @endif> - -
-
- ward_residents) == '2' ? 'checked' : '' }} @if(!$is_update_period)disabled @endif> - -
+
+
+ +
- {{-- 勤務先名(一般/減免のみ表示) --}} -
+
+ + +
+
+ {{-- 勤務先名(一般のみ表示) --}} +
-
+
{{-- 学校名(学生のみ表示) --}} -
+
-
+
{{-- 卒業予定(学生のみ表示) --}} -
+
-
+
{{-- 住所(関連) --}} @@ -283,13 +279,11 @@
おもて - {{ $user->photo_filename1 ?? '' }}
ウ ラ - {{ $user->photo_filename2 ?? '' }}
{{-- パスワード変更 --}}
@@ -492,7 +486,6 @@ } document.getElementById('user_categoryid_ippan').addEventListener('change', toggleUserTypeFields); document.getElementById('user_categoryid_gakusei').addEventListener('change', toggleUserTypeFields); - document.getElementById('user_categoryid_genmen').addEventListener('change', toggleUserTypeFields); window.addEventListener('DOMContentLoaded', function() { toggleUserTypeFields(); }); diff --git a/resources/views/user/info.blade.php b/resources/views/user/info.blade.php index 5991f88..5358ad0 100644 --- a/resources/views/user/info.blade.php +++ b/resources/views/user/info.blade.php @@ -55,10 +55,10 @@

{{ $user->user_submail }}

- +
-

{{ $ward_residents_label }}

+

{{ $user_category }}

@if ($user->ward_residents == 0 || $user->ward_residents == 2)
diff --git a/routes/web.php b/routes/web.php index b67bdcb..d235e5e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -12,7 +12,9 @@ use App\Http\Controllers\UserEditController; use App\Http\Controllers\UserEditConfirmController; use App\Http\Controllers\UserWithdrawController; use App\Http\Controllers\RegularContractController; - +use App\Http\Controllers\RegularContractCreateController; +use App\Http\Controllers\ParkWaitlistController; +use App\Http\Controllers\ReceiptController; Route::get('/', function () { return redirect()->route('login'); @@ -53,10 +55,40 @@ Route::get('/user/withdraw', [UserWithdrawController::class, 'showConfirm']) Route::post('/user/withdraw/confirm', [UserWithdrawController::class, 'withdraw']) ->name('user.withdraw.confirm'); + // 定期契約情報確認 Route::get('regular_contract/info', [RegularContractController::class, 'showInfo']) ->name('regular_contract.info'); +// 領収書宛名入力画面 +Route::get('receipt/input/{contract_id}', [ReceiptController::class, 'input']) + ->name('receipt.input'); +Route::get('receipt/download/{contract_id}', [ReceiptController::class, 'download']) + ->name('receipt.download'); +Route::post('receipt/issue/{contract_id}', [ReceiptController::class, 'issue']); + +// 新規定期契約画面 +Route::get('regular_contract/create', [RegularContractCreateController::class, 'show']) + ->name('regular_contract.create'); + +// 定期契約更新 +Route::get('regular_contract/update/{contract_id}', [RegularContractController::class, 'update']); +// 契約区分確認 +Route::get('regular_contract/confirm_category/{contract_id}', [RegularContractController::class, 'confirmCategory']) + ->name('regular_contract.confirm_category'); +Route::get('regular_contract/confirm_category_next/{contract_id}', [RegularContractController::class, 'confirmCategoryNext']) + ->name('regular_contract.confirm_category_next'); +// 本人確認書類アップロード +Route::get('regular_contract/upload_identity/{contract_id}', [RegularContractController::class, 'uploadIdentity']) + ->name('regular_contract.upload_identity'); +// 利用期間選択 +Route::get('regular_contract/select_period/{contract_id}', [RegularContractController::class, 'selectPeriod']) + ->name('regular_contract.select_period'); + +// 空き待ち状況確認画面 +Route::get('park_waitlist', [ParkWaitlistController::class, 'index']) + ->name('park_waitlist.index'); + Route::get('/login', function () { return '