multiple bug fixes including sender ID filtering

This commit is contained in:
Kwesi Banson Jnr
2026-04-16 14:22:04 +00:00
parent 72180de8e4
commit 5dbe76dbd4
380 changed files with 175085 additions and 203 deletions

View File

@@ -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');