validated(); if ($validatedData) { try { $penilaian = Penilaian::create($validatedData); $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); $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('nomor_registrasi', $request->nomor_registrasi)->firstOrFail(); $penilaian->update($validate); $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); $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 form for editing the specified resource. */ public function assignment($id) { $permohonan = Permohonan::with( [ 'user', 'debiture.province', 'debiture.city', 'debiture.district', 'debiture.village', 'branch', 'tujuanPenilaian', ], )->findOrFail($id); $idPenilaian = $permohonan->jenis_penilaian_id; $idRegion = $permohonan->region_id; $jenisPenilaian = JenisPenilaian::find($idPenilaian); $teamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user', ]) ->whereHas('regions', function ($q) use ($idRegion) { $q->where('id', $idRegion); })->get(); $regionName = null; foreach ($teamPenilai as $item) { $regionName = $item->regions; } // dd($teamPenilai); $penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName')); } /** * Remove the specified resource from storage. */ public function revisi(PenilaianRequest $request, $nomor_registrasi) { $validatedData = $request->validated(); if ($validatedData) { try { if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) { $file_name = $validatedData['dokumen']->getClientOriginalName(); $validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name); } $dataToUpdate = [ 'keterangan' => $validatedData['keterangan'], 'dokumen' => 'dokumen_revisi/' . $file_name, 'status' => 'revisi', ]; $permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first(); $permohonan->update($dataToUpdate); return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi'); } catch (Exception $e) { return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } } 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 . '%'); }); } $query->whereRaw('LOWER(status) = ?', ['registered']); if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); $query->orderBy($column, $order); } $totalRecords = $query->count(); $size = $request->get('size', 10); if ($size == 0) { $size = 10; } if ($request->has('page') && $request->has('size')) { $page = $request->get('page', 1); $offset = ($page - 1) * $size; $query->skip($offset)->take($size); } $filteredRecords = $query->count(); $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); $pageCount = ceil($totalRecords / $size); $currentPage = max(1, $request->get('page', 1)); return response()->json([ 'draw' => $request->get('draw'), 'recordsTotal' => $totalRecords, 'recordsFiltered' => $filteredRecords, 'pageCount' => $pageCount, 'page' => $currentPage, 'totalCount' => $totalRecords, 'data' => $data, ]); } public function otorisator(Request $request){ $type = $request->route('type'); $header = ''; switch ($type) { case 'pelaporan': $header = 'Pelaporan'; break; case 'pembayaran': $header = 'Pembayaran'; break; case 'pembatalan': $header = 'Pembatalan'; break; case 'sla': $header = 'SLA'; break; default: $header = 'Pelaporan'; break; } return view('lpj::penilaian.otorisator.index', compact('header')); } public function show($id){ $permohonan = Permohonan::find($id); return view('lpj::penilaian.otorisator.show', compact('permohonan')); } public function dataForAuthorization(Request $request, $otorisator) { if (is_null($this->user) || !$this->user->can('debitur.view')) { // abort(403, 'Sorry! You are not allowed to view users.'); } $status = ''; switch ($otorisator) { case 'Pelaporan': $status = 'proses paparan'; break; case 'Pembayaran': $status = 'proses pembayaran'; break; default: $status = ''; break; } $query = Permohonan::query(); // Pencarian berdasarkan parameter search 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 . '%'); }); } if (!empty($otorisator)) { $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); } // Sorting berdasarkan sortField dan sortOrder if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); $query->orderBy($column, $order); } // Hitung total records $totalRecords = $query->count(); // Pagination (default page size 10) $size = $request->get('size', 10); if ($size == 0) { $size = 10; } if ($request->has('page') && $request->has('size')) { $page = $request->get('page', 1); $offset = ($page - 1) * $size; $query->skip($offset)->take($size); } // Filtered records $filteredRecords = $query->count(); // Ambil data dengan relasi $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); // Hitung jumlah halaman $pageCount = ceil($totalRecords / $size); // Ambil current page $currentPage = max(1, $request->get('page', 1)); // Return JSON response return response()->json([ 'draw' => $request->get('draw'), 'recordsTotal' => $totalRecords, 'recordsFiltered' => $filteredRecords, 'pageCount' => $pageCount, 'page' => $currentPage, 'totalCount' => $totalRecords, 'data' => $data, ]); } }