From 0fbbb8f081fa52c90716422d9a613effdce0904c Mon Sep 17 00:00:00 2001 From: majid Date: Tue, 8 Oct 2024 14:35:59 +0700 Subject: [PATCH] integarasi admin ke so dan penambahan menu otorisator so --- app/Http/Controllers/PenilaianController.php | 163 +++++++++++++++-- module.json | 56 +++++- resources/views/penilaian/form.blade.php | 129 ++++++------- resources/views/penilaian/index.blade.php | 10 +- .../penilaian/otorisator/index.blade.php | 163 +++++++++++++++++ .../views/penilaian/otorisator/show.blade.php | 173 ++++++++++++++++++ routes/breadcrumbs.php | 7 + routes/web.php | 14 ++ 8 files changed, 619 insertions(+), 96 deletions(-) create mode 100644 resources/views/penilaian/otorisator/index.blade.php create mode 100644 resources/views/penilaian/otorisator/show.blade.php diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 0576671..f273b0a 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -30,10 +30,11 @@ class PenilaianController extends Controller /** * Store a newly created resource in storage. */ + public function store(PenilaianRequest $request) { - //print_r($request->all());exit; $validatedData = $request->validated(); + if ($validatedData) { try { $penilaian = Penilaian::create($validatedData); @@ -98,12 +99,28 @@ class PenilaianController extends Controller ], )->findOrFail($id); - $jenisPenilaian = JenisPenilaian::all(); - $teamPenilai = Teams::with(['regions', 'teamsUsers'])->get(); + $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')); + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName')); } /** @@ -128,15 +145,13 @@ class PenilaianController extends Controller 'status' => 'revisi', ]; - // dump($dataToUpdate); $permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first(); $permohonan->update($dataToUpdate); return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi'); } catch (Exception $e) { - dump($e->getMessage()); - // return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } } @@ -164,7 +179,7 @@ class PenilaianController extends Controller }); } - $query->whereRaw('LOWER(status) = ?', ['register']); + $query->whereRaw('LOWER(status) = ?', ['registered']); if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); @@ -205,20 +220,132 @@ class PenilaianController extends Controller - public function getUserTeams($id) - { - $teamsUser = TeamsUsers::where('teams_id', $id)->get(); - $userIds = $teamsUser->pluck('user_id'); - $users = User::whereIn('id', $userIds) - ->with('roles') - ->get(); - if ($users->isNotEmpty()) { - return response()->json($users, 200); + 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 response()->json([], 200); + 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, + ]); } diff --git a/module.json b/module.json index 51e8689..6431f9d 100644 --- a/module.json +++ b/module.json @@ -131,6 +131,60 @@ "so" ] }, + { + "title": "Otorisator", + "path": "otorisator", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "so" + ], + "sub": [ + { + "title": "Pelaporan", + "path": "otorisator.pelaporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "so" + ] + }, + { + "title": "Pembayaran", + "path": "otorisator.pembayaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "so" + ] + }, + { + "title": "Pembatalan", + "path": "otorisator.pembatalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "so" + ] + }, + { + "title": "SLA", + "path": "otorisator.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "so" + ] + } + ] + + }, { "title": "Activity", @@ -151,7 +205,7 @@ "attributes": [], "permission": "", "roles": [ - "administrator","pemohon-ao","pemohon-eo","admin" + "administrator","pemohon-ao","pemohon-eo","admin", "so" ] } ], diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 484ac33..cd60966 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -163,7 +163,7 @@

- Data Jaminan + Laporan

@@ -283,21 +283,12 @@
- + + @error('jenis_penilaian_id') {{ $message }} @enderror @@ -309,20 +300,11 @@ Tim Penilai yang di tunjuk
- + + @error('teams_id') {{ $message }} @enderror @@ -335,8 +317,11 @@
@error('surveyor_id') @@ -351,8 +336,11 @@
@error('penilaian_id') {{ $message }} @@ -366,8 +354,11 @@
@error('penilai_surveyor_id') {{ $message }} @@ -482,7 +473,7 @@
@endsection @push('scripts') - + --}} - + @endpush diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index 0a5db4c..90ef1e3 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -7,13 +7,10 @@ @section('content')
-
-
- Daftar Penilaian -
+

