Compare commits

...

16 Commits

Author SHA1 Message Date
56c7ae8778 Merge pull request 'main_watanabe' (#40) from main_watanabe into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 24s
Deploy preview (main_watanabe) / deploy (push) Successful in 19s
Reviewed-on: #40
2025-10-03 17:47:10 +09:00
7b2d8c4416 Merge pull request '契約更新画面修正' (#39) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 24s
Reviewed-on: #39
2025-10-03 15:30:09 +09:00
1ecaf6d46a 契約更新画面修正 2025-10-03 15:29:41 +09:00
23327a4ca3 resources/views/regular_contract/update.blade.php を更新
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 22s
2025-10-02 17:21:01 +09:00
a34046b72a Merge pull request 'ファビコン設定' (#38) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 23s
Reviewed-on: #38
2025-10-02 16:44:33 +09:00
467ae8d055 ファビコン設定 2025-10-02 16:44:09 +09:00
d2b631bbab Merge pull request '駐輪場空き台数計算処理修正' (#37) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 23s
Reviewed-on: #37
2025-10-02 16:29:09 +09:00
8dc41b211c 駐輪場空き台数計算処理修正 2025-10-02 16:28:17 +09:00
56ea54ab15 Merge pull request 'mpdfインストール' (#36) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 27s
Reviewed-on: #36
2025-10-01 18:35:04 +09:00
609faf58a4 mpdfインストール 2025-10-01 18:34:26 +09:00
b18f4762bb Merge pull request 'シール再発行修正' (#35) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 21s
Reviewed-on: #35
2025-10-01 16:47:41 +09:00
f389f1482a シール再発行修正 2025-10-01 16:47:13 +09:00
4f4a914b7d Merge pull request 'シール再発行、タグ再発行機能追加' (#34) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 21s
Reviewed-on: #34
2025-10-01 13:04:26 +09:00
d677aa232d シール再発行、タグ再発行機能追加 2025-09-30 13:45:36 +09:00
70a0919746 Merge pull request 'お知らせ画面修正' (#33) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 20s
Reviewed-on: #33
2025-09-29 15:50:53 +09:00
ecc7095818 お知らせ画面修正 2025-09-29 15:50:17 +09:00
19 changed files with 893 additions and 162 deletions

View File

@ -100,13 +100,13 @@ class RegularContractCreateController extends Controller
// zoneテーブルデータを取得psectionテーブルとJOINしてpsection_subjectも取得 // zoneテーブルデータを取得psectionテーブルとJOINしてpsection_subjectも取得
$zones = DB::table('zone') $zones = DB::table('zone')
->leftJoin('psection', 'zone.psection_id', '=', 'psection.psection_id') ->leftJoin('psection', 'zone.psection_id', '=', 'psection.psection_id')
->select('zone.zone_id', 'zone.park_id', 'zone.psection_id', 'zone.zone_number', 'zone.zone_tolerance', 'psection.psection_subject') ->select('zone.zone_id', 'zone.park_id', 'zone.ptype_id', 'zone.psection_id', 'zone.zone_number', 'zone.zone_tolerance', 'psection.psection_subject')
->get() ->get()
->groupBy('park_id'); ->groupBy('park_id');
// 空き予約マスタデータを取得 // 空き予約マスタデータを取得
$reserve = DB::table('reserve') $reserve = DB::table('reserve')
->select('reserve_id', 'park_id', 'psection_id') ->select('reserve_id', 'park_id', 'ptype_id', 'psection_id')
->where('valid_flag', 1) ->where('valid_flag', 1)
->get() ->get()
->groupBy('park_id'); ->groupBy('park_id');

View File

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class SealReissueController extends Controller
{
public function index($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');
$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-3-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-3-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-9---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-3-1', // マイページメニューの選択状態用
'user_name' => $user_name ? $user_name : '', // ユーザー名(ヘッダー用)
'contract' => $contract
]);
}
}

View File

@ -23,6 +23,10 @@ class UserInformationController extends Controller
->limit(10) ->limit(10)
->get(); ->get();
\Log::info('お知らせ画面にアクセス', [
'user_id' => $user_id,
]);
return view('user_information.index', [ return view('user_information.index', [
'user_name' => $user_name, // ユーザー名(ヘッダー用) 'user_name' => $user_name, // ユーザー名(ヘッダー用)
'informations' => $informations 'informations' => $informations
@ -44,6 +48,10 @@ class UserInformationController extends Controller
->select('entry_date', 'user_information_history') ->select('entry_date', 'user_information_history')
->paginate(10); ->paginate(10);
\Log::info('過去のお知らせ画面にアクセス', [
'user_id' => $user_id,
]);
return view('user_information.history', [ return view('user_information.history', [
'user_name' => $user_name, // ユーザー名(ヘッダー用) 'user_name' => $user_name, // ユーザー名(ヘッダー用)
'informations' => $informations 'informations' => $informations

View File

@ -0,0 +1,45 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
class UserTagReissueController extends Controller
{
public function index()
{
$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', [
'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 : '', // ユーザー名(ヘッダー用)
]);
}
}

View File

@ -9,6 +9,7 @@
"php": "^8.2", "php": "^8.2",
"laravel/framework": "^12.0", "laravel/framework": "^12.0",
"laravel/tinker": "^2.10.1", "laravel/tinker": "^2.10.1",
"mpdf/mpdf": "^8.2",
"simplesoftwareio/simple-qrcode": "^4.2" "simplesoftwareio/simple-qrcode": "^4.2"
}, },
"require-dev": { "require-dev": {

417
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "2c302bf3eb129a3df792a2c53a938458", "content-hash": "571741bd63db78c990a3a07320a20496",
"packages": [ "packages": [
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -2213,6 +2213,239 @@
], ],
"time": "2025-03-24T10:02:05+00:00" "time": "2025-03-24T10:02:05+00:00"
}, },
{
"name": "mpdf/mpdf",
"version": "v8.2.6",
"source": {
"type": "git",
"url": "https://github.com/mpdf/mpdf.git",
"reference": "dd30e3b01061cf8dfe65e7041ab4cc46d8ebdd44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/mpdf/zipball/dd30e3b01061cf8dfe65e7041ab4cc46d8ebdd44",
"reference": "dd30e3b01061cf8dfe65e7041ab4cc46d8ebdd44",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"mpdf/psr-http-message-shim": "^1.0 || ^2.0",
"mpdf/psr-log-aware-trait": "^2.0 || ^3.0",
"myclabs/deep-copy": "^1.7",
"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0",
"psr/http-message": "^1.0 || ^2.0",
"psr/log": "^1.0 || ^2.0 || ^3.0",
"setasign/fpdi": "^2.1"
},
"require-dev": {
"mockery/mockery": "^1.3.0",
"mpdf/qrcode": "^1.1.0",
"squizlabs/php_codesniffer": "^3.5.0",
"tracy/tracy": "~2.5",
"yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"ext-bcmath": "Needed for generation of some types of barcodes",
"ext-xml": "Needed mainly for SVG manipulation",
"ext-zlib": "Needed for compression of embedded resources, such as fonts"
},
"type": "library",
"autoload": {
"files": [
"src/functions.php"
],
"psr-4": {
"Mpdf\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0-only"
],
"authors": [
{
"name": "Matěj Humpál",
"role": "Developer, maintainer"
},
{
"name": "Ian Back",
"role": "Developer (retired)"
}
],
"description": "PHP library generating PDF files from UTF-8 encoded HTML",
"homepage": "https://mpdf.github.io",
"keywords": [
"pdf",
"php",
"utf-8"
],
"support": {
"docs": "https://mpdf.github.io",
"issues": "https://github.com/mpdf/mpdf/issues",
"source": "https://github.com/mpdf/mpdf"
},
"funding": [
{
"url": "https://www.paypal.me/mpdf",
"type": "custom"
}
],
"time": "2025-08-18T08:51:51+00:00"
},
{
"name": "mpdf/psr-http-message-shim",
"version": "v2.0.1",
"source": {
"type": "git",
"url": "https://github.com/mpdf/psr-http-message-shim.git",
"reference": "f25a0153d645e234f9db42e5433b16d9b113920f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/psr-http-message-shim/zipball/f25a0153d645e234f9db42e5433b16d9b113920f",
"reference": "f25a0153d645e234f9db42e5433b16d9b113920f",
"shasum": ""
},
"require": {
"psr/http-message": "^2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Mpdf\\PsrHttpMessageShim\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Dorison",
"email": "mark@chromatichq.com"
},
{
"name": "Kristofer Widholm",
"email": "kristofer@chromatichq.com"
},
{
"name": "Nigel Cunningham",
"email": "nigel.cunningham@technocrat.com.au"
}
],
"description": "Shim to allow support of different psr/message versions.",
"support": {
"issues": "https://github.com/mpdf/psr-http-message-shim/issues",
"source": "https://github.com/mpdf/psr-http-message-shim/tree/v2.0.1"
},
"time": "2023-10-02T14:34:03+00:00"
},
{
"name": "mpdf/psr-log-aware-trait",
"version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/mpdf/psr-log-aware-trait.git",
"reference": "a633da6065e946cc491e1c962850344bb0bf3e78"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mpdf/psr-log-aware-trait/zipball/a633da6065e946cc491e1c962850344bb0bf3e78",
"reference": "a633da6065e946cc491e1c962850344bb0bf3e78",
"shasum": ""
},
"require": {
"psr/log": "^3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Mpdf\\PsrLogAwareTrait\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mark Dorison",
"email": "mark@chromatichq.com"
},
{
"name": "Kristofer Widholm",
"email": "kristofer@chromatichq.com"
}
],
"description": "Trait to allow support of different psr/log versions.",
"support": {
"issues": "https://github.com/mpdf/psr-log-aware-trait/issues",
"source": "https://github.com/mpdf/psr-log-aware-trait/tree/v3.0.0"
},
"time": "2023-05-03T06:19:36+00:00"
},
{
"name": "myclabs/deep-copy",
"version": "1.13.3",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/collections": "<1.6.8",
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
"phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
"files": [
"src/DeepCopy/deep_copy.php"
],
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Create deep copies (clones) of your objects",
"keywords": [
"clone",
"copy",
"duplicate",
"object",
"object graph"
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.3"
},
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
"time": "2025-07-05T12:25:42+00:00"
},
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "3.10.1", "version": "3.10.1",
@ -2611,6 +2844,56 @@
], ],
"time": "2025-05-08T08:14:37+00:00" "time": "2025-05-08T08:14:37+00:00"
}, },
{
"name": "paragonie/random_compat",
"version": "v9.99.100",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
"shasum": ""
},
"require": {
"php": ">= 7"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*",
"vimeo/psalm": "^1"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"support": {
"email": "info@paragonie.com",
"issues": "https://github.com/paragonie/random_compat/issues",
"source": "https://github.com/paragonie/random_compat"
},
"time": "2020-10-15T08:29:30+00:00"
},
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
"version": "1.9.3", "version": "1.9.3",
@ -3375,6 +3658,78 @@
}, },
"time": "2025-06-25T14:20:11+00:00" "time": "2025-06-25T14:20:11+00:00"
}, },
{
"name": "setasign/fpdi",
"version": "v2.6.4",
"source": {
"type": "git",
"url": "https://github.com/Setasign/FPDI.git",
"reference": "4b53852fde2734ec6a07e458a085db627c60eada"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Setasign/FPDI/zipball/4b53852fde2734ec6a07e458a085db627c60eada",
"reference": "4b53852fde2734ec6a07e458a085db627c60eada",
"shasum": ""
},
"require": {
"ext-zlib": "*",
"php": "^7.1 || ^8.0"
},
"conflict": {
"setasign/tfpdf": "<1.31"
},
"require-dev": {
"phpunit/phpunit": "^7",
"setasign/fpdf": "~1.8.6",
"setasign/tfpdf": "~1.33",
"squizlabs/php_codesniffer": "^3.5",
"tecnickcom/tcpdf": "^6.8"
},
"suggest": {
"setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured."
},
"type": "library",
"autoload": {
"psr-4": {
"setasign\\Fpdi\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Slabon",
"email": "jan.slabon@setasign.com",
"homepage": "https://www.setasign.com"
},
{
"name": "Maximilian Kresse",
"email": "maximilian.kresse@setasign.com",
"homepage": "https://www.setasign.com"
}
],
"description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
"homepage": "https://www.setasign.com/fpdi",
"keywords": [
"fpdf",
"fpdi",
"pdf"
],
"support": {
"issues": "https://github.com/Setasign/FPDI/issues",
"source": "https://github.com/Setasign/FPDI/tree/v2.6.4"
},
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/setasign/fpdi",
"type": "tidelift"
}
],
"time": "2025-08-05T09:57:14+00:00"
},
{ {
"name": "simplesoftwareio/simple-qrcode", "name": "simplesoftwareio/simple-qrcode",
"version": "4.2.0", "version": "4.2.0",
@ -6430,66 +6785,6 @@
}, },
"time": "2024-05-16T03:13:13+00:00" "time": "2024-05-16T03:13:13+00:00"
}, },
{
"name": "myclabs/deep-copy",
"version": "1.13.3",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/collections": "<1.6.8",
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
"phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
"files": [
"src/DeepCopy/deep_copy.php"
],
"psr-4": {
"DeepCopy\\": "src/DeepCopy/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Create deep copies (clones) of your objects",
"keywords": [
"clone",
"copy",
"duplicate",
"object",
"object graph"
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.3"
},
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
"time": "2025-07-05T12:25:42+00:00"
},
{ {
"name": "nunomaduro/collision", "name": "nunomaduro/collision",
"version": "v8.8.2", "version": "v8.8.2",

View File

@ -5,6 +5,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>@yield('title', 'So-Manager')</title> <title>@yield('title', 'So-Manager')</title>
<link rel="icon" href="{{ asset('assets/img/favicon.ico') }}">
<link href="{{ asset('assets/css/mypage/app.css') }}" rel="stylesheet"> <link href="{{ asset('assets/css/mypage/app.css') }}" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/typicons/2.0.9/typicons.css" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/typicons/2.0.9/typicons.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/earlyaccess/roundedmplus1c.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/earlyaccess/roundedmplus1c.css" rel="stylesheet">

View File

@ -89,18 +89,31 @@
<td> <td>
@php @php
$zonesForType = ($zones[$row->park_id] ?? collect())->where('psection_subject', $vehicle); $zonesForType = ($zones[$row->park_id] ?? collect())->where('psection_subject', $vehicle);
@endphp // 空き台数計算
@forelse ($zonesForType as $zone) $hasVacancy = false;
@php foreach ($zonesForType as $zone) {
$reserveCount = ($reserve[$row->park_id] ?? collect()) $reserveCount = ($reserve[$row->park_id] ?? collect())
->where('psection_id', $zone->psection_id) ->where('psection_id', $zone->psection_id)
->where('ptype_id', $zone->ptype_id)
->count(); ->count();
$vacancy = $zone->zone_tolerance - $zone->zone_number - $reserveCount; $vacancy = $zone->zone_tolerance - $zone->zone_number - $reserveCount;
if ($vacancy > 0) {
$hasVacancy = true;
break;
}
}
// 猶予期間判定 // 猶予期間判定
$grace = $city_grace_periods[$row->city_id] ?? null; $grace = $city_grace_periods[$row->city_id] ?? null;
$now = \Carbon\Carbon::now(); $gracePeriodValid =
$grace &&
is_numeric($grace->update_grace_period_start_date) &&
preg_match('/^\d{1,2}:\d{2}$/', $grace->update_grace_period_start_time) &&
is_numeric($grace->update_grace_period_end_date) &&
preg_match('/^\d{1,2}:\d{2}$/', $grace->update_grace_period_end_time);
$inGrace = false; $inGrace = false;
if ($grace && $grace->update_grace_period_start_date && $grace->update_grace_period_start_time && $grace->update_grace_period_end_date && $grace->update_grace_period_end_time) { if ($gracePeriodValid) {
$now = \Carbon\Carbon::now();
$year = $now->year; $year = $now->year;
$month = $now->month; $month = $now->month;
$startDay = (int)$grace->update_grace_period_start_date; $startDay = (int)$grace->update_grace_period_start_date;
@ -125,16 +138,17 @@
} }
} }
@endphp @endphp
@if ($vacancy > 0 && $inGrace) @if ($zonesForType->isNotEmpty() && $gracePeriodValid)
@if ($hasVacancy && $inGrace)
<button class="btn btn-block btn-sm btn-outline-success btn_82-table btn-popup" data-park-id="{{ $row->park_id }}">定期契約</button> <button class="btn btn-block btn-sm btn-outline-success btn_82-table btn-popup" data-park-id="{{ $row->park_id }}">定期契約</button>
@elseif (!$inGrace) @elseif (!$inGrace)
<button class="btn btn-block btn-sm btn-outline-danger btn_103-table btn-popup" data-park-id="{{ $row->park_id }}">販売期間外</button> <button class="btn btn-block btn-sm btn-outline-danger btn_103-table btn-popup" data-park-id="{{ $row->park_id }}">販売期間外</button>
@elseif ($vacancy <= 0 && $inGrace) @elseif (!$hasVacancy && $inGrace)
<button class="btn btn-block btn-sm btn-outline-danger btn_103-table btn-popup" data-park-id="{{ $row->park_id }}">空き待ち申込</button> <button class="btn btn-block btn-sm btn-outline-danger btn_103-table btn-popup" data-park-id="{{ $row->park_id }}">空き待ち申込</button>
@endif @endif
@empty @else
<span class="text-muted"></span> <span class="text-muted"></span>
@endforelse @endif
</td> </td>
@endforeach @endforeach
</tr> </tr>

View File

@ -262,26 +262,35 @@ return null;
<button type="button" id="cancelModalBtn" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;" data-bs-toggle="modal" data-bs-target="#cancelModal">解約について</button> <button type="button" id="cancelModalBtn" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;" data-bs-toggle="modal" data-bs-target="#cancelModal">解約について</button>
@endif @endif
</div> </div>
@php <div style="display: flex; gap: 6px;">
$has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists(); @php
@endphp $has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists();
@if($has_receipt) @endphp
@if($bg == 'alert-warning') @if($has_receipt)
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a> @if($bg == 'alert-warning')
@elseif($bg == 'alert-danger') <a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a> @elseif($bg == 'alert-danger')
@else <a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a> @else
@endif <a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
@else @endif
@if($bg == 'alert-warning') @else
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a> @if($bg == 'alert-warning')
@elseif($bg == 'alert-danger') <a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a> @elseif($bg == 'alert-danger')
@else <a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a> @else
@endif <a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
@endif @endif
@endif
@if($bg == 'alert-warning')
<a href="{{ url('seal/reissue/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">シール再発行</a>
@elseif($bg == 'alert-danger')
<a href="{{ url('seal/reissue/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">シール再発行</a>
@else
<a href="{{ url('seal/reissue/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">シール再発行</a>
@endif
</div>
</div> </div>
</td> </td>
</tr> </tr>

View File

@ -36,64 +36,79 @@
</div> </div>
<!-- 空き台数・契約情報 --> <!-- 空き台数・契約情報 -->
<div class="mt-3"> <div class="mt-3">
@foreach($zones as $zone)
@php @php
$vacant = $vacancyData[$zone->psection_id . '_' . $zone->ptype_subject] ?? 0; $zonesByPtype = $zones->groupBy('ptype_id');
$grace = $city_grace_periods[$park->city_id] ?? null;
$now = \Carbon\Carbon::now();
// 猶予期間判定
$isGracePeriod = false;
if ($grace && $grace->update_grace_period_start_date && $grace->update_grace_period_start_time && $grace->update_grace_period_end_date && $grace->update_grace_period_end_time) {
$now = \Carbon\Carbon::now();
$year = $now->year;
$month = $now->month;
$startDay = (int)$grace->update_grace_period_start_date;
$endDay = (int)$grace->update_grace_period_end_date;
$startTime = $grace->update_grace_period_start_time;
$endTime = $grace->update_grace_period_end_time;
if ($startDay > $endDay) {
// 月またぎ
$start = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $startDay, $startTime));
$nextMonth = $month == 12 ? 1 : $month + 1;
$nextYear = $month == 12 ? $year + 1 : $year;
$end = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $nextYear, $nextMonth, $endDay, $endTime));
} else {
// 同月
$start = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $startDay, $startTime));
$end = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $endDay, $endTime));
}
$isGracePeriod = $now->between($start, $end);
}
@endphp @endphp
<div class="mb-2"> @foreach($zonesByPtype as $ptypeId => $zonesGroup)
<strong>{{ $zone->ptype_subject }}</strong><br> <div class="mb-3">
{{ $zone->psection_subject }}:空き {{ $vacant }} <strong>{{ $zonesGroup->first()->ptype_subject }}</strong>
@if($isGracePeriod) <div style="display: flex; gap: 1em;">
@if($vacant > 0) @foreach($zonesGroup as $zone)
<button type="button" class="btn btn-success btn-sm btn-contract" @php
data-park-id="{{ $park->park_id }}" $vacant = $vacancyData[$zone->psection_id . '_' . $zone->ptype_subject] ?? 0;
data-psection-id="{{ $zone->psection_id }}" $grace = $city_grace_periods[$park->city_id] ?? null;
data-ptype-id="{{ $zone->ptype_id }}"> $now = \Carbon\Carbon::now();
定期契約
</button> // 猶予期間判定
@else $isGracePeriod = false;
<button type="button" class="btn btn-danger btn_103 btn-reserve" if ($grace && $grace->update_grace_period_start_date && $grace->update_grace_period_start_time && $grace->update_grace_period_end_date && $grace->update_grace_period_end_time) {
data-park-id="{{ $park->park_id }}" $now = \Carbon\Carbon::now();
data-psection-id="{{ $zone->psection_id }}" $year = $now->year;
data-ptype-id="{{ $zone->ptype_id }}"> $month = $now->month;
空き待ち申込 $startDay = (int)$grace->update_grace_period_start_date;
</button> $endDay = (int)$grace->update_grace_period_end_date;
@endif $startTime = $grace->update_grace_period_start_time;
@else $endTime = $grace->update_grace_period_end_time;
<button type="button" class="btn btn-danger btn_103 btn-reserve"
data-park-id="{{ $park->park_id }}" if ($startDay > $endDay) {
data-psection-id="{{ $zone->psection_id }}" // 月またぎ
data-ptype-id="{{ $zone->ptype_id }}"> // 前月の開始日~今月の終了日
販売期間外 $prevMonth = $now->copy()->subMonth();
</button> $startPrev = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $prevMonth->year, $prevMonth->month, $startDay, $grace->update_grace_period_start_time));
@endif $endCurr = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $endDay, $grace->update_grace_period_end_time));
// 今月の開始日~翌月の終了日
$startCurr = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $startDay, $grace->update_grace_period_start_time));
$nextMonth = $month == 12 ? 1 : $month + 1;
$nextYear = $month == 12 ? $year + 1 : $year;
$endNext = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $nextYear, $nextMonth, $endDay, $grace->update_grace_period_end_time));
$isGracePeriod = $now->between($startPrev, $endCurr) || $now->between($startCurr, $endNext);
} else {
// 同月
$start = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $startDay, $grace->update_grace_period_start_time));
$end = \Carbon\Carbon::createFromFormat('Y-m-d H:i', sprintf('%04d-%02d-%02d %s', $year, $month, $endDay, $grace->update_grace_period_end_time));
$isGracePeriod = $now->between($start, $end);
}
}
@endphp
<div class="mb-2">
{{ $zone->psection_subject }}:空き {{ max(0, $vacant) }}
@if($isGracePeriod)
@if($vacant > 0)
<button type="button" class="btn btn-success btn-sm btn-contract"
data-park-id="{{ $park->park_id }}"
data-psection-id="{{ $zone->psection_id }}"
data-ptype-id="{{ $zone->ptype_id }}">
定期契約
</button>
@else
<button type="button" class="btn btn-danger btn_103 btn-reserve"
data-park-id="{{ $park->park_id }}"
data-psection-id="{{ $zone->psection_id }}"
data-ptype-id="{{ $zone->ptype_id }}">
空き待ち申込
</button>
@endif
@else
<button type="button" class="btn btn-danger btn_103 btn-reserve"
data-park-id="{{ $park->park_id }}"
data-psection-id="{{ $zone->psection_id }}"
data-ptype-id="{{ $zone->ptype_id }}">
販売期間外
</button>
@endif
</div>
@endforeach
</div>
</div> </div>
@endforeach @endforeach
</div> </div>

