diff --git a/app/Http/Controllers/SealReissueController.php b/app/Http/Controllers/SealReissueController.php
new file mode 100644
index 0000000..afe5c84
--- /dev/null
+++ b/app/Http/Controllers/SealReissueController.php
@@ -0,0 +1,96 @@
+where('user_id', $user_id)->value('user_name');
+ $contract = DB::table('regular_contract')
+ ->join('park', 'regular_contract.park_id', '=', 'park.park_id')
+ ->where('contract_id', $contract_id)
+ ->select('regular_contract.contract_id', 'park.park_name')
+ ->first();
+
+ \Log::info('シール再発行確認画面にアクセス', [
+ 'user_id' => $user_id,
+ ]);
+
+ return view('regular_contract.seal_reissue', [
+ 'contract' => $contract,
+ 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用
+ 'user_name' => $user_name ? $user_name : '', // ユーザー名(ヘッダー用)
+ ]);
+ }
+
+ public function reason($contract_id)
+ {
+ $user_id = session('user_id');
+ if (!$user_id) {
+ return redirect('/login');
+ }
+ $user_name = DB::table('user')->where('user_id', $user_id)->value('user_name');
+
+ \Log::info('シール再発行理由入力画面にアクセス', [
+ 'user_id' => $user_id,
+ ]);
+
+ return view('regular_contract.seal_reissue_reason', [
+ 'contract_id' => $contract_id,
+ 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用
+ 'user_name' => $user_name ? $user_name : '', // ユーザー名(ヘッダー用)
+ ]);
+ }
+
+ public function complete(Request $request, $contract_id)
+ {
+ $user_id = session('user_id');
+ if (!$user_id) {
+ return redirect('/login');
+ }
+ $user_name = DB::table('user')->where('user_id', $user_id)->value('user_name');
+
+ $validated = $request->validate([
+ 'reason' => ['required'],
+ 'other_reason' => [
+ 'nullable',
+ 'string',
+ 'max:255',
+ 'regex:/^[\x20-\x7Eぁ-んァ-ヶ一-龠々ーa-zA-Z0-90-9a-zA-Z、。・「」『』()【】[]{}〈〉《》!?:;…ー~\s\r\n]+$/u',
+ 'required_if:reason,その他'
+ ],
+ ], [
+ 'reason.required' => '理由を選択してください。',
+ 'other_reason.max' => 'その他の理由は255文字以内で入力してください。',
+ 'other_reason.regex' => 'その他の理由に使用できない文字が含まれています。',
+ 'other_reason.required_if' => 'その他を選択した場合は理由を入力してください。'
+ ]);
+
+ $contract = DB::table('regular_contract')
+ ->join('park', 'regular_contract.park_id', '=', 'park.park_id')
+ ->where('contract_id', $contract_id)
+ ->select('regular_contract.contract_id', 'park.park_name')
+ ->first();
+
+ $reason = $request->input('reason');
+ $other_reason = $request->input('other_reason');
+
+ \Log::info('シール再発行申請完了画面にアクセス', [
+ 'user_id' => $user_id,
+ ]);
+
+ return view('regular_contract.seal_reissue_complete', [
+ 'active_menu' => 'SWC-4-1', // マイページメニューの選択状態用
+ 'user_name' => $user_name ? $user_name : '', // ユーザー名(ヘッダー用)
+ 'contract' => $contract
+ ]);
+ }
+}
diff --git a/app/Http/Controllers/UserTagReissueController.php b/app/Http/Controllers/UserTagReissueController.php
new file mode 100644
index 0000000..a2f9f61
--- /dev/null
+++ b/app/Http/Controllers/UserTagReissueController.php
@@ -0,0 +1,45 @@
+where('user_id', $user_id)->first();
+
+ \Log::info('タグ再発行申請画面にアクセス', [
+ 'user_id' => $user_id,
+ ]);
+
+ return view('user.tag_reissue', [
+ 'user' => $user,
+ 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用
+ 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用)
+ ]);
+ }
+
+ public function complete()
+ {
+ $user_id = session('user_id');
+ if (!$user_id) {
+ return redirect('/login');
+ }
+ $user = DB::table('user')->where('user_id', $user_id)->first();
+
+ \Log::info('タグ再発行申請完了画面にアクセス', [
+ 'user_id' => $user_id,
+ ]);
+
+ return view('user.tag_reissue_complete', [
+ 'active_menu' => 'SWC-1-1', // マイページメニューの選択状態用
+ 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用)
+ ]);
+ }
+}
diff --git a/resources/views/regular_contract/info.blade.php b/resources/views/regular_contract/info.blade.php
index 17efdaf..f72020c 100644
--- a/resources/views/regular_contract/info.blade.php
+++ b/resources/views/regular_contract/info.blade.php
@@ -262,26 +262,35 @@ return null;
@endif
- @php
- $has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists();
- @endphp
- @if($has_receipt)
- @if($bg == 'alert-warning')
- 領収書再発行
- @elseif($bg == 'alert-danger')
- 領収書再発行
- @else
- 領収書再発行
- @endif
- @else
- @if($bg == 'alert-warning')
- 領収書発行
- @elseif($bg == 'alert-danger')
- 領収書発行
- @else
- 領収書発行
- @endif
- @endif
+
+ @php
+ $has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists();
+ @endphp
+ @if($has_receipt)
+ @if($bg == 'alert-warning')
+
領収書再発行
+ @elseif($bg == 'alert-danger')
+
領収書再発行
+ @else
+
領収書再発行
+ @endif
+ @else
+ @if($bg == 'alert-warning')
+
領収書発行
+ @elseif($bg == 'alert-danger')
+
領収書発行
+ @else
+
領収書発行
+ @endif
+ @endif
+ @if($bg == 'alert-warning')
+
シール再発行
+ @elseif($bg == 'alert-danger')
+
シール再発行
+ @else
+
シール再発行
+ @endif
+
diff --git a/resources/views/regular_contract/seal_reissue.blade.php b/resources/views/regular_contract/seal_reissue.blade.php
new file mode 100644
index 0000000..8faeb3e
--- /dev/null
+++ b/resources/views/regular_contract/seal_reissue.blade.php
@@ -0,0 +1,27 @@
+@extends('layouts.app')
+@section('content')
+
+
+
+
+
選択した駐輪場
+
+
+
+ 定期契約ID: {{ $contract->contract_id }}
{{ $contract->park_name }}
+
+
こちらのシールを再発行します。
よろしいですか?
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/regular_contract/seal_reissue_complete.blade.php b/resources/views/regular_contract/seal_reissue_complete.blade.php
new file mode 100644
index 0000000..a1dc50b
--- /dev/null
+++ b/resources/views/regular_contract/seal_reissue_complete.blade.php
@@ -0,0 +1,20 @@
+@extends('layouts.app')
+@section('content')
+
+
+
+
+
+ 定期契約ID: {{ $contract->contract_id }}
+ {{ $contract->park_name }}
+
+
こちらのシールの再発行準備が整いました。
上記駐輪場にてシールをお受け取りください。
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/regular_contract/seal_reissue_reason.blade.php b/resources/views/regular_contract/seal_reissue_reason.blade.php
new file mode 100644
index 0000000..8882dc6
--- /dev/null
+++ b/resources/views/regular_contract/seal_reissue_reason.blade.php
@@ -0,0 +1,86 @@
+@extends('layouts.app')
+@section('content')
+
+
+ @if ($errors->any())
+
+ @foreach ($errors->all() as $error)
+
{{ $error }}
+ @endforeach
+
+ @endif
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/user/info.blade.php b/resources/views/user/info.blade.php
index 5358ad0..ef04855 100644
--- a/resources/views/user/info.blade.php
+++ b/resources/views/user/info.blade.php
@@ -3,9 +3,9 @@
@section('content')
@if (session('success'))
-
- {{ session('success') }}
-
+
+ {{ session('success') }}
+
@endif
ユーザー情報確認 > ユーザー情報
@@ -87,9 +87,9 @@
@if(!empty($user->photo_filename1))
-
 }})
