krgm.so-manager-dev.com/app/Http/Controllers/Admin/PsectionController.php
kin.rinzen 63cbd8a05d
All checks were successful
Deploy main / deploy (push) Successful in 23s
駐輪分類マスタ画面修正
2025-09-16 17:43:14 +09:00

110 lines
3.3 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('post')) {
$validated = $request->validate([
// 'psection_id' は自動採番なので不要
'psection_subject' => 'required|string|max:255',
]);
Psection::create($validated);
return redirect()->route('psections')->with('success', '車室区分を追加しました');
}
// GET の場合は空のモデルを渡してフォームを表示
return view('admin.psection.add', ['psection' => new Psection()]);
}
// 編集
public function edit(Request $request, $id)
{
// 主キーで検索(見つからない場合は 404
$psection = Psection::findOrFail($id);
if ($request->isMethod('post')) {
// バリデーション
$validated = $request->validate([
'psection_subject' => 'required|string|max:255',
]);
// データ更新
$psection->update($validated);
// 成功メッセージ & リダイレクト
return redirect()->route('psections')->with('success', '車種区分を更新しました');
}
// 編集画面を表示
return view('admin.psection.edit', compact('psection'));
}
// 詳細(info)
public function info(Request $request, $id)
{
$psection = Psection::findOrFail($id);
return view('admin.psection.info', compact('psection'));
}
// 削除
public function delete(Request $request)
{
$arr_pk = $request->get('pk');
if (!is_array($arr_pk)) {
$arr_pk = [$arr_pk];
}
if ($arr_pk && count($arr_pk) > 0) {
if (Psection::whereIn('psection_id', $arr_pk)->delete()) {
return redirect()->route('psections')->with('success', __("削除が完了しました。"));
} else {
return redirect()->route('psections')->with('error', __('削除に失敗しました。'));
}
}
return redirect()->route('psections')->with('error', __('削除するデータを選択してください。'));
}
}