View File

@ -0,0 +1,27 @@
@extends('layouts.app')
@section('content')
<main>
<header class="alert alert-success">
<h4 class="container">定期契約情報確認 > シール再発行</h4>
</header>
<section id="" class="container mt30 mb50">
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<h3 class="text-center alert-success">選択した駐輪場</h3>
</div>
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<h3 class="text-center alert-warning">
<span class="small">定期契約ID: {{ $contract->contract_id }}<br>{{ $contract->park_name }}</span>
</h3>
<p class="text-center"><br>こちらのシールを再発行します。<br>よろしいですか?</p>
</div>
<div class="row">
<div class="col-12 col-md-5 offset-md-1 mt10">
<a href="{{ url('regular_contract/info') }}" class="btn btn-lg btn-block btn-outline-success">戻る</a>
</div>
<div class="col-12 col-md-5 mt10">
<a href="{{ url('seal/reissue/reason/' . $contract->contract_id) }}" class="btn btn-lg btn-block btn-success">進む</a>
</div>
</div>
</section>
</main>
@endsection

View File

@ -0,0 +1,20 @@
@extends('layouts.app')
@section('content')
<main>
<header class="alert alert-success">
<h4 class="container">定期契約情報確認 > シール再発行</h4>
</header>
<section id="" class="container mt30 mb50">
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<h3 class="text-center alert-warning">
<span class="small">定期契約ID: {{ $contract->contract_id }}<br></span>
<span>{{ $contract->park_name }}</span>
</h3>
<p class="text-center"><br>こちらのシールの再発行準備が整いました。<br>上記駐輪場にてシールをお受け取りください。</p>
</div>
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<a href="{{ url('mypage') }}" class="btn btn-lg btn-block btn-outline-success">マイページへ戻る</a>
</div>
</section>
</main>
@endsection

