multiple bug fixes including sender ID filtering
This commit is contained in:
@@ -22,7 +22,7 @@ class SenderIdController extends Controller
|
||||
];
|
||||
return view('senderid.index', $data);
|
||||
}
|
||||
public function getSenderIdsJson(Request $request)
|
||||
public function getSenderIdsJsonBak(Request $request)
|
||||
{
|
||||
#$this->log_query();
|
||||
$senderid_arr = \DB::table('sender_ids')
|
||||
@@ -35,7 +35,7 @@ class SenderIdController extends Controller
|
||||
->paginate(15);
|
||||
|
||||
if($request->has('keyword')){
|
||||
|
||||
|
||||
$queries = [];
|
||||
$keyword = $request->keyword;
|
||||
$request->session()->put('current_user.senderid_keyword', $keyword);
|
||||
@@ -52,6 +52,76 @@ class SenderIdController extends Controller
|
||||
}
|
||||
return response()->json($senderid_arr);
|
||||
}
|
||||
function getSenderIdsJson(Request $request){
|
||||
$query = \DB::table('sender_ids')
|
||||
->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by')
|
||||
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
|
||||
->select(
|
||||
'sender_ids.id',
|
||||
'mno_name',
|
||||
'supplier_name',
|
||||
'sender_ids.senderid',
|
||||
'sender_ids.status',
|
||||
'sender_ids.remarks',
|
||||
'staffcreate.name AS createdBy',
|
||||
'sender_ids.direct_mno',
|
||||
'staffmodify.name AS modifiedBy'
|
||||
);
|
||||
|
||||
// 2. Handle Tabulator's Column Header Filters
|
||||
if ($request->has('filter')) {
|
||||
$filters = $request->input('filter');
|
||||
|
||||
// Map the Tabulator JS fields to the actual database table columns
|
||||
$columnMap = [
|
||||
'createdBy' => 'staffcreate.name',
|
||||
'modifiedBy' => 'staffmodify.name',
|
||||
'mno_name' => 'mno_name', // Add table prefixes here if needed
|
||||
'supplier_name' => 'supplier_name'
|
||||
];
|
||||
|
||||
foreach ($filters as $filter) {
|
||||
$field = $filter['field'];
|
||||
$value = $filter['value'];
|
||||
|
||||
// Determine the correct DB column. Default to sender_ids table to avoid 'ambiguous column' errors
|
||||
$dbColumn = $columnMap[$field] ?? 'sender_ids.' . $field;
|
||||
|
||||
// Securely bind the value using Laravel's active record (prevents SQL injection)
|
||||
$query->where($dbColumn, 'LIKE', '%' . $value . '%');
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Handle your existing Global Keyword Search (if you still have a global search box)
|
||||
if ($request->has('keyword')) {
|
||||
$keyword = $request->input('keyword');
|
||||
$request->session()->put('current_user.senderid_keyword', $keyword);
|
||||
|
||||
// Group the OR conditions in a closure so they don't break the Tabulator filters above
|
||||
$query->where(function($q) use ($keyword) {
|
||||
$q->where('sender_ids.senderid', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('sender_ids.status', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('mno_name', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('supplier_name', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('staffcreate.name', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('staffmodify.name', 'LIKE', "%{$keyword}%")
|
||||
->orWhere('sender_ids.direct_mno', 'LIKE', "%{$keyword}%");
|
||||
});
|
||||
}
|
||||
|
||||
// 4. Order and fetch the final Paginated results
|
||||
$query->orderBy('sender_ids.senderid', 'ASC');
|
||||
|
||||
// Grab Tabulator's requested page size, default to 15
|
||||
$perPage = $request->input('size', 15);
|
||||
$senderid_arr = $query->paginate($perPage);
|
||||
|
||||
// If using the global keyword, append it to the pagination links
|
||||
if ($request->has('keyword')) {
|
||||
$senderid_arr->appends(['keyword' => $request->keyword]);
|
||||
}
|
||||
return response()->json($senderid_arr);
|
||||
}
|
||||
public function create()
|
||||
{
|
||||
#$network_arr = Models\NetworkOps::pluck('name','country');
|
||||
|
||||
Reference in New Issue
Block a user