diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 67315fe..55ab922 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -8,6 +8,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Modules\Lpj\Http\Requests\PenilaianRequest; +use Modules\Lpj\Models\Authorization; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\PenilaianTeam; @@ -376,6 +377,9 @@ class PenilaianController extends Controller $header = $headers[$type] ?? 'Pelaporan'; + if($header==='SLA') { + return view('lpj::penilaian.otorisator.index-sla', compact('header')); + } return view('lpj::penilaian.otorisator.index', compact('header')); } @@ -389,14 +393,32 @@ class PenilaianController extends Controller ]; $header = $headers[$type] ?? 'Pelaporan'; - $permohonan = Permohonan::find($id); - - return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header')); + $authorization=null; + if($header === 'SLA') { + $authorization = Authorization::with(['user'])->find($id); + $permohonan = Permohonan::find($authorization->permohonan_id); + } else { + $permohonan = Permohonan::find($id); + } + if($header === 'SLA') { + return view('lpj::penilaian.otorisator.sla', compact('permohonan', 'header','authorization')); + } + return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header','authorization')); } public function otorisatorUpdate(Request $request, $id, $context) { - $permohonan = Permohonan::find($id); + if($context==='SLA'){ + $authorization = Authorization::with(['user'])->find($id); + if (!$authorization) { + return response()->json([ + 'message' => 'Data authorization SLA tidak ditemukan.', + ], 404); + } + $permohonan = Permohonan::find($authorization->permohonan_id); + } else { + $permohonan = Permohonan::find($id); + } if (!$permohonan) { return response()->json([ 'message' => 'Data permohonan tidak ditemukan.', @@ -447,13 +469,41 @@ class PenilaianController extends Controller break; case 'sla': + if (Auth::user()->roles[0]->name === 'senior-officer') { + $authorization->update([ + 'status' => '3', + 'approve_so' => Auth::user()->id, + 'approve_so_at' => now(), + 'keterangan_so' => $request->message, + ]); + } elseif (Auth::user()->roles[0]->name === 'EO Appraisal' || Auth::user()->roles[0]->name === 'administrator') { + $status = '2'; + if(!in_array($permohonan->nulai_plafond_id,[1,4])){ + $status = '1'; + $permohonan->update([ + 'status' => $authorization->request + ]); + } - $permohonan->update([ - 'status' => 'proses-sla', - 'keterangan' => $request->message, - ]); + $authorization->update([ + 'status' => $status, + 'approve_eo' => Auth::user()->id, + 'approve_eo_at' => now(), + 'keterangan_eo' => $request->message, + ]); + } elseif (Auth::user()->roles[0]->name === 'DD Appraisal') { + $authorization->update([ + 'status' => '1', + 'approve_dd' => Auth::user()->id, + 'approve_dd_at' => now(), + 'keterangan_dd' => $request->message, + ]); + + $permohonan->update([ + 'status' => $authorization->request + ]); + } break; - default: return response()->json([ diff --git a/app/Http/Controllers/SLAController.php b/app/Http/Controllers/SLAController.php index f411dc4..2c70d1d 100644 --- a/app/Http/Controllers/SLAController.php +++ b/app/Http/Controllers/SLAController.php @@ -4,9 +4,11 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use Modules\Lpj\Models\Authorization; class SLAController extends Controller { + public $user; /** * Display a listing of the resource. */ @@ -62,4 +64,74 @@ class SLAController extends Controller { // } + + 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 = Authorization::query()->with('permohonan.debiture','user','approveSo','approveEo','approveDd'); + + // 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('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // 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->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, + ]); + } } diff --git a/app/Models/Authorization.php b/app/Models/Authorization.php index c23f90b..9249c73 100644 --- a/app/Models/Authorization.php +++ b/app/Models/Authorization.php @@ -56,4 +56,16 @@ class Authorization extends Model { return $this->belongsTo(User::class); } + + public function approveEo(){ + return $this->belongsTo(User::class, 'approve_eo', 'id'); + } + + public function approveDd(){ + return $this->belongsTo(User::class, 'approve_dd', 'id'); + } + + public function approveSo(){ + return $this->belongsTo(User::class, 'approve_so', 'id'); + } } diff --git a/resources/views/penilaian/otorisator/index-sla.blade.php b/resources/views/penilaian/otorisator/index-sla.blade.php new file mode 100644 index 0000000..a6b91b2 --- /dev/null +++ b/resources/views/penilaian/otorisator/index-sla.blade.php @@ -0,0 +1,312 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('otorisator.' . strtolower($header)) }} +@endsection + +@section('content') +
| + + | ++ Nomor Registrasi + + | ++ Tanggal Permohonan + + | ++ User Pemohon + + | ++ Debitur + + | ++ Alasan + + | ++ Request + + | ++ Approval SO + + | + ++ Approval EO + + | + ++ Approval DD + + | + +Action | +
|---|
+ {{ $surveyor->userPenilaiTeam->name }} +
+ +{{ checkRegionUserName($surveyor->userPenilaiTeam->id) }} +
++ {{ $penilai->userPenilaiTeam->name }} +
+ ++ {{ checkRegionUserName($penilai->userPenilaiTeam->id) }} +
+| Pemohon | +{{ $authorization->user->name }} | +
| Alasan | +{{ $authorization->alasan }} | +
| Tanggal Permohonan | +{{ formatTanggalIndonesia($authorization->created_at,1) }} | +
| Diperiksa Oleh | +{{ getUser($authorization->approve_so)->name ?? 'N/A' }} | +{{ $authorization->approve_so_at ? formatTanggalIndonesia($authorization->approve_so_at,1) : 'N/A' }} | +
| Disetujui Oleh (EO) | +{{ getUser($authorization->approve_eo)->name ?? 'N/A' }} | +{{ $authorization->approve_eo_at ? formatTanggalIndonesia($authorization->approve_eo_at,1) : 'N/A' }} | +
| Disetujui Oleh (DD) | +{{ getUser($authorization->approve_dd)->name ?? 'N/A' }} | +{{ $authorization->approve_dd_at ? formatTanggalIndonesia($authorization->approve_dd_at,1) : 'N/A' }} | +