krgm.so-manager-dev.com/app/Http/Controllers/Admin/PsectionController.php

99 lines
2.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('post')) {
$validated = $request->validate([
'psection_id' => 'required|integer|unique:psection,psection_id',
'psection_subject' => 'required|string|max:255',
]);
Psection::create($validated);
return redirect()->route('psection')->with('success', '車種区分を追加しました');
}
return view('admin.psection.add');
}
// 編集
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('psection')->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)
{
$ids = $request->input('pk', []);
if (!empty($ids)) {
Psection::whereIn('psection_id', $ids)->delete();
return redirect()->route('psection')->with('success', '削除しました');
}
return redirect()->route('psection')->with('error', '削除対象を選択してください');
}
}