From d2afeaa845ecfa083cb672b18808f9b3653aec1f Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Mon, 4 Nov 2024 19:12:57 +0700 Subject: [PATCH 01/16] add feature SPK --- app/Http/Controllers/SpkController.php | 226 +++++++++++++++++++++- module.json | 9 + resources/views/spk/documentSPK.blade.php | 189 ++++++++++++++++++ resources/views/spk/dokumennya.blade.php | 185 ++++++++++++++++++ resources/views/spk/edit.blade.php | 211 ++++++++++++++++++++ resources/views/spk/index.blade.php | 207 +++++++++++--------- resources/views/spk/js/editjs.blade.php | 39 ++++ routes/breadcrumbs.php | 9 + routes/registrasi.php | 10 + routes/web.php | 13 -- 10 files changed, 989 insertions(+), 109 deletions(-) create mode 100644 resources/views/spk/documentSPK.blade.php create mode 100644 resources/views/spk/dokumennya.blade.php create mode 100644 resources/views/spk/edit.blade.php create mode 100644 resources/views/spk/js/editjs.blade.php diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index 5b4d9de..ec96a62 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -1,14 +1,22 @@ user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query =Permohonan::query() + ->leftJoin('penawaran', 'penawaran.nomor_registrasi','=','permohonan.nomor_registrasi') + ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') + ->where('permohonan.status','=','spk') + ->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', 'permohonan.dokumen as dokumenSPK'); + + // Apply search filter if provided + 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->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $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); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $data = $query->get(); + + $i=0; + foreach($data as $obj) + { + if($obj->tanggal_penilaian_sebelumnya) + { + $data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); + } + + if($obj->biaya_kjpp_sebelumnya) + { + $data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya); + + } + + // date_range + if($obj->start_date && $obj->end_date) + { + $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y').' - '.Carbon::parse($obj->end_date)->format('d M Y'); + + } + + $i++; + } + + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data + ]); + } + public function viewSpk() { // return Excel::download(new TujuanPenilaianExport, 'tujuan_penilaian.xlsx'); return view('lpj::spk.view'); } + + public function show($id) + { + $penawaran = PenawaranTender::find($id); + // return view('lpj::spk.show', compact('id','permohonan')); + } + + public function edit($id) + { + $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', + 'kjpp.name as kjpp_name', + 'kjpp.address as kjpp_address', + 'jenis_laporan.name as jenis_laporan_name' + )->first(); + + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) + ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') + ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') + ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', + 'dokumen_jaminan.address as dokumen_jaminan_address'); + + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); + + return view('lpj::spk.edit', compact('data', 'penawaran')); + } + + public function update(Request $request, $id): JsonResponse + { + // init + $data1 = array(); + $dataPermohonan = array(); + // data + + $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + 'kjpp.name as kjpp_name', + 'kjpp.address as kjpp_address', + 'jenis_laporan.name as jenis_laporan_name' + )->first(); + + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) + ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') + ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') + ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name'); + + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); + + $folderPath = 'uploads/spk/'; + $extension = '.pdf'; + $newFileName = "SPK_".$penawaran->nomor_registrasi."_".Auth::user()->id."_".time(). $extension; + $newFileNameWithPath = $folderPath . $newFileName; + + // update table permohonan + $dataPermohonan=['dokumen' => $newFileNameWithPath]; + $data->update($dataPermohonan); + // update table permohonan + + // pdf path + $spkpenawaran_path = Storage::url($newFileNameWithPath); + + $pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran')); + + $content = $pdf->download()->getOriginalContent(); + Storage::put('public/'.$newFileNameWithPath,$content); + + $data1['status'] = 'success'; + $data1['spkpenawaran_path'] = $spkpenawaran_path; + $data1['message']['message_success'] = array('Generate SPK PDF successfully'); + + return response()->json($data1); + } + + public function dokumennya() + { + // return view('lpj::spk.dokumennya'); + $id="3"; + $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', + 'kjpp.name as kjpp_name', + 'kjpp.address as kjpp_address', + 'jenis_laporan.name as jenis_laporan_name' + )->first(); + + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) + ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') + ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') + ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', + 'dokumen_jaminan.address as dokumen_jaminan_address'); + + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); + + return view('lpj::spk.dokumennya', compact('data', 'penawaran')); + } } diff --git a/module.json b/module.json index 6ab8ec6..63e608d 100644 --- a/module.json +++ b/module.json @@ -91,6 +91,15 @@ } ] }, + { + "title": "SPK", + "path": "spk", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, { "title": "Registrasi Final", "path": "registrasifinal", diff --git a/resources/views/spk/documentSPK.blade.php b/resources/views/spk/documentSPK.blade.php new file mode 100644 index 0000000..7fa8ade --- /dev/null +++ b/resources/views/spk/documentSPK.blade.php @@ -0,0 +1,189 @@ + + + + + + + +
+
+ +
+
\ No newline at end of file diff --git a/resources/views/spk/dokumennya.blade.php b/resources/views/spk/dokumennya.blade.php new file mode 100644 index 0000000..f4db8fa --- /dev/null +++ b/resources/views/spk/dokumennya.blade.php @@ -0,0 +1,185 @@ +@php + use Nwidart\Modules\Module; +@endphp +@vite(Module::getAssets()) + @stack('styles') +
+
+ +
+
\ No newline at end of file diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php new file mode 100644 index 0000000..6ff8488 --- /dev/null +++ b/resources/views/spk/edit.blade.php @@ -0,0 +1,211 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection +@php + // $route = Route::currentRouteName(); + // dd($route); + $route = explode('.', Route::currentRouteName()); +@endphp + +@section('content') +
+
+
+

