diff --git a/app/Http/Controllers/Admin/ContractAllowableCityController.php b/app/Http/Controllers/Admin/ContractAllowableCityController.php index eab1a7e..f203947 100644 --- a/app/Http/Controllers/Admin/ContractAllowableCityController.php +++ b/app/Http/Controllers/Admin/ContractAllowableCityController.php @@ -17,79 +17,84 @@ class ContractAllowableCityController extends Controller * 一覧表示 */ public function list(Request $request) -{ - $inputs = $request->all(); - $inputs['isMethodPost'] = $request->isMethod('post'); + { + $inputs = $request->all(); + $inputs['isMethodPost'] = $request->isMethod('post'); - // 解除処理 - if ($request->isMethod('post') && $request->input('action') === 'unlink') { - $query = ContractAllowableCity::query(); + // 解除処理 + if ($request->isMethod('post') && $request->input('action') === 'unlink') { + // バリデーション:解除条件が1つも入力されていない場合はエラー + if ( + !$request->filled('contract_allowable_city_id') + && !$request->filled('city_id') + && !$request->filled('contract_allowable_city_name') + && !$request->filled('park_id') + ) { + return back()->withErrors(['解除条件を1つ以上入力してください。']); + } - if ($request->filled('contract_allowable_city_id')) { - $query->where('contract_allowable_city_id', $request->contract_allowable_city_id); - } - if ($request->filled('city_id')) { - $query->where('city_id', $request->city_id); - } - if ($request->filled('contract_allowable_city_name')) { - $query->where('contract_allowable_city_name', 'like', '%' . $request->contract_allowable_city_name . '%'); - } - if ($request->filled('park_id')) { - $query->where('park_id', $request->park_id); + $query = ContractAllowableCity::query(); + + if ($request->filled('contract_allowable_city_id')) { + $query->where('contract_allowable_city_id', $request->contract_allowable_city_id); + } + if ($request->filled('city_id')) { + $query->where('city_id', $request->city_id); + } + if ($request->filled('contract_allowable_city_name')) { + $query->where('contract_allowable_city_name', 'like', '%' . $request->contract_allowable_city_name . '%'); + } + if ($request->filled('park_id')) { + $query->where('park_id', $request->park_id); + } + + // 推荐:直接批量删除 + $count = $query->delete(); + return redirect()->route('contract_allowable_cities')->with('success', '解除しました'); } - $records = $query->get(); - foreach ($records as $record) { - $record->delete(); - } + // 通常の絞り込み処理 + $list = ContractAllowableCity::search($inputs); - return redirect()->route('contract_allowable_cities')->with('success', '解除しました'); + return view('admin.contract_allowable_cities.list', [ + 'list' => $list, + 'inputs' => $inputs, + 'sort' => $inputs['sort'] ?? '', + 'sort_type' => $inputs['sort_type'] ?? '', + 'cityList' => City::getList(), + 'parkList' => Park::getList(), + ]); } - // 通常の絞り込み処理 - $list = ContractAllowableCity::search($inputs); - - return view('admin.contract_allowable_cities.list', [ - 'list' => $list, - 'inputs' => $inputs, - 'sort' => $inputs['sort'] ?? '', - 'sort_type' => $inputs['sort_type'] ?? '', - 'cityList' => City::getList(), - 'parkList' => Park::getList(), - ]); -} - - /** * 新規登録 */ public function add(Request $request) { if ($request->isMethod('post')) { - $request->validate([ + $validated = $request->validate([ 'city_id' => 'required|integer', 'contract_allowable_city_name' => 'required|string|max:20', 'park_id' => 'required|integer', 'same_district_flag' => 'required|integer', ]); - $data = $request->all(); - $data['operator_id'] = Auth::user()->ope_id; + $validated['operator_id'] = Auth::user()->ope_id; - ContractAllowableCity::create($data); + ContractAllowableCity::create($validated); - return redirect()->route('contract_allowable_cities')->with('success', '登録しました'); + return redirect()->route('contract_allowable_cities') + ->with('success', '登録しました。'); } - return view('admin.contract_allowable_cities.add', [ - 'record' => null, - 'cityList' => City::getList(), - 'parkList' => Park::getList(), - 'contractAllowableCityList' => ContractAllowableCity::getList(), - 'mode' => 'add' + return view('admin.contract_allowable_cities.add', [ + 'record' => null, + 'cityList' => City::getList(), + 'parkList' => Park::getList(), ]); } + /** * 編集 */ @@ -97,32 +102,34 @@ class ContractAllowableCityController extends Controller { $record = ContractAllowableCity::getByPk($id); if (!$record) { - return redirect()->route('contract_allowable_cities')->with('error', 'データが存在しません'); + return redirect()->route('contract_allowable_cities') + ->with('error', 'データが存在しません'); } if ($request->isMethod('post')) { - $request->validate([ + $validated = $request->validate([ 'city_id' => 'required|integer', 'contract_allowable_city_name' => 'required|string|max:20', 'park_id' => 'required|integer', 'same_district_flag' => 'required|integer', ]); - $record->fill($request->all()); + $record->fill($validated); $record->operator_id = Auth::user()->ope_id; $record->save(); - return redirect()->route('contract_allowable_cities')->with('success', '更新しました'); + return redirect()->route('contract_allowable_cities') + ->with('success', '更新しました。'); } return view('admin.contract_allowable_cities.edit', [ - 'record' => $record, - 'cities' => City::getList(), - 'parks' => Park::getList(), - 'mode' => 'edit' + 'record' => $record, + 'cityList' => City::getList(), + 'parkList' => Park::getList(), ]); } + /** * 詳細参照(表示のみ) */ @@ -142,16 +149,29 @@ class ContractAllowableCityController extends Controller } /** - * 一括削除 + * 一括削除(単一・複数対応) */ public function delete(Request $request) { - if ($request->has('id')) { - ContractAllowableCity::deleteByPk($request->id); - return redirect()->route('contract_allowable_cities')->with('success', '削除しました'); - } + // バリデーション:'id'は必須、配列の場合は各要素が整数 + $request->validate([ + 'id' => 'required', + 'id.*' => 'integer', + ]); - return redirect()->route('contract_allowable_cities')->with('error', '削除対象が見つかりません'); + // idを配列化(単一でも複数でも対応) + $ids = (array)$request->input('id'); + + // 削除処理 + // ContractAllowableCity::destroy($ids) が使える場合 + $deleted = ContractAllowableCity::destroy($ids); + + // 削除件数でメッセージ分岐 + if ($deleted > 0) { + return redirect()->route('contract_allowable_cities')->with('success', '削除しました。'); + } else { + return redirect()->route('contract_allowable_cities')->with('error', '削除に失敗しました。'); + } } /** diff --git a/app/Http/Controllers/Admin/JurisdictionParkingController.php b/app/Http/Controllers/Admin/JurisdictionParkingController.php index a2f24d9..2308e5d 100644 --- a/app/Http/Controllers/Admin/JurisdictionParkingController.php +++ b/app/Http/Controllers/Admin/JurisdictionParkingController.php @@ -26,19 +26,33 @@ class JurisdictionParkingController extends Controller { if ($request->isMethod('post')) { $validated = $request->validate([ - 'jurisdiction_parking_name' => 'required|string|max:255', - 'operator_id' => 'nullable|integer', - 'park_id' => 'nullable|integer', + 'jurisdiction_parking_name' => [ + 'required', + 'string', + 'max:20', + ], + 'ope_id' => [ + 'required', + ], + 'park_id' => [ + 'required', + ], + 'operator_id' => [ + 'nullable', + 'integer', + ], ]); JurisdictionParking::create($validated); - return redirect()->route('jurisdiction_parkings')->with('success', '登録しました'); + + return redirect()->route('jurisdiction_parkings') + ->with('success', '登録しました。'); } $parks = Park::pluck('park_name', 'park_id'); - $operators = Ope::pluck('ope_name', 'ope_id'); + $opes = Ope::pluck('ope_name', 'ope_id'); - return view('admin.jurisdiction_parkings.add', compact('parks', 'operators')); + return view('admin.jurisdiction_parkings.add', compact('parks', 'opes')); } @@ -48,14 +62,27 @@ class JurisdictionParkingController extends Controller if ($request->isMethod('post')) { $validated = $request->validate([ - 'jurisdiction_parking_name' => 'required|string|max:255', - 'ope_id' => 'nullable|integer', - 'park_id' => 'nullable|integer', - 'operator_id' => 'nullable|integer', + 'jurisdiction_parking_name' => [ + 'required', + 'string', + 'max:20', + ], + 'ope_id' => [ + 'required', + ], + 'park_id' => [ + 'required', + ], + 'operator_id' => [ + 'nullable', + 'integer', + ], ]); $record->update($validated); - return redirect()->route('jurisdiction_parkings')->with('success', '更新しました'); + + return redirect()->route('jurisdiction_parkings') + ->with('success', '更新しました。'); } $parks = Park::pluck('park_name', 'park_id'); @@ -67,12 +94,22 @@ class JurisdictionParkingController extends Controller public function delete(Request $request) { - if ($request->has('pk')) { - JurisdictionParking::destroy($request->input('pk')); - return redirect()->route('jurisdiction_parkings')->with('success', '削除しました'); - } + $request->validate([ + 'pk' => 'required', + 'pk.*' => 'integer', // 各要素が整数であることを確認 + ]); - return redirect()->route('jurisdiction_parkings')->with('error', '削除対象が見つかりません'); + $ids = (array) $request->input('pk'); // 配列として取得 + + $deleted = JurisdictionParking::destroy($ids); + + if ($deleted > 0) { + return redirect()->route('jurisdiction_parkings') + ->with('success', '削除しました。'); + } else { + return redirect()->route('jurisdiction_parkings') + ->with('error', '削除に失敗しました。'); + } } public function info(Request $request, $jurisdiction_parking_id) diff --git a/app/Http/Controllers/Admin/PrintAreaController.php b/app/Http/Controllers/Admin/PrintAreaController.php index 98a48ee..a086544 100644 --- a/app/Http/Controllers/Admin/PrintAreaController.php +++ b/app/Http/Controllers/Admin/PrintAreaController.php @@ -37,7 +37,7 @@ class PrintAreaController extends Controller $validated['operator_id'] = auth()->id(); // 現在のログインユーザーを記録 PrintArea::create($validated); - return redirect()->route('print_areas')->with('success', '登録しました'); + return redirect()->route('print_areas')->with('success', '登録しました。'); } $parks = Park::pluck('park_name', 'park_id'); @@ -58,7 +58,7 @@ class PrintAreaController extends Controller $validated['operator_id'] = auth()->id(); // 更新者を記録 $record->update($validated); - return redirect()->route('print_areas')->with('success', '更新しました'); + return redirect()->route('print_areas')->with('success', '更新しました。'); } $parks = Park::pluck('park_name', 'park_id'); @@ -72,15 +72,26 @@ class PrintAreaController extends Controller return view('admin.print_areas.info', compact('record')); } - // 削除(複数可) public function delete(Request $request) { - if ($request->has('pk')) { - PrintArea::destroy($request->input('pk')); - return redirect()->route('print_areas')->with('success', '削除しました'); - } + // バリデーション:'pk'は必須、配列の場合は各要素が整数 + $request->validate([ + 'pk' => 'required', + 'pk.*' => 'integer', + ]); - return redirect()->route('print_areas')->with('error', '削除対象が見つかりません'); + // pkを配列化(単一でも配列でも対応) + $ids = (array)$request->input('pk'); + + // 削除処理 + $deleted = PrintArea::destroy($ids); + + // 削除結果によってメッセージを分岐 + if ($deleted > 0) { + return redirect()->route('print_areas')->with('success', '削除しました。'); + } else { + return redirect()->route('print_areas')->with('error', '削除に失敗しました。'); + } } // CSVエクスポート diff --git a/resources/js/app.js b/resources/js/app.js index 0822146..d409034 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -185,8 +185,8 @@ $('#register_edit').on('click', function (e) { $('#delete_edit').on('click', function (e) { e.preventDefault(); $.confirm({ - title: '確認ダイアログ', - content: 'このレコードを削除してよろしいですか?', + title: '削除ダイアログ', + content: '!削除してよろしいですか?', buttons: { ok: { text: "はい", diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php index efbef22..3fdbdb2 100644 --- a/resources/lang/ja/validation.php +++ b/resources/lang/ja/validation.php @@ -387,6 +387,10 @@ return [ 'use_flag' => '契約内容フラグ', 'terms_created_at' => '契約内容作成日', 'terms_updated_at' => '契約内容更新日', +//SWA-98 + 'contract_allowable_city_id' => '契約許容市区マスタID', + 'contract_allowable_city_name' => '許容市区名', + 'same_district_flag' => '隣接区フラグ', ], ]; diff --git a/resources/views/admin/contract_allowable_cities/_form.blade.php b/resources/views/admin/contract_allowable_cities/_form.blade.php index bf04c40..c13ae22 100644 --- a/resources/views/admin/contract_allowable_cities/_form.blade.php +++ b/resources/views/admin/contract_allowable_cities/_form.blade.php @@ -1,94 +1,111 @@ -@php - $isEdit = $mode === 'edit'; - $isInfo = $mode === 'info'; -@endphp +