<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class ContractorController extends Controller
{
    /**
     * 一覧表示（GET/POST）
     */
    public function list(Request $request)
    {
        $q = DB::table('regular_contract as rc')
            ->select([
                'rc.contract_id',
                'rc.contract_qr_id',
                'rc.user_id',
                'rc.user_categoryid',
                'rc.park_id',
                'rc.contract_created_at',
                'rc.contract_periods',
                'rc.contract_periode',
                'rc.tag_qr_flag',
                'rc.contract_flag',
                'rc.contract_cancel_flag',
                'rc.contract_payment_day',
                'rc.contract_money',
                'rc.billing_amount',
                'rc.contract_permission',
                'rc.contract_manual',
                'rc.contract_notice',
                'p.park_name',
                'u.user_name',
                'u.user_phonetic',
                'u.user_mobile',
                'u.user_homephone',
                'u.user_primemail',
                'u.user_gender',
                'u.user_birthdate',
                'u.user_regident_zip',
                'u.user_regident_pre',
                'u.user_regident_city',
                'u.user_regident_add',
                'u.user_relate_zip',
                'u.user_relate_pre',
                'u.user_relate_city',
                'u.user_relate_add',
                'u.user_graduate',
                'u.user_workplace',
                'u.user_school',
                'u.user_remarks',
                // 他に必要なカラムもここに追加
            ])
            ->leftJoin('park as p', 'rc.park_id', '=', 'p.park_id')
            ->leftJoin('user as u', 'rc.user_id', '=', 'u.user_id');

        // 検索条件例
        if ($request->filled('contract_id')) {
            $q->where('rc.contract_id', $request->input('contract_id'));
        }
        if ($request->filled('name')) {
            $q->where('u.user_name', 'like', '%' . $request->input('name') . '%');
        }

        // タグ・QR（完全一致、空白なら絞り込まない）
        if ($request->filled('tag_qr_flag') && $request->input('tag_qr_flag') !== '') {
            $q->where('rc.tag_qr_flag', $request->input('tag_qr_flag'));
        }

        // ソート処理
        $sort = $request->input('sort', 'rc.contract_id');
        $sortType = $request->input('sort_type', 'desc');
        // カラム名のバリデーション（必要に応じて拡張）
        $allowSorts = ['rc.contract_id'];
        if (!in_array($sort, $allowSorts)) {
            $sort = 'rc.contract_id';
        }
        $sortType = ($sortType === 'asc') ? 'asc' : 'desc';

        $rows = $q->orderBy($sort, $sortType)->paginate(20)->withQueryString();

        return view('admin.contractor.list', compact('rows', 'sort', 'sortType'));
    }

    /**
     * 詳細表示
     */
    public function info($id)
    {
        $contract = DB::table('regular_contract as rc')
            ->select([
                'rc.*',
                'p.park_name',
                'u.user_name',
                'u.user_phonetic',
                'u.user_mobile',
                'u.user_homephone',
                'u.user_primemail',
                'u.user_gender',
                'u.user_birthdate',
                'u.user_regident_city',
            ])
            ->leftJoin('park as p', 'rc.park_id', '=', 'p.park_id')
            ->leftJoin('user as u', 'rc.user_id', '=', 'u.user_id')
            ->where('rc.contract_id', $id)
            ->first();

        if (!$contract) { abort(404); }

        return view('admin.contractor.info', compact('contract'));
    }
}