View File

@ -0,0 +1,86 @@
@extends('layouts.app')
@section('content')
<main>
<header class="alert alert-success">
<h4 class="container">ユーザー情報確認 > シール再発行理由</h4>
</header>
@if ($errors->any())
<div class="alert alert-danger text-center">
@foreach ($errors->all() as $error)
<div>{{ $error }}</div>
@endforeach
</div>
@endif
<section class="container mt30 mb50">
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<h2 class="text-center alert-success">再発行手続き</h2>
</div>
<form method="POST" action="{{ url('seal/reissue/complete/' . $contract_id) }}">
@csrf
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<div class="mb-4">
<div class="form-check">
<input class="form-check-input" type="radio" name="reason" id="reason1" value="自動車の買い換え">
<label class="form-check-label" for="reason1">自動車の買い換え</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reason" id="reason2" value="汚損">
<label class="form-check-label" for="reason2">汚損</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reason" id="reason3" value="盗難">
<label class="form-check-label" for="reason3">盗難</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="reason" id="reason4" value="その他">
<label class="form-check-label" for="reason4">その他</label>
</div>
</div>
<div class="mb-4" id="other-reason-area" style="display: none;">
<textarea class="form-control" name="other_reason" rows="4" maxlength="255"
placeholder="その他の場合、こちらへ理由をご入力ください" style="resize: none;"></textarea>
<div class="text-right small"><span id="char-count">0</span>/255</div>
</div>
<div class="mb-4">
【再発行に関する注意事項】<br>
2回以上の再発行には別途手続きが必要です。<br>
紛失にはご注意ください。
</div>
</div>
<div class="row">
<div class="col-12 col-md-5 offset-md-1 mt10">
<a href="{{ url('seal/reissue/' . $contract_id) }}" class="btn btn-lg btn-block btn-outline-success">戻る</a>
</div>
<div class="col-12 col-md-5 mt10">
<button type="submit" class="btn btn-lg btn-block btn-success">進む</button>
</div>
</div>
</form>
</section>
</main>
<script>
document.addEventListener('DOMContentLoaded', function() {
// ラジオボタンの選択でテキストエリア表示切替
const radios = document.querySelectorAll('input[name="reason"]');
const otherArea = document.getElementById('other-reason-area');
radios.forEach(radio => {
radio.addEventListener('change', function() {
if (this.value === 'その他') {
otherArea.style.display = '';
} else {
otherArea.style.display = 'none';
}
});
});
// 文字数カウント
const textarea = document.querySelector('textarea[name="other_reason"]');
const charCount = document.getElementById('char-count');
if (textarea) {
textarea.addEventListener('input', function() {
charCount.textContent = this.value.length;
});
}
});
</script>
@endsection

