<?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', __('削除するデータを選択してください。'));
    }

}