+
 }})
@else
-
+
@endif
@@ -97,9 +97,9 @@
@if(!empty($user->photo_filename2))
-
 }})
+
 }})
@else
-
+
@endif
@@ -114,6 +114,9 @@
+
diff --git a/resources/views/user/tag_reissue.blade.php b/resources/views/user/tag_reissue.blade.php
new file mode 100644
index 0000000..7caa885
--- /dev/null
+++ b/resources/views/user/tag_reissue.blade.php
@@ -0,0 +1,83 @@
+@extends('layouts.app')
+@section('content')
+
+
+
+
+
タグ再発行を行うお客様の情報をご確認ください。
+
住所、電話番号、メールアドレス等に変更がある場合、再発行を申請する前にユーザー情報確認から
お客様の情報を最新状態へ更新をお願いいたします。
+
+
+
+
+
+
+
{{ $user->user_name }}
+
+
+
+
+
+
{{ $user->user_phonetic }}
+
+
+
+
+
+
{{ $user->user_gender ?? '未入力' }}
+
+
+
+
+
+
{{ $user->user_regident_zip }}{{ $user->user_regident_pre }}{{ $user->user_regident_city }}{{ $user->user_regident_add }}
+
+
+
+
+
+
+
{{ $user->user_homephone ?? '未入力' }}
+
+
+
+
+
+
+
{{ $user->user_mobile ?? '未入力' }}
+
+
+
+
+
+
+
{{ $user->user_primemail }}
+
+
+
+
+
+
{{ $user->user_submail ?? '未入力' }}
+
+
+
+
+
+
********
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/user/tag_reissue_complete.blade.php b/resources/views/user/tag_reissue_complete.blade.php
new file mode 100644
index 0000000..fed57e6
--- /dev/null
+++ b/resources/views/user/tag_reissue_complete.blade.php
@@ -0,0 +1,17 @@
+@extends('layouts.app')
+@section('content')
+
+
+
+
+
タグの再発行申請が完了しました。
+
現在オペレーターが確認中です。
タグの再発行までいましばらくお待ちください。
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 2b79e5a..a1dc54b 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -16,11 +16,13 @@ use App\Http\Controllers\UserInfoController;
use App\Http\Controllers\UserEditController;
use App\Http\Controllers\UserEditConfirmController;
use App\Http\Controllers\UserWithdrawController;
+use App\Http\Controllers\UserTagReissueController;
use App\Http\Controllers\RegularContractController;
use App\Http\Controllers\RegularContractCreateController;
use App\Http\Controllers\ParkingSearchController;
use App\Http\Controllers\ParkWaitlistController;
use App\Http\Controllers\ReceiptController;
+use App\Http\Controllers\SealReissueController;
use App\Http\Controllers\ParkDetailController;
use App\Http\Controllers\UserInformationController;
@@ -89,6 +91,10 @@ Route::get('/user/edit/verify', [UserEditConfirmController::class, 'verify'])->n
Route::get('/user/withdraw', [UserWithdrawController::class, 'showConfirm'])->name('user.withdraw');
Route::post('/user/withdraw/confirm', [UserWithdrawController::class, 'withdraw'])->name('user.withdraw.confirm');
+// タグ再発行
+Route::get('/user/tag_reissue', [UserTagReissueController::class, 'index'])->name('user.tag_reissue');
+Route::get('/user/tag_reissue/complete', [UserTagReissueController::class, 'complete'])->name('user.tag_reissue.complete');
+
// 定期契約情報確認
Route::get('regular_contract/info', [RegularContractController::class, 'showInfo'])->name('regular_contract.info');
@@ -97,6 +103,11 @@ Route::get('receipt/input/{contract_id}', [ReceiptController::class, 'input'])->
Route::get('receipt/download/{contract_id}', [ReceiptController::class, 'download'])->name('receipt.download');
Route::post('receipt/issue/{contract_id}', [ReceiptController::class, 'issue']);
+// シール再発行
+Route::get('/seal/reissue/{contract_id}', [SealReissueController::class, 'index'])->name('seal.reissue');
+Route::get('/seal/reissue/reason/{contract_id}', [SealReissueController::class, 'reason'])->name('seal.reissue.reason');
+Route::post('/seal/reissue/complete/{contract_id}', [SealReissueController::class, 'complete'])->name('seal.reissue.complete');
+
// 新規定期契約
Route::get('regular_contract/create', [RegularContractCreateController::class, 'show'])->name('regular_contract.create');
Route::get('/api/park-detail/{park_id}', [ParkDetailController::class, 'show']);