'Master PitStop', ]); } public function data(Request $request) { $draw = $this->dtInt($request->input('draw'), 1); $start = $this->dtInt($request->input('start'), 0); $length = $this->dtInt($request->input('length'), 10); if ($length < 1) $length = 10; if ($length > 200) $length = 200; $search = trim((string) data_get($request->all(), 'search.value', '')); $baseNoSearch = MasterPitStopPraAkre::query() ->select(['id', 'nama', 'statusenabled']) ->orderBy('id'); $recordsTotal = (clone $baseNoSearch)->count(); $base = clone $baseNoSearch; if ($search !== '') { $base->where('nama', 'ILIKE', '%' . $search . '%'); } $recordsFiltered = $search === '' ? $recordsTotal : (clone $base)->count(); $rows = $base ->orderBy('nama') ->offset($start) ->limit($length) ->get(); $data = $rows->map(function ($r) { return [ 'id' => (int) $r->id, 'nama' => (string) ($r->nama ?? '-'), 'statusenabled' => (bool) $r->statusenabled, ]; })->values(); return response()->json([ 'draw' => $draw, 'recordsTotal' => $recordsTotal, 'recordsFiltered' => $recordsFiltered, 'data' => $data, ]); } public function store(Request $request) { $validator = Validator::make($request->all(), [ 'nama' => 'required|string|max:255', 'statusenabled' => 'nullable|boolean', ]); if ($validator->fails()) { return response()->json([ 'error' => 1, 'message' => 'Validasi gagal.', 'errors' => $validator->errors(), ], 422); } $payload = $validator->validated(); $row = MasterPitStopPraAkre::create([ 'nama' => trim($payload['nama']), 'statusenabled' => array_key_exists('statusenabled', $payload) ? (bool) $payload['statusenabled'] : true, ]); return response()->json([ 'error' => 0, 'message' => 'Berhasil menambah master pitstop.', 'data' => [ 'id' => $row->id, ], ]); } public function update(Request $request, $id) { $row = MasterPitStopPraAkre::findOrFail($id); $validator = Validator::make($request->all(), [ 'nama' => 'required|string|max:255', 'statusenabled' => 'nullable' ]); if ($validator->fails()) { return response()->json([ 'error' => 1, 'message' => 'Validasi gagal.', 'errors' => $validator->errors(), ], 422); } $payload = $validator->validated(); $row->update([ 'nama' => trim($payload['nama']), 'statusenabled' => trim($payload['statusenabled']) ]); return response()->json([ 'error' => 0, 'message' => 'Berhasil mengubah master pitstop.', ]); } public function toggle(Request $request, $id) { $row = MasterPitStopPraAkre::findOrFail($id); $row->statusenabled = !$row->statusenabled; $row->save(); return response()->json([ 'error' => 0, 'message' => $row->statusenabled ? 'Berhasil mengaktifkan.' : 'Berhasil menonaktifkan.', 'data' => [ 'statusenabled' => (bool) $row->statusenabled, ], ]); } }