View File

@ -16,7 +16,7 @@ return null;
@endphp @endphp
<main> <main>
<header class="alert alert-success"> <header class="alert alert-success">
<h4 class="container">定期契約情報 > 定期契約情報を確認する</h4> <h4 class="container">契約更新 > 定期契約を更新する</h4>
</header> </header>
<section class="container mt30 mb50"> <section class="container mt30 mb50">
@if(count($contracts) > 0) @if(count($contracts) > 0)
@ -294,7 +294,6 @@ return null;
</section> </section>
</main> </main>
@endsection
<!-- 解約についてモーダル --> <!-- 解約についてモーダル -->
<div class="modal fade" id="cancelModal" tabindex="-1" aria-labelledby="cancelModalLabel" aria-hidden="true"> <div class="modal fade" id="cancelModal" tabindex="-1" aria-labelledby="cancelModalLabel" aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
@ -318,4 +317,5 @@ return null;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
} }
</style> </style>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
@endsection

View File

@ -3,9 +3,9 @@
@section('content') @section('content')
<main> <main>
@if (session('success')) @if (session('success'))
<div class="alert alert-success"> <div class="alert alert-success">
{{ session('success') }} {{ session('success') }}
</div> </div>
@endif @endif
<header class="alert alert-success"> <header class="alert alert-success">
<h4 class="container">ユーザー情報確認 > ユーザー情報</h4> <h4 class="container">ユーザー情報確認 > ユーザー情報</h4>
@ -87,9 +87,9 @@
</div> </div>
<div class="col-12 col-lg-6 mb10"> <div class="col-12 col-lg-6 mb10">
@if(!empty($user->photo_filename1)) @if(!empty($user->photo_filename1))
<h3><img src="{{ asset('storage/photo/' . $user->photo_filename1) }}"></h3> <h3><img src="{{ asset('storage/photo/' . $user->photo_filename1) }}"></h3>
@else @else
<h3></h3> <h3></h3>
@endif @endif
</div> </div>
<div class="col-12 col-md-3 offset-0 offset-md-2"> <div class="col-12 col-md-3 offset-0 offset-md-2">
@ -97,9 +97,9 @@
</div> </div>
<div class="col-12 col-lg-6 mb10"> <div class="col-12 col-lg-6 mb10">
@if(!empty($user->photo_filename2)) @if(!empty($user->photo_filename2))
<h3><img src="{{ asset('storage/photo/' . $user->photo_filename2) }}"></h3> <h3><img src="{{ asset('storage/photo/' . $user->photo_filename2) }}"></h3>
@else @else
<h3></h3> <h3></h3>
@endif @endif
</div> </div>
<div class="col-12 col-md-3 offset-0 offset-md-2"> <div class="col-12 col-md-3 offset-0 offset-md-2">
@ -114,6 +114,9 @@
<div class="col-12 col-md-5 mt10"> <div class="col-12 col-md-5 mt10">
<a class="btn btn-lg btn-block btn-outline-success" href="{{ url('/user/withdraw') }}">退会する</a> <a class="btn btn-lg btn-block btn-outline-success" href="{{ url('/user/withdraw') }}">退会する</a>
</div> </div>
<div class="col-12 col-md-4 offset-0 offset-md-4 mt50 mb50">
<a class="btn btn-lg btn-block btn-success" href="{{ url('/user/tag_reissue') }}">タグの再発行を行う</a>
</div>
</form> </form>
</section> </section>
</main> </main>