Buat SPK

+
+ +
+ +
+
+
+ +
+
+
+
+@endsection +@include('lpj::spk.js.editjs') diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index fb973a3..65d6e92 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -1,27 +1,26 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.tujuan-penilaian') }} + {{ Breadcrumbs::render('spk') }} @endsection @section('content')
-
+

- SPK Menu + Daftar SPK

@@ -32,12 +31,28 @@ - - No SPK + + Nomor Registrasi - - Perihal + + Kode Penawaran + + + + Tanggal Penawaran + + + + Tujuan Penilaian + + + + KJPP Data + + + + Status Action @@ -62,87 +77,103 @@ @endsection @push('scripts') - - - + + let dataTable = new KTDataTable(element, dataTableOptions); + // Custom search functionality + searchInput.addEventListener('input', function () { + const searchValue = this.value.trim(); + dataTable.search(searchValue, true); + + }); + + @endpush diff --git a/resources/views/spk/js/editjs.blade.php b/resources/views/spk/js/editjs.blade.php new file mode 100644 index 0000000..813e378 --- /dev/null +++ b/resources/views/spk/js/editjs.blade.php @@ -0,0 +1,39 @@ +@push('scripts') + @include('lpj::assetsku.includenya') + +@endpush \ No newline at end of file diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 39a97be..0f54909 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -515,6 +515,15 @@ Breadcrumbs::for('otorisasitender.penawaran.show', function (BreadcrumbTrail $tr $trail->push('Detail Data Otorisasi Penawaran'); }); // andy add Otorisasi Tender +// spk +Breadcrumbs::for('spk', function (BreadcrumbTrail $trail) { + $trail->push('SPK', route('spk.index')); +}); +Breadcrumbs::for('spk.edit', function (BreadcrumbTrail $trail) { + $trail->parent('spk'); + $trail->push('Buat SPK'); +}); +// spk // andy add registrasi final Breadcrumbs::for('registrasifinal', function (BreadcrumbTrail $trail) { $trail->push('Registrasi Final', route('registrasifinal.index')); diff --git a/routes/registrasi.php b/routes/registrasi.php index f8b3893..a9334bd 100644 --- a/routes/registrasi.php +++ b/routes/registrasi.php @@ -4,6 +4,7 @@ use Modules\Lpj\Http\Controllers\RegistrasiController; use Modules\Lpj\Http\Controllers\ProsesPenawaranController; use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController; use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController; +use Modules\Lpj\Http\Controllers\SpkController; use Modules\Lpj\Http\Controllers\RegistrasiFinalController; Route::middleware(['auth'])->group(function () { @@ -85,6 +86,15 @@ Route::middleware(['auth'])->group(function () { }); }); + Route::controller(SpkController::class)->group(function(){ + Route::get('/spk/dokumennya', 'dokumennya')->name('spk.dokumennya'); + Route::get('/spk', 'index')->name('spk.index'); + Route::get('/spk/datatables', 'dataForDatatables')->name('spk.datatables'); + Route::get('/spk/{spk}', 'show')->name('spk.show'); + Route::get('/spk/{spk}/edit', 'edit')->name('spk.edit'); + Route::put('/spk/{spk}', 'update')->name('spk.update'); + }); + Route::controller(RegistrasiFinalController::class)->group(function(){ Route::get('/registrasifinal', 'index')->name('registrasifinal.index'); Route::get('/registrasifinal/datatables', 'dataForDatatables')->name('registrasifinal.datatables'); diff --git a/routes/web.php b/routes/web.php index 8292c9b..eadf6f9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,7 +27,6 @@ use Modules\Lpj\Http\Controllers\TeamsController; use Modules\Lpj\Http\Controllers\TenderController; use Modules\Lpj\Http\Controllers\TujuanPenilaianController; use Modules\Lpj\Http\Controllers\TujuanPenilaianKJPPController; -use Modules\Lpj\Http\Controllers\SpkController; // use Modules\Lpj\Http\Controllers\ActivityController; use Modules\Lpj\Http\Controllers\SurveyorController; @@ -376,18 +375,6 @@ Route::middleware(['auth'])->group(function () { Route::get('export', [PermohonanController::class, 'export'])->name('export'); }); - Route::name('spk.')->prefix('spk')->group(function () { - // Route::get('download', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - Route::get('view', [SpkController::class, 'viewSpk'])->name('spk.view'); - // Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - // Route::get('download/{id}', [PermohonanController::class, 'download'])->name('download'); - // Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); - // Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables'); - // Route::get('export', [PermohonanController::class, 'export'])->name('export'); - }); - - Route::resource('spk', SpkController::class); - Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); Route::resource('permohonan', PermohonanController::class); From b37e5515fe6a4fab31508c577d8599eb987cadb9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 10:32:10 +0700 Subject: [PATCH 02/16] Remove SPK route definitions Removed all SPK-related route definitions from the web.php file, including group routes and resource routes. This is part of cleanup to enhance maintainability and reduce unused code within the routes configuration. --- routes/web.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/routes/web.php b/routes/web.php index e40bd3c..f821e44 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,7 +2,6 @@ use Illuminate\Support\Facades\Route; use Modules\Lpj\Http\Controllers\SLAController; -use Modules\Lpj\Http\Controllers\SpkController; use Modules\Lpj\Http\Controllers\KJPPController; use Modules\Lpj\Http\Controllers\TeamsController; use Modules\Lpj\Http\Controllers\RegionController; @@ -353,18 +352,6 @@ Route::middleware(['auth'])->group(function () { Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print'); }); - Route::name('spk.')->prefix('spk')->group(function () { - // Route::get('download', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - Route::get('view', [SpkController::class, 'viewSpk'])->name('spk.view'); - // Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - // Route::get('download/{id}', [PermohonanController::class, 'download'])->name('download'); - // Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); - // Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables'); - // Route::get('export', [PermohonanController::class, 'export'])->name('export'); - }); - - Route::resource('spk', SpkController::class); - Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); Route::resource('permohonan', PermohonanController::class); From 39dff7c83c888dce8cd4a62225bdab7c1ced3415 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 10:38:24 +0700 Subject: [PATCH 03/16] Fix case sensitivity issue in Teams model Change the case of 'penilaianTeam' to 'PenilaianTeam' in the Teams model to ensure correct class reference. This resolves errors related to class loading and enhances code readability. --- app/Models/Teams.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Teams.php b/app/Models/Teams.php index 1348a6c..57c0775 100644 --- a/app/Models/Teams.php +++ b/app/Models/Teams.php @@ -31,7 +31,7 @@ class Teams extends Model } public function penilaianTeam(){ - return $this->hasMany(penilaianTeam::class, 'team_id', 'id'); + return $this->hasMany(PenilaianTeam::class, 'team_id', 'id'); } From c73bb674b07577966050ff7e8228ada602d037cc Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 12:01:05 +0700 Subject: [PATCH 04/16] Set 'fillable' attributes in KondisiBangunan model Updated the KondisiBangunan model to include 'code' and 'name' in the $fillable array. This ensures these attributes can be mass assigned, improving model flexibility and security. --- app/Models/KondisiBangunan.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/KondisiBangunan.php b/app/Models/KondisiBangunan.php index 131c0fa..0fa0f86 100644 --- a/app/Models/KondisiBangunan.php +++ b/app/Models/KondisiBangunan.php @@ -14,7 +14,7 @@ class KondisiBangunan extends Model /** * The attributes that are mass assignable. */ - protected $fillable = []; + protected $fillable = ['code','name']; protected static function newFactory(): KondisiBangunanFactory { From 0113563a4088c67c6a054b5ca3fc7d1fbee0cacc Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 12:01:40 +0700 Subject: [PATCH 05/16] Make 'status' field nullable in validation rules. Changed the validation rule for the 'status' field from required to nullable. This adjustment allows for more flexibility when the 'status' value is not provided upon request submission. --- app/Http/Requests/PermohonanRequest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/PermohonanRequest.php b/app/Http/Requests/PermohonanRequest.php index 8d6ef20..1919029 100644 --- a/app/Http/Requests/PermohonanRequest.php +++ b/app/Http/Requests/PermohonanRequest.php @@ -20,7 +20,7 @@ 'branch_id' => 'required|exists:branches,id', 'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id', 'debiture_id' => 'required|exists:debitures,id', - 'status' => 'required|string', + 'status' => 'nullable|string', 'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id', 'nilai_plafond_id' => 'required|exists:nilai_plafond,id', 'status_bayar' => 'required|string', From be89941651d6005dd2bd5ea68caffd96a1a6a0e1 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 12:01:55 +0700 Subject: [PATCH 06/16] Refactor PermohonanController for consistency and readability Consolidated route method chaining for more concise syntax. Added a status check before updating a permohonan record to ensure correct status transitions. Made minor formatting improvements for better readability. --- app/Http/Controllers/PermohonanController.php | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index e2a3da4..b6a43f6 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -33,25 +33,20 @@ public function store(PermohonanRequest $request) { - $validate = $request->validated(); if ($validate) { try { // Save to database Permohonan::create($validate); return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan created successfully'); + ->route('permohonan.index')->with('success', 'Permohonan created successfully'); } catch (Exception $e) { return redirect() - ->route('permohonan.create') - ->with('error', 'Failed to create permohonan' . $e->getMessage()); + ->route('permohonan.create')->with('error', 'Failed to create permohonan' . $e->getMessage()); } } else { return redirect() - ->route('permohonan.create') - ->with('success', 'error naon iye') - ->withInput(); + ->route('permohonan.create')->with('success', 'error naon iye')->withInput(); } } @@ -118,14 +113,15 @@ try { // Update in database $permohonan = Permohonan::find($id); + if ($permohonan->status == 'revisi') { + $validate['status'] = 'order'; + } $permohonan->update($validate); return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan updated successfully'); + ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); } catch (Exception $e) { return redirect() - ->route('permohonan.edit', $id) - ->with('error', 'Failed to update permohonan'); + ->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan'); } } } @@ -313,11 +309,12 @@ return view('lpj::permohonan.show', compact('permohonan')); } - public function print($id){ + public function print($id) + { $permohonan = Permohonan::find($id); return view('lpj::permohonan.print', compact('permohonan')); -// $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); - // return $pdf->stream(); + // $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); + // return $pdf->stream(); } } From 85f8e3b482c3e680af313336b5732910f46f318d Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 12:02:12 +0700 Subject: [PATCH 07/16] Update legal document handling in DokumenJaminanController Refactored the detailed document processing logic to include handling of 'jenis_legalitas_jaminan_id' instead of 'detail_dokumen_jaminan_id'. Enhanced the view to dynamically add new legal documents, ensuring proper data handling and validation. --- .../Controllers/DokumenJaminanController.php | 26 ++++++- .../debitur/components/dokumen.blade.php | 75 +++++++++++++++++-- 2 files changed, 90 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index dc4ac6e..a562485 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -223,9 +223,8 @@ $document = DokumenJaminan::find($jaminan); $document->update($validate); - - if ($request->detail_dokumen_jaminan_id) { - foreach ($request->detail_dokumen_jaminan_id as $key => $value) { + if($request->jenis_legalitas_jaminan_id){ + foreach($request->jenis_legalitas_jaminan_id as $key => $value){ if (isset($request->dokumen_jaminan[$key])) { $file = $request->dokumen_jaminan[$key]; if ($file) { @@ -245,6 +244,7 @@ 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], ]; + if (isset($request->detail_dokumen_jaminan_id[$key])) { $detailDocument = DetailDokumenJaminan::find( $request->detail_dokumen_jaminan_id[$key], @@ -252,6 +252,9 @@ $detailDocument->update($detail); $detailDocument->save(); + } else { + $detailDocument = DetailDokumenJaminan::create($detail); + $detailDocument->save(); } } } else { @@ -290,13 +293,29 @@ ) { $document = DokumenJaminan::find($jaminan); $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); + $debitur = Debiture::find($document->debiture_id); $provinces = Province::all(); $cities = City::where('province_code', $document->province_code)->get(); $districts = District::where('city_code', $document->city_code)->get(); $villages = Village::where('district_code', $document->district_code)->get(); + + $jenisJaminan = JenisJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); + + $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); + $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); + + $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn('id',$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray())->get(); + + + + // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan + $legalitasJaminan = array_diff($legalitasJaminan, $currentLegalitasJaminan->pluck('code')->toArray()); + + $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); + $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); $hubunganPemilik = HubunganPemilikJaminan::all(); @@ -314,6 +333,7 @@ 'villages', 'pemilikJaminan', 'hubunganPemilik', + 'legalitas' ), ); } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index b3038ed..3de2e04 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -134,11 +134,12 @@
@if(isset($document->id)) + @php $n = 0; @endphp @foreach($document->detail as $detail)
@@ -167,14 +168,14 @@ @if($detail->details) @php $custom_field = json_decode($detail->details,true) @endphp -
- -
- -
+
+ +
+
+
@endif
@@ -185,6 +186,64 @@
+ @php $n++; @endphp + @endforeach + @foreach($legalitas as $item) +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + @if($item->custom_field) +
+ +
+ @if($item->custom_field_type === "text") + + @elseif($item->custom_field_type === "number") + + @elseif($item->custom_field_type === "date") + + @elseif($item->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif + +
+ +
+ +
+
+ @php $n++; @endphp @endforeach @else
From fde217a5d2bf43b5c482033553dc3288aea03a98 Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Tue, 5 Nov 2024 14:15:40 +0700 Subject: [PATCH 08/16] perbaikan image AGI dan meterai base64 --- resources/views/spk/documentSPK.blade.php | 4 ++-- resources/views/spk/dokumennya.blade.php | 4 ++-- resources/views/spk/edit.blade.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/views/spk/documentSPK.blade.php b/resources/views/spk/documentSPK.blade.php index 7fa8ade..8bf42c3 100644 --- a/resources/views/spk/documentSPK.blade.php +++ b/resources/views/spk/documentSPK.blade.php @@ -13,7 +13,7 @@ diff --git a/resources/views/spk/dokumennya.blade.php b/resources/views/spk/dokumennya.blade.php index f4db8fa..3bfbd22 100644 --- a/resources/views/spk/dokumennya.blade.php +++ b/resources/views/spk/dokumennya.blade.php @@ -9,7 +9,7 @@
- Logo + Logo

PT BANK ARTHA GRAHA INTERNASIONAL

@@ -173,7 +173,7 @@
- BTS + BTS
diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php index 6ff8488..03edfae 100644 --- a/resources/views/spk/edit.blade.php +++ b/resources/views/spk/edit.blade.php @@ -30,7 +30,7 @@
- Logo + Logo

PT BANK ARTHA GRAHA INTERNASIONAL

@@ -169,7 +169,7 @@
- BTS + BTS
From 184e7191dc094ada6882d8fad08b8651bcc2dd6f Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 14:26:06 +0700 Subject: [PATCH 09/16] Add 'administrator' role to various permissions Updated the role lists throughout `module.json` to include the 'administrator' role alongside existing roles. This ensures that administrators have the necessary permissions to perform actions across different sections and functionalities. --- module.json | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/module.json b/module.json index 35b63fb..572fe59 100644 --- a/module.json +++ b/module.json @@ -150,7 +150,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"] + "roles": ["administrator","senior-officer"] }, { "title": "Otorisator", @@ -159,7 +159,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"], + "roles": ["administrator","senior-officer"], "sub": [ { "title": "Pelaporan", @@ -167,7 +167,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"] + "roles": ["administrator","senior-officer"] }, { "title": "Pembayaran", @@ -175,7 +175,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"] + "roles": ["administrator","senior-officer"] }, { "title": "Pembatalan", @@ -183,7 +183,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"] + "roles": ["administrator","senior-officer"] }, { "title": "SLA", @@ -191,7 +191,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["senior-officer"] + "roles": ["administrator","senior-officer"] } ] }, @@ -202,7 +202,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { @@ -227,7 +227,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Laporan", @@ -444,7 +444,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Kontur Tanah", @@ -452,7 +452,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Posisi Kavling", @@ -460,7 +460,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Ketinggian Tanah", @@ -468,7 +468,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Kondisi Fisik Tanah", @@ -476,7 +476,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Jenis Bangunan", @@ -484,7 +484,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Kondisi Bangunan", @@ -492,7 +492,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Sifat Bangunan", @@ -500,7 +500,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { @@ -509,7 +509,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { @@ -518,7 +518,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Tingkat Keramaian", @@ -526,7 +526,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Masyarakat Sekitar", @@ -534,7 +534,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Lantai Unit", @@ -542,7 +542,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "View unit", @@ -550,7 +550,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Spesifikasi Bangunan", @@ -558,7 +558,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] }, { "title": "Kategori Speksikasi Bangunan", @@ -566,7 +566,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["surveyor"] + "roles": ["administrator","surveyor"] } From 0c891b222887458af17668ce2a019c138c797a36 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 15:07:57 +0700 Subject: [PATCH 10/16] Add conditional custom field input types Enhanced the handling of custom fields by conditionally adding input types like text, number, date, and textarea based on the field's type. Also, added missing placeholders to input elements to improve usability. --- .../debitur/components/dokumen.blade.php | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 3de2e04..40c55fd 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -176,6 +176,27 @@ + @else + @if($detail->jenisLegalitasJaminan->custom_field) +
+ +
+ @if($detail->jenisLegalitasJaminan->custom_field_type === "text") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif @endif
@@ -221,15 +242,15 @@
@if($item->custom_field_type === "text") - + @elseif($item->custom_field_type === "number") - + @elseif($item->custom_field_type === "date") - + @elseif($item->custom_field_type === "textarea") - + @else - + @endif
@@ -246,9 +267,7 @@ @php $n++; @endphp @endforeach @else -
-
@endif
@@ -370,13 +389,13 @@ @push('scripts') {{--Pemilik Jaminan--}} @endpush diff --git a/routes/web.php b/routes/web.php index f821e44..44ea0fa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -66,7 +66,7 @@ Route::middleware(['auth'])->group(function () { Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { - Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas'); + Route::get('legalitas/{id}/{jenisJaminanId}', [DokumenJaminanController::class, 'getLegalitasJaminan'])->name('legalitas'); Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables'])->name('datatables'); Route::get('export', [JenisJaminanController::class, 'export'])->name('export'); From 43e6573bf24f185e870a8ded442e801a3306908b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 19:00:11 +0700 Subject: [PATCH 12/16] Add multiple file upload functionality Enhanced the document upload section to support multiple file uploads for "Dokumen Jaminan". Added "Add More" and "Remove" buttons for dynamically managing file inputs. Implemented helper functions to handle dynamic input fields and update the UI accordingly. --- .../debitur/components/dokumen.blade.php | 139 +++++++++++------- 1 file changed, 89 insertions(+), 50 deletions(-) diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 23acee9..be5c1c0 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -158,7 +158,14 @@ Dokumen Jaminan
- +
+
+ + +
+
+
+ @if(isset($detail->dokumen_jaminan)) {{ basename($detail->dokumen_jaminan) }} @@ -444,7 +451,7 @@
- Logo + Logo

PT BANK ARTHA GRAHA INTERNASIONAL

@@ -191,7 +191,7 @@
- +