validated(); if ($validatedData) { try { $penilaian = Penilaian::create($validatedData); $permohonan = Permohonan::findOrFail($request->permohonan_id); $permohonan->update([ 'status' => 'assign', ]); return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); } catch (Exception $e) { return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } } /** * Show the form for creating a new resource. */ public function create($id) { return view('lpj::penilaian.form'); } /** * Update the specified resource in storage. */ public function update(PenilaianRequest $request, $id) { $validate = $request->validated(); if ($validate) { try { $penilaian = Penilaian::where('permohonan_id', $id)->firstOrFail(); $penilaian->update($validate); $permohonan = Permohonan::findOrFail($id); $permohonan->update([ 'status' => 'assign', ]); return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); } catch (Exception $e) { return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); } } } /** * Show the specified resource. */ public function show($id) { return view('lpj::show'); } /** * Show the form for editing the specified resource. */ public function edit($id) { $permohonan = Permohonan::with( [ 'user', 'debiture.province', 'debiture.city', 'debiture.district', 'debiture.village', 'branch', 'tujuanPenilaian', ], )->findOrFail($id); $jenisPenilaian = JenisPenilaian::all(); $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); $penilaian = Penilaian::where('permohonan_id', $id)->first(); return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian')); } /** * Remove the specified resource from storage. */ public function destroy($id) { // } public function dataForDatatables(Request $request) { if (is_null($this->user) || !$this->user->can('debitur.view')) { // abort(403, 'Sorry! You are not allowed to view users.'); } $query = Permohonan::query(); if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } // Filter to show only records with status 'register' $query->where('status', 'register'); if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); $query->orderBy($column, $order); } $totalRecords = $query->count(); // Apply pagination if provided if ($request->has('page') && $request->has('size')) { $page = $request->get('page'); $size = $request->get('size'); $offset = ($page - 1) * $size; // Calculate the offset $query->skip($offset)->take($size); } $filteredRecords = $query->count(); $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); $pageCount = ceil($totalRecords / $request->get('size')); $currentPage = $page; return response()->json([ 'draw' => $request->get('draw'), 'recordsTotal' => $totalRecords, 'recordsFiltered' => $filteredRecords, 'pageCount' => $pageCount, 'page' => $currentPage, 'totalCount' => $totalRecords, 'data' => $data, ]); } public function getUserTeams($id) { $teamsUser = TeamsUsers::where('teams_id', $id)->get(); $userIds = $teamsUser->pluck('user_id'); $users = User::whereIn('id', $userIds)->get(); if ($users->isNotEmpty()) { return response()->json($users, 200); } return response()->json([], 200); } }