116 lines
3.8 KiB
PHP
116 lines
3.8 KiB
PHP
<?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'));
|
||
}
|
||
}
|