krgm.so-manager-dev.com/app/Http/Controllers/Admin/ContractorListController.php
ou.zaikou e1629913bd 初回コミット
Signed-off-by:  ou.zaikou<caihaoweng@gmail.com>
2025-08-21 23:09:40 +09:00

117 lines
3.9 KiB
PHP
Raw Permalink 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 Illuminate\Support\Facades\DB;
class ContractorListController 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',
// userテーブルの正しいカラム名
'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.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'));
}
}