krgm.so-manager-dev.com/app/Http/Controllers/Admin/PsectionController.php
kin.rinzen 2b8f80fe50
All checks were successful
Deploy main / deploy (push) Successful in 22s
「指摘対応」車種区分マスタ
2025-10-10 17:42:53 +09:00

129 lines
3.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Psection;
class PsectionController extends Controller
{
// 一覧画面
public function list(Request $request)
{
$inputs = $request->all();
// ソート可能なカラム
$allowedSortColumns = ['psection_id', 'psection_subject'];
// ソート情報の取得
$sortColumn = $inputs['sort'] ?? 'psection_id';
$sortType = strtolower($inputs['sort_type'] ?? 'asc');
$query = \App\Models\Psection::query();
if (in_array($sortColumn, $allowedSortColumns, true)) {
if (!in_array($sortType, ['asc', 'desc'], true)) {
$sortType = 'asc';
}
$query->orderBy($sortColumn, $sortType);
}
// ページネーション20件
$list = $query->paginate(20);
return view('admin.psection.list', [
'list' => $list,
'sort' => $sortColumn,
'sort_type' => $sortType,
]);
}
/**
* 車種区分マスタ:新規登録(画面/処理)
*/
public function add(Request $request)
{
if ($request->isMethod('get')) {
// GET新規画面を表示
return view('admin.psection.add', [
'isEdit' => false, // フォーム判定用
'record' => new Psection(), // ← ★★ これを渡すことで $record が使える
]);
}
// POSTバリデーション
$validated = $request->validate([
// 'psection_id' は自動採番
'psection_subject' => 'required|string|max:255',
]);
// 登録処理
Psection::create($validated);
// 完了メッセージ+一覧へ戻る
return redirect()->route('psections')->with('success', '登録しました。');
}
/**
* 車種区分マスタ:編集(画面/処理)
*/
public function edit(Request $request, $id)
{
// 主キーで検索見つからない場合は404
$record = Psection::findOrFail($id);
if ($request->isMethod('get')) {
// 編集画面表示
return view('admin.psection.edit', [
'isEdit' => true, // ← ★ Blade 側のフォームで新規/編集を判定するため
'record' => $record, // ← ★ _form.blade.php で使用する
]);
}
// POST時バリデーション
$validated = $request->validate([
'psection_subject' => 'required|string|max:255',
]);
// データ更新
$record->update($validated);
// 成功メッセージ & リダイレクト
return redirect()->route('psections')->with('success', '更新しました。');
}
/**
* 削除(単一/複数対応)
*/
public function delete(Request $request)
{
$ids = [];
// 単一削除(編集画面などからの削除ボタン)
if ($request->filled('id')) {
$ids[] = (int) $request->input('id');
}
// 一覧画面からの複数削除チェックボックス対応
if (is_array($request->input('pk'))) {
$ids = array_merge($ids, $request->input('pk'));
}
// 重複削除・無効値除去
$ids = array_values(array_unique(array_map('intval', $ids)));
// 削除対象がない場合
if (empty($ids)) {
return back()->with('error', '削除対象が選択されていません。');
}
// 削除実行
Psection::whereIn('psection_id', $ids)->delete();
// 完了メッセージ+リダイレクト
return redirect()->route('psections')->with('success', '削除しました。');
}
}