Compare commits
16 Commits
b4532dd76c
...
56c7ae8778
| Author | SHA1 | Date | |
|---|---|---|---|
| 56c7ae8778 | |||
| 7b2d8c4416 | |||
| 1ecaf6d46a | |||
| 23327a4ca3 | |||
| a34046b72a | |||
| 467ae8d055 | |||
| d2b631bbab | |||
| 8dc41b211c | |||
| 56ea54ab15 | |||
| 609faf58a4 | |||
| b18f4762bb | |||
| f389f1482a | |||
| 4f4a914b7d | |||
| d677aa232d | |||
| 70a0919746 | |||
| ecc7095818 |
@ -100,13 +100,13 @@ class RegularContractCreateController extends Controller
|
||||
// zoneテーブルデータを取得(psectionテーブルとJOINしてpsection_subjectも取得)
|
||||
$zones = DB::table('zone')
|
||||
->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()
|
||||
->groupBy('park_id');
|
||||
|
||||
// 空き予約マスタデータを取得
|
||||
$reserve = DB::table('reserve')
|
||||
->select('reserve_id', 'park_id', 'psection_id')
|
||||
->select('reserve_id', 'park_id', 'ptype_id', 'psection_id')
|
||||
->where('valid_flag', 1)
|
||||
->get()
|
||||
->groupBy('park_id');
|
||||
|
||||
96
app/Http/Controllers/SealReissueController.php
Normal file
96
app/Http/Controllers/SealReissueController.php
Normal 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-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-3-1', // マイページメニューの選択状態用
|
||||
'user_name' => $user_name ? $user_name : '', // ユーザー名(ヘッダー用)
|
||||
'contract' => $contract
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -23,6 +23,10 @@ class UserInformationController extends Controller
|
||||
->limit(10)
|
||||
->get();
|
||||
|
||||
\Log::info('お知らせ画面にアクセス', [
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
|
||||
return view('user_information.index', [
|
||||
'user_name' => $user_name, // ユーザー名(ヘッダー用)
|
||||
'informations' => $informations
|
||||
@ -44,6 +48,10 @@ class UserInformationController extends Controller
|
||||
->select('entry_date', 'user_information_history')
|
||||
->paginate(10);
|
||||
|
||||
\Log::info('過去のお知らせ画面にアクセス', [
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
|
||||
return view('user_information.history', [
|
||||
'user_name' => $user_name, // ユーザー名(ヘッダー用)
|
||||
'informations' => $informations
|
||||
|
||||
45
app/Http/Controllers/UserTagReissueController.php
Normal file
45
app/Http/Controllers/UserTagReissueController.php
Normal 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 : '', // ユーザー名(ヘッダー用)
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -9,6 +9,7 @@
|
||||
"php": "^8.2",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/tinker": "^2.10.1",
|
||||
"mpdf/mpdf": "^8.2",
|
||||
"simplesoftwareio/simple-qrcode": "^4.2"
|
||||
},
|
||||
"require-dev": {
|
||||
|
||||
417
composer.lock
generated
417
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "2c302bf3eb129a3df792a2c53a938458",
|
||||
"content-hash": "571741bd63db78c990a3a07320a20496",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@ -2213,6 +2213,239 @@
|
||||
],
|
||||
"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",
|
||||
"version": "3.10.1",
|
||||
@ -2611,6 +2844,56 @@
|
||||
],
|
||||
"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",
|
||||
"version": "1.9.3",
|
||||
@ -3375,6 +3658,78 @@
|
||||
},
|
||||
"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",
|
||||
"version": "4.2.0",
|
||||
@ -6430,66 +6785,6 @@
|
||||
},
|
||||
"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",
|
||||
"version": "v8.8.2",
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<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="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">
|
||||
|
||||
@ -89,18 +89,31 @@
|
||||
<td>
|
||||
@php
|
||||
$zonesForType = ($zones[$row->park_id] ?? collect())->where('psection_subject', $vehicle);
|
||||
@endphp
|
||||
@forelse ($zonesForType as $zone)
|
||||
@php
|
||||
// 空き台数計算
|
||||
$hasVacancy = false;
|
||||
foreach ($zonesForType as $zone) {
|
||||
$reserveCount = ($reserve[$row->park_id] ?? collect())
|
||||
->where('psection_id', $zone->psection_id)
|
||||
->where('ptype_id', $zone->ptype_id)
|
||||
->count();
|
||||
$vacancy = $zone->zone_tolerance - $zone->zone_number - $reserveCount;
|
||||
if ($vacancy > 0) {
|
||||
$hasVacancy = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 猶予期間判定
|
||||
$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;
|
||||
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;
|
||||
$month = $now->month;
|
||||
$startDay = (int)$grace->update_grace_period_start_date;
|
||||
@ -125,16 +138,17 @@
|
||||
}
|
||||
}
|
||||
@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>
|
||||
@elseif (!$inGrace)
|
||||
<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)
|
||||
<button class="btn btn-block btn-sm btn-outline-danger btn_103-table btn-popup" data-park-id="{{ $row->park_id }}">空き待ち申込</button>
|
||||
@endif
|
||||
@empty
|
||||
<span class="text-muted"></span>
|
||||
@endforelse
|
||||
@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>
|
||||
@endif
|
||||
@else
|
||||
<span class="text-muted"></span>
|
||||
@endif
|
||||
</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
|
||||
@ -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>
|
||||
@endif
|
||||
</div>
|
||||
@php
|
||||
$has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists();
|
||||
@endphp
|
||||
@if($has_receipt)
|
||||
@if($bg == 'alert-warning')
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@elseif($bg == 'alert-danger')
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@else
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@endif
|
||||
@else
|
||||
@if($bg == 'alert-warning')
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@elseif($bg == 'alert-danger')
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@else
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@endif
|
||||
@endif
|
||||
<div style="display: flex; gap: 6px;">
|
||||
@php
|
||||
$has_receipt = DB::table('inv_publish')->where('contract_id', $contract->contract_id)->exists();
|
||||
@endphp
|
||||
@if($has_receipt)
|
||||
@if($bg == 'alert-warning')
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@elseif($bg == 'alert-danger')
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@else
|
||||
<a href="{{ url('receipt/download/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書再発行</a>
|
||||
@endif
|
||||
@else
|
||||
@if($bg == 'alert-warning')
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-warning badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@elseif($bg == 'alert-danger')
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-danger badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@else
|
||||
<a href="{{ url('receipt/input/' . $contract->contract_id) }}" class="btn btn-outline-secondary badge-pill custom-rounded-btn" style="background: transparent;">領収書発行</a>
|
||||
@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>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -36,64 +36,79 @@
|
||||
</div>
|
||||
<!-- 空き台数・契約情報 -->
|
||||
<div class="mt-3">
|
||||
@foreach($zones as $zone)
|
||||
@php
|
||||
$vacant = $vacancyData[$zone->psection_id . '_' . $zone->ptype_subject] ?? 0;
|
||||
$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);
|
||||
}
|
||||
$zonesByPtype = $zones->groupBy('ptype_id');
|
||||
@endphp
|
||||
<div class="mb-2">
|
||||
<strong>{{ $zone->ptype_subject }}</strong><br>
|
||||
{{ $zone->psection_subject }}:空き {{ $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
|
||||
@foreach($zonesByPtype as $ptypeId => $zonesGroup)
|
||||
<div class="mb-3">
|
||||
<strong>{{ $zonesGroup->first()->ptype_subject }}</strong>
|
||||
<div style="display: flex; gap: 1em;">
|
||||
@foreach($zonesGroup as $zone)
|
||||
@php
|
||||
$vacant = $vacancyData[$zone->psection_id . '_' . $zone->ptype_subject] ?? 0;
|
||||
$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) {
|
||||
// 月またぎ
|
||||
// 前月の開始日~今月の終了日
|
||||
$prevMonth = $now->copy()->subMonth();
|
||||
$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));
|
||||
$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>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
27
resources/views/regular_contract/seal_reissue.blade.php
Normal file
27
resources/views/regular_contract/seal_reissue.blade.php
Normal 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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -16,7 +16,7 @@ return null;
|
||||
@endphp
|
||||
<main>
|
||||
<header class="alert alert-success">
|
||||
<h4 class="container">定期契約情報 > 定期契約情報を確認する</h4>
|
||||
<h4 class="container">契約更新 > 定期契約を更新する</h4>
|
||||
</header>
|
||||
<section class="container mt30 mb50">
|
||||
@if(count($contracts) > 0)
|
||||
@ -294,7 +294,6 @@ return null;
|
||||
</section>
|
||||
</main>
|
||||
|
||||
@endsection
|
||||
<!-- 解約についてモーダル -->
|
||||
<div class="modal fade" id="cancelModal" tabindex="-1" aria-labelledby="cancelModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
@ -318,4 +317,5 @@ return null;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
</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
|
||||
@ -3,9 +3,9 @@
|
||||
@section('content')
|
||||
<main>
|
||||
@if (session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
<header class="alert alert-success">
|
||||
<h4 class="container">ユーザー情報確認 > ユーザー情報</h4>
|
||||
@ -87,9 +87,9 @@
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 mb10">
|
||||
@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
|
||||
<h3></h3>
|
||||
<h3></h3>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-12 col-md-3 offset-0 offset-md-2">
|
||||
@ -97,9 +97,9 @@
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 mb10">
|
||||
@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
|
||||
<h3></h3>
|
||||
<h3></h3>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-12 col-md-3 offset-0 offset-md-2">
|
||||
@ -114,6 +114,9 @@
|
||||
<div class="col-12 col-md-5 mt10">
|
||||
<a class="btn btn-lg btn-block btn-outline-success" href="{{ url('/user/withdraw') }}">退会する</a>
|
||||
</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>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
83
resources/views/user/tag_reissue.blade.php
Normal file
83
resources/views/user/tag_reissue.blade.php
Normal 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
|
||||
17
resources/views/user/tag_reissue_complete.blade.php
Normal file
17
resources/views/user/tag_reissue_complete.blade.php
Normal 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
|
||||
@ -6,7 +6,7 @@
|
||||
</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>
|
||||
<h3 class="text-center alert-success">過去のお知らせ</h3>
|
||||
</div>
|
||||
<div class="row">
|
||||
@forelse($informations as $information)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -90,6 +92,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');
|
||||
|
||||
@ -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::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']);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user