- {{-- Daftar {{}} --}} + Daftar assignment

@@ -27,9 +24,6 @@
-
- -
diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php new file mode 100644 index 0000000..be0fc59 --- /dev/null +++ b/resources/views/penilaian/otorisator/index.blade.php @@ -0,0 +1,163 @@ +@extends('layouts.main') + +{{-- @section('breadcrumbs') + {{ Breadcrumbs::render('penilaian') }} +@endsection --}} + +@section('content') +
+
+
+
+

+ Daftar {{$header}} +

+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
+
+ +
+
+
+
+@endsection + + + +@push('scripts') + + +@endpush diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php new file mode 100644 index 0000000..3555a45 --- /dev/null +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -0,0 +1,173 @@ +@extends('layouts.main') + +{{-- @section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection --}} + +@section('content') +
+
+
+

+ Data Permohonan +

+
+
+
+

+ Nomor Register Permohonan: +

+ + {{ $permohonan->nomor_registrasi }} + +
+ +
+

+ Pemohon: +

+ + {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }} + +
+ +
+

+ Tujan Permohonan: +

+ + {{ $permohonan->tujuanPenilaian->name }} + +
+ +
+
+ +
+
+

+ Detail Debutur +

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ Name + + {{ $permohonan->debiture->name ?? "" }} +
+ Email + + {{ $permohonan->debiture->email ?? "" }} +
+ Phone + + {{ $permohonan->debiture->phone ?? "" }} +
+ Address + + {{ $permohonan->debiture->address ?? "" }} +
+   + + {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} +
+
+
+ + + + + + + + + + + + + + + + + +
+ Cabang + + {{ $permohonan->debiture->branch->name ?? "" }} +
+ CIF + + {{ $permohonan->debiture->cif ?? "" }} +
+ Nomor Rekening + + {{ $permohonan->debiture->nomor_rekening ?? "" }} +
+ NPWP + + {{ $permohonan->debiture->npwp ?? "" }} +
+
+
+
+
+ +
+
+

+ Laporan +

+
+ +
+ +
+
+ + @csrf +
+
+ +
+ +
+
+
+ +
+
+
+@endsection diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 6a1814d..c449005 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -445,3 +445,10 @@ $trail->parent('registrasi'); $trail->push('Detail Permohona'); }); + + + + Breadcrumbs::for('otorisator.pelaporan.index', function (BreadcrumbTrail $trail) { + $trail->parent('otorisator'); + $trail->push('Otorisator', route('otorisator.pelaporan.index')); + }); diff --git a/routes/web.php b/routes/web.php index 258152b..7f2d6e1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -479,6 +479,20 @@ Route::middleware(['auth'])->group(function () { /** * Route end activity */ + + + Route::name('otorisator.')->prefix('otorisator')->group(function () { + Route::get('pelaporan', [PenilaianController::class, 'otorisator'])->name('pelaporan.index')->defaults('type', 'pelaporan'); + Route::get('pembayaran', [PenilaianController::class, 'otorisator'])->name('pembayaran.index')->defaults('type', 'pembayaran'); + Route::get('pembatalan', [PenilaianController::class, 'otorisator'])->name('pembatalan.index')->defaults('type', 'pembatalan'); + Route::get('sla', [PenilaianController::class, 'otorisator'])->name('sla.index')->defaults('type', 'sla'); + Route::get('/datatables/{otorisator}', [PenilaianController::class, 'dataForAuthorization'])->name('datatables'); + Route::get('show/{id}', [PenilaianController::class, 'show'])->name('show'); + }); + + + + }); require __DIR__ . '/registrasi.php';