View File

@ -0,0 +1,83 @@
@extends('layouts.app')
@section('content')
<main>
<header class="alert alert-success">
<h4 class="container">ユーザー情報確認 > タグ再発行申請</h4>
</header>
<section id="" class="container mt30 mb50">
<div class="alert alert-success text-center pt20 pb10 mb30">
<h5>タグ再発行を行うお客様の情報をご確認ください。</h5>
<p>住所、電話番号、メールアドレス等に変更がある場合、再発行を申請する前にユーザー情報確認から<br class="pc">お客様の情報を最新状態へ更新をお願いいたします。</p>
</div>
<div class="row">
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_name">お名前</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_name }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_phonetic">フリガナ</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_phonetic }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_gender">性別</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_gender ?? '未入力' }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_regident">居住所</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_regident_zip }}{{ $user->user_regident_pre }}{{ $user->user_regident_city }}{{ $user->user_regident_add }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_homephone">自宅電話番号</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_homephone ?? '未入力' }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_mobile">携帯電話番号</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_mobile ?? '未入力' }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_primemail">メールアドレス</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_primemail }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_submail">予備メールアドレス</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3>{{ $user->user_submail ?? '未入力' }}</h3>
</div>
<div class="col-12 col-md-3 offset-0 offset-md-1">
<label for="user_pass">パスワード</label>
</div>
<div class="col-12 col-lg-6 mb10">
<h3></h3>
</div>
<div class="col-12 col-md-5 offset-0 offset-md-1 mt10">
<a href="{{ url('/user/edit') }}" class="btn btn-lg btn-block btn-success">ユーザー情報を変更する</a>
</div>
<div class="col-12 col-md-5 mt10">
<a href="{{ url('/user/tag_reissue/complete') }}" class="btn btn-lg btn-block btn-outline-success">再発行申請する</a>
</div>
<div class="col-12 col-md-6 offset-0 offset-md-3 mt50 mb50">
<a href="{{ url('/mypage') }}" class="btn btn-lg btn-block btn-outline-success">マイページへ戻る</a>
</div>
</div>
</section>
</main>
@endsection

