krgm.so-manager-dev.com/app/Http/Controllers/Admin/ReservationController.php
你的名字 c171a26f42
All checks were successful
Deploy main / deploy (push) Successful in 23s
【予約者一覧】【更新予定者一覧】絞り込みボダン修正
2025-09-26 18:33:13 +09:00

122 lines
5.0 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 Illuminate\Support\Facades\DB;
class ReservationController extends Controller
{
/**
* 予約者一覧表示
*/
public function list(Request $request)
{
$q = DB::table('reserve as r')
->select([
'r.user_id',
'u.user_name',
'u.user_phonetic',
'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_birthdate',
'u.user_gender',
'u.user_mobile',
'u.user_homephone',
'u.user_school',
'u.user_graduate',
'u.user_remarks',
'r.reserve_id',
'r.park_id',
'p.park_name',
'r.price_parkplaceid',
'r.psection_id',
DB::raw('ps.psection_subject as vehicle_type'),
DB::raw('ut.usertype_subject1 as user_category1'),
DB::raw('ut.usertype_subject2 as user_category2'),
DB::raw('ut.usertype_subject3 as user_category3'),
'r.reserve_date',
'r.reserve_reduction as reduction',
DB::raw('r.`800m_flag` as within_800m_flag'),
])
->leftJoin('user as u', 'r.user_id', '=', 'u.user_id')
->leftJoin('park as p', 'r.park_id', '=', 'p.park_id')
->leftJoin('psection as ps','r.psection_id','=','ps.psection_id')
->leftJoin('usertype as ut','u.user_categoryid','=','ut.user_categoryid');
// フィルター条件
if ($request->filled('park_id')) {
$q->where('r.park_id', $request->input('park_id'));
}
if ($request->filled('user_id')) {
$q->where('r.user_id', $request->input('user_id'));
}
// 利用者分類契約者一覧に合わせ、分類名1の完全一致を優先
if ($request->filled('user_category1')) {
$val = trim(mb_convert_kana($request->input('user_category1'), 'asKV'));
$q->where('ut.usertype_subject1', $val);
} elseif ($request->filled('user_categoryid')) {
// 既存互換ID指定も残す
$q->where('u.user_categoryid', $request->input('user_categoryid'));
}
if ($request->filled('user_tag_serial')) {
$q->where('u.user_tag_serial', 'like', '%' . $request->input('user_tag_serial') . '%');
}
if ($request->filled('user_tag_serial_64')) {
$q->where('u.user_tag_serial_64', 'like', '%' . $request->input('user_tag_serial_64') . '%');
}
if ($request->filled('user_phonetic')) {
$q->where('u.user_phonetic', 'like', '%' . $request->input('user_phonetic') . '%');
}
if ($request->filled('user_mobile')) {
$q->where(function($sub) use ($request) {
$sub->where('u.user_mobile', 'like', '%' . $request->input('user_mobile') . '%')
->orWhere('u.user_homephone', 'like', '%' . $request->input('user_mobile') . '%');
});
}
if ($request->filled('user_primemail')) {
$like = '%' . $request->input('user_primemail') . '%';
$q->where(function($w) use ($like){
$w->where('u.user_primemail','like',$like)
->orWhere('u.user_submail','like',$like);
});
}
if ($request->filled('user_workplace')) {
$q->where('u.user_workplace', 'like', '%' . $request->input('user_workplace') . '%');
}
if ($request->filled('user_school')) {
$q->where('u.user_school', 'like', '%' . $request->input('user_school') . '%');
}
// ソート(契約者一覧に合わせて許可する列を拡張)
$sort = $request->input('sort', 'reserve_id');
$sortType = $request->input('sort_type', 'asc');
$allow = [
'reserve_id' => 'r.reserve_id',
'user_id' => 'r.user_id',
'user_name' => 'u.user_name',
'park_id' => 'r.park_id',
'price_parkplaceid' => 'r.price_parkplaceid',
'psection_id' => 'r.psection_id',
'reserve_date' => 'r.reserve_date',
];
if (!isset($allow[$sort])) $sort = 'reserve_id';
$sortType = $sortType === 'desc' ? 'desc' : 'asc';
$rows = $q->orderBy($allow[$sort], $sortType)
->paginate(20)->withQueryString();
// 駐輪場リスト取得(必要なら)
$parks = DB::table('park')->select('park_id', 'park_name')->orderBy('park_name')->get();
return view('admin.reservation.list', compact('rows', 'sort', 'sortType', 'parks'));
}
}