praakreditasi/app/Http/Controllers/KaryawanController.php
2026-04-30 19:27:37 +07:00

57 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\Karyawan;
class KaryawanController extends Controller
{
public function listData(Request $request){
$search = trim($request->input('search'));
$page = (int) $request->input('page', 1);
$perPage = (int) $request->input('per_page', 10);
if ($page < 1) $page = 1;
if ($perPage < 1) $perPage = 10;
if ($perPage > 50) $perPage = 50;
$validator = Validator::make(
['search' => $search, 'page' => $page, 'per_page' => $perPage],
['search' => 'required|min:2', 'page' => 'integer|min:1', 'per_page' => 'integer|min:1|max:50']
);
if ($validator->fails()) {
return response()->json(['error' => 0, 'data' => [], 'meta' => [
'page' => $page,
'per_page' => $perPage,
'total' => 0,
'last_page' => 1,
]]);
}
$paginator = Karyawan::where('statusenabled', true)->where('kedudukanfk', 1)
->when($search, function($q) use ($search) {
$q->where(function($q2) use ($search){
$q2->where('namalengkap', 'ILIKE', "%$search%")
->orWhere('nip_pns', 'ILIKE', "%$search%");
});
})
->select('id', 'namalengkap')
->orderBy('namalengkap')
->paginate($perPage, ['*'], 'page', $page);
return response()->json([
'error' => 0,
'data' => $paginator->items(),
'meta' => [
'page' => $paginator->currentPage(),
'per_page' => $paginator->perPage(),
'total' => $paginator->total(),
'last_page' => $paginator->lastPage(),
],
]);
}
}