View File

@ -0,0 +1,17 @@
@extends('layouts.app')
@section('content')
<main>
<header class="alert alert-success">
<h4 class="container">ユーザー情報確認 > タグ再発行申請完了</h4>
</header>
<div class="row">
<div class="col-12 col-md-8 offset-0 offset-md-2 mt-4 mb30">
<h3 class="text-center">タグの再発行申請が完了しました。</h3>
<p class="mt30 text-center">現在オペレーターが確認中です。<br>タグの再発行までいましばらくお待ちください。</p>
<div class="col-12 col-md-6 offset-0 offset-md-3 mt50 mb50">
<a href="{{ url('/mypage') }}" class="btn btn-lg btn-block btn-outline-success">マイページへ戻る</a>
</div>
</div>
</div>
</main>
@endsection

View File

@ -6,7 +6,7 @@
</header> </header>
<section id="" class="container mt30 mb50"> <section id="" class="container mt30 mb50">
<div class="col-12 col-md-8 offset-0 offset-md-2 mb30"> <div class="col-12 col-md-8 offset-0 offset-md-2 mb30">
<h3 class="text-center alert-success">お知らせ一覧</h3> <h3 class="text-center alert-success">過去のお知らせ</h3>
</div> </div>
<div class="row"> <div class="row">
@forelse($informations as $information) @forelse($informations as $information)

View File

@ -16,11 +16,13 @@ use App\Http\Controllers\UserInfoController;
use App\Http\Controllers\UserEditController; use App\Http\Controllers\UserEditController;
use App\Http\Controllers\UserEditConfirmController; use App\Http\Controllers\UserEditConfirmController;
use App\Http\Controllers\UserWithdrawController; use App\Http\Controllers\UserWithdrawController;
use App\Http\Controllers\UserTagReissueController;
use App\Http\Controllers\RegularContractController; use App\Http\Controllers\RegularContractController;
use App\Http\Controllers\RegularContractCreateController; use App\Http\Controllers\RegularContractCreateController;
use App\Http\Controllers\ParkingSearchController; use App\Http\Controllers\ParkingSearchController;
use App\Http\Controllers\ParkWaitlistController; use App\Http\Controllers\ParkWaitlistController;
use App\Http\Controllers\ReceiptController; use App\Http\Controllers\ReceiptController;
use App\Http\Controllers\SealReissueController;
use App\Http\Controllers\ParkDetailController; use App\Http\Controllers\ParkDetailController;
use App\Http\Controllers\UserInformationController; use App\Http\Controllers\UserInformationController;
@ -90,6 +92,10 @@ Route::get('/user/edit/verify', [UserEditConfirmController::class, 'verify'])->n
Route::get('/user/withdraw', [UserWithdrawController::class, 'showConfirm'])->name('user.withdraw'); Route::get('/user/withdraw', [UserWithdrawController::class, 'showConfirm'])->name('user.withdraw');
Route::post('/user/withdraw/confirm', [UserWithdrawController::class, 'withdraw'])->name('user.withdraw.confirm'); 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'); Route::get('regular_contract/info', [RegularContractController::class, 'showInfo'])->name('regular_contract.info');
@ -98,6 +104,11 @@ Route::get('receipt/input/{contract_id}', [ReceiptController::class, 'input'])->
Route::get('receipt/download/{contract_id}', [ReceiptController::class, 'download'])->name('receipt.download'); Route::get('receipt/download/{contract_id}', [ReceiptController::class, 'download'])->name('receipt.download');
Route::post('receipt/issue/{contract_id}', [ReceiptController::class, 'issue']); 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('regular_contract/create', [RegularContractCreateController::class, 'show'])->name('regular_contract.create');
Route::get('/api/park-detail/{park_id}', [ParkDetailController::class, 'show']); Route::get('/api/park-detail/{park_id}', [ParkDetailController::class, 'show']);