diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php
index 6c2411f..51364d9 100644
--- a/app/Http/Controllers/DokumenJaminanController.php
+++ b/app/Http/Controllers/DokumenJaminanController.php
@@ -383,7 +383,8 @@
public function bulkDownload()
{
$dokumenIds = request()->get('jaminan'); // Expecting an array of dokumen_jaminan_id
- $documents = DetailDokumenJaminan::where('dokumen_jaminan_id', $dokumenIds)->get();
+ $documents = DokumenJaminan::where('id', $dokumenIds)->with(['jenisJaminan', 'detail','debiture'])->get();
+
if ($documents->isEmpty()) {
return redirect()->back()->with('error', 'No documents found for the provided IDs.');
}
@@ -394,18 +395,24 @@
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
foreach ($documents as $document) {
- if($document->dokumen_jaminan) {
- $files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode(
- $document->dokumen_jaminan,
- ) : [$document->dokumen_jaminan];
+ $jenisJaminan = $document->debiture->permohonan->nomor_registrasi ?? 'Uncategorized';
+ $folderName = $this->sanitizeFolderName($jenisJaminan);
- foreach ($files as $file) {
- $filePath = storage_path('app/public/' . $file);
- if (file_exists($filePath)) {
- $zip->addFile($filePath, basename($filePath));
- } else {
- // Log or display an error message for missing files
- return redirect()->back()->with('error', 'File not found: ' . $filePath);
+ foreach ($document->detail as $detail) {
+ if($detail->dokumen_jaminan) {
+ $folderJaminanName = $this->sanitizeFolderName($detail->jenisLegalitasJaminan->name?? 'Uncategorized');
+ $files = is_array(json_decode($detail->dokumen_jaminan))
+ ? json_decode($detail->dokumen_jaminan)
+ : [$detail->dokumen_jaminan];
+
+ foreach ($files as $file) {
+ $filePath = storage_path('app/public/' . $file);
+ if (file_exists($filePath)) {
+ $zip->addFile($filePath, $folderName . '/' .$folderJaminanName.'/'.basename($filePath));
+ } else {
+ // Log or display an error message for missing files
+ \Log::warning('File not found: ' . $filePath);
+ }
}
}
}
@@ -423,7 +430,13 @@
'Content-Type' => 'application/zip',
'Content-Disposition' => 'attachment; filename="' . $zipFileName . '"',
'Content-Length' => filesize($zipFilePath),
- ])->deleteFileAfterSend(false);
+ ])->deleteFileAfterSend(true);
+ }
+
+ private function sanitizeFolderName($name)
+ {
+ // Remove any characters that are not allowed in folder names
+ return preg_replace('/[^a-zA-Z0-9_\-]/', '_', $name);
}
diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php
index 99e5f4f..6b69cd0 100644
--- a/app/Http/Controllers/RegistrasiController.php
+++ b/app/Http/Controllers/RegistrasiController.php
@@ -4,28 +4,14 @@
use App\Http\Controllers\Controller;
use Exception;
- use Illuminate\Http\Request;
- use Maatwebsite\Excel\Facades\Excel;
- // use Modules\Location\Models\City;
- // use Modules\Location\Models\District;
- // use Modules\Location\Models\Province;
- // use Modules\Location\Models\Village;
- // use Modules\Lpj\Exports\DebitureExport;
- // use Modules\Lpj\Http\Requests\DebitureRequest;
- // use Modules\Lpj\Http\Requests\DokumenJaminanRequest;
- // use Modules\Lpj\Models\Branch;
- // use Modules\Lpj\Models\Debiture;
- // use Modules\Lpj\Models\DokumenJaminan;
- // use Modules\Lpj\Models\JenisJaminan;
- // use Modules\Lpj\Models\JenisLegalitasJaminan;
- // use Modules\Lpj\Models\PemilikJaminan;
- use Modules\Lpj\Models\Permohonan;
- use Modules\Lpj\Models\JenisPenilaian;
- use Modules\Lpj\Models\Regions;
use Illuminate\Http\JsonResponse;
- use Illuminate\Support\Facades\Validator;
+ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
-
+ use Illuminate\Support\Facades\Validator;
+ use Maatwebsite\Excel\Facades\Excel;
+ use Modules\Lpj\Models\JenisPenilaian;
+ use Modules\Lpj\Models\Permohonan;
+ use Modules\Lpj\Models\Regions;
class RegistrasiController extends Controller
{
@@ -43,7 +29,7 @@
}
// Retrieve data from the database
- $query = Permohonan::query()->where('status','=','preregister');
+ $query = Permohonan::query()->where('status', '=', 'preregister');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
@@ -101,143 +87,132 @@
'data' => $data,
]);
}
-
+
public function edit($id)
{
return view('lpj::registrasi.edit', compact('id'));
}
- public function setData(Request $request): JsonResponse
- {
- $data = array();
- $datas = array();
+ public function setData(Request $request)
+ : JsonResponse {
+ $data = [];
+ $datas = [];
if (request()->ajax()) {
- $id = $request->id;
+ $id = $request->id;
$datas = Permohonan::find($id);
-
+
if ($datas) {
- $jenisPenilaians=null;
- $regions=null;
- $regions=Regions::pluck('name', 'id');
- $jenisPenilaians=JenisPenilaian::pluck('name', 'id');
-
- $data['status'] = 'success';
- $data['regions'] = $regions;
- $data['jenisPenilaians'] = $jenisPenilaians;
- $data['datas'] = $datas;
- $data['message'] ['message_success'] = array("data successfully found");
+ $jenisPenilaians = null;
+ $regions = null;
+ $regions = Regions::pluck('name', 'id');
+ $jenisPenilaians = JenisPenilaian::pluck('name', 'id');
+
+ $data['status'] = 'success';
+ $data['regions'] = $regions;
+ $data['jenisPenilaians'] = $jenisPenilaians;
+ $data['datas'] = $datas;
+ $data['message'] ['message_success'] = ["data successfully found"];
} else {
- $data['status'] = 'error';
- $data['datas'] = null;
- $data['message'] ['message_data'] = array("data not found");
+ $data['status'] = 'error';
+ $data['datas'] = null;
+ $data['message'] ['message_data'] = ["data not found"];
}
} else {
- $data['status'] = 'error';
- $data['message'] ['message_ajax'] = array("no ajax request");
+ $data['status'] = 'error';
+ $data['message'] ['message_ajax'] = ["no ajax request"];
}
return response()->json($data);
}
- public function update(Request $request, $id): JsonResponse
- {
+ public function update(Request $request, $id)
+ : JsonResponse {
// init
- $data = array();
- $dataku = array();
+ $data = [];
+ $dataku = [];
$tindakan = null;
if (request()->ajax()) {
$validator = RegistrasiController::rulesEditnya($request, $id);
-
+
if ($validator['fails']) {
$data['message'] = $validator['errors'];
- $data['status'] = 'error';
- }
- else
- {
+ $data['status'] = 'error';
+ } else {
try {
+ $tindakan = $request->tindakan;
+ $dataku = [
+ 'registrasi_by' => Auth::id(),
+ 'registrasi_at' => now(),
+ ];
- $tindakan=$request->tindakan;
- $dataku = ['registrasi_by' => Auth::id(),
- 'registrasi_at' => now()
- ];
-
- if($tindakan==0)
- {
- $dataku['jenis_penilaian_id'] =$request->jenis_penilaian;
- $dataku['region_id'] =$request->region;
- $dataku['status'] = 'registered';
- if($request->catatan2)
- $dataku['registrasi_catatan'] =$request->catatan2;
- }
- else
- {
- $dataku['registrasi_catatan'] =$request->catatan;
- $dataku['status'] = 'revisi';
+ if ($tindakan == 0) {
+ $dataku['jenis_penilaian_id'] = $request->jenis_penilaian;
+ $dataku['region_id'] = $request->region;
+ $dataku['status'] = 'registered';
+ if ($request->catatan2) {
+ $dataku['registrasi_catatan'] = $request->catatan2;
+ }
+ } else {
+ $dataku['registrasi_catatan'] = $request->catatan;
+ $dataku['status'] = 'revisi';
}
- $data['dataku'] =$dataku;
-
+ $data['dataku'] = $dataku;
+
$modal = Permohonan::find($id);
-
+
$modal->update($dataku);
- //
- $data['status'] = 'success';
- $data['message'] ['message_success'] = array('Regitrasi '.$modal->nomor_registrasi.' successfully');
+ //
+ $data['status'] = 'success';
+ $data['message'] ['message_success'] = ['Regitrasi ' . $modal->nomor_registrasi . ' successfully'];
} catch (Exception $e) {
-
- $data['status'] = 'error';
- $data['message'] ['message_try_catch'] = array('Regitrasi updated failed.');
+ $data['status'] = 'error';
+ $data['message'] ['message_try_catch'] = ['Regitrasi updated failed.'];
}
}
-
} else {
- $data['status'] = 'error';
- $data['message'] ['message_ajax'] = array("no ajax request");
+ $data['status'] = 'error';
+ $data['message'] ['message_ajax'] = ["no ajax request"];
}
return response()->json($data);
-
}
public function rulesEditnya($request, $id)
{
- $tindakan=null;
- $jenis_penilaian=null;
- $validate_catatan='';
- $tindakan=$request->tindakan;
- $jenis_penilaian=$request->jenis_penilaian;
-
+ $tindakan = null;
+ $jenis_penilaian = null;
+ $validate_catatan = '';
+ $tindakan = $request->tindakan;
+ $jenis_penilaian = $request->jenis_penilaian;
+
$validateIt = [
// 'name' diambil dari definisi parameter yang di kirim pada POST Data
'tindakan' => 'required',
];
$messageIt = [
- 'tindakan.required' => 'Silahkan pilih Tindakan'
+ 'tindakan.required' => 'Silahkan pilih Tindakan',
];
- if($tindakan==0)
- {
- $validateIt['jenis_penilaian'] = ['required'];
- $messageIt ['jenis_penilaian.required']= 'Silahkan pilih Jenis Penilaian';
+ if ($tindakan == 0) {
+ $validateIt['jenis_penilaian'] = ['required'];
+ $messageIt ['jenis_penilaian.required'] = 'Silahkan pilih Jenis Penilaian';
- // INTERNAL
- if(1==$jenis_penilaian)
- {
- $validateIt['region'] = ['required'];
- $messageIt ['region.required']= 'Silahkan pilih Region';
+ // INTERNAL
+ if (1 == $jenis_penilaian) {
+ $validateIt['region'] = ['required'];
+ $messageIt ['region.required'] = 'Silahkan pilih Region';
}
- }
- elseif($tindakan==1)
- {
- $validateIt['catatan'] = ['required'];
- $messageIt ['catatan.required']= 'Silahkan isi Catatan';
+ } elseif ($tindakan == 1) {
+ $validateIt['catatan'] = ['required'];
+ $messageIt ['catatan.required'] = 'Silahkan isi Catatan';
}
$validator = Validator::make($request->all(), $validateIt, $messageIt);
- $data['fails'] = $validator->fails();
+ $data['fails'] = $validator->fails();
$data['errors'] = $validator->errors();
return $data;
@@ -245,8 +220,8 @@
public function show($id)
{
- $permohonan = Permohonan::find($id);
- return view('lpj::registrasi.show', compact('id','permohonan'));
+ $permohonan = Permohonan::find($id);
+ return view('lpj::registrasi.show', compact('id', 'permohonan'));
}
}
diff --git a/app/Models/Debiture.php b/app/Models/Debiture.php
index 8980513..3080ecb 100644
--- a/app/Models/Debiture.php
+++ b/app/Models/Debiture.php
@@ -60,4 +60,8 @@
return $this->hasMany(DokumenJaminan::class);
}
+ public function permohonan(){
+ return $this->hasOne(Permohonan::class, 'debiture_id', 'id' );
+ }
+
}
diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php
index 1dd7bdd..60c9303 100644
--- a/app/Models/Permohonan.php
+++ b/app/Models/Permohonan.php
@@ -3,6 +3,7 @@
namespace Modules\Lpj\Models;
use Modules\Lpj\Database\Factories\PermohonanFactory;
+use Modules\Lpj\Services\PermohonanHistoryService;
use Modules\Usermanagement\Models\User;
class Permohonan extends Base
@@ -38,8 +39,66 @@ class Permohonan extends Base
'registrasi_at',
'jenis_penilaian_id',
'region_id',
+ 'attachment'
];
+ protected static function boot()
+ {
+ parent::boot();
+
+ static::creating(function ($permohonan) {
+ static::handleFileUpload($permohonan);
+ });
+
+ static::updating(function ($permohonan) {
+ static::handleFileUpload($permohonan);
+ });
+
+ static::created(function ($permohonan) {
+ static::createHistory($permohonan, 'created');
+ });
+
+ static::updated(function ($permohonan) {
+ static::createHistory($permohonan, 'updated');
+ });
+ }
+
+ protected static function handleFileUpload($permohonan)
+ {
+ if (request()->hasFile('attachment')) {
+ $file = request()->file('attachment');
+ $fileName = time() . '_' . $file->getClientOriginalName();
+ $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public');
+
+ // Delete old file if it exists
+ if ($permohonan->attachment) {
+ Storage::disk('public')->delete($permohonan->attachment);
+ }
+
+ $permohonan->attachment = $filePath;
+ }
+ }
+
+ protected static function createHistory($permohonan, $action)
+ {
+ $historyService = app(PermohonanHistoryService::class);
+
+ $status = $permohonan->status;
+ $keterangan = request()->input('keterangan'); // Get keterangan from request
+ $beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : [];
+ $afterRequest = $permohonan->toArray();
+ $file = $permohonan->attachment ? Storage::disk('public')->path($permohonan->attachment) : null;
+
+ $historyService->createHistory(
+ $permohonan,
+ $status,
+ $keterangan,
+ $beforeRequest,
+ $afterRequest,
+ $file
+ );
+ }
+
public function user()
{
return $this->belongsTo(User::class);
diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php
index 3435775..63b2817 100644
--- a/resources/views/component/detail-jaminan.blade.php
+++ b/resources/views/component/detail-jaminan.blade.php
@@ -1,3 +1,164 @@
+
+
+
+
+
+ Nomor Register Permohonan:
+
+
+ {{ $permohonan->nomor_registrasi }}
+
+
+
+
+
+ Pemohon:
+
+
+ {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }}
+
+
+
+
+
+ Tujan Permohonan:
+
+
+ {{ $permohonan->tujuanPenilaian->name }}
+
+
+
+
+
+ Nilai Plafond:
+
+
+ {{ $permohonan->nilaiPlafond->name }}
+
+
+
+
+
+ Status Bayar:
+
+
+ {{ str_replace('_',' ',$permohonan->status_bayar) }}
+
+
+
+
+
+ Nilai NJOP:
+
+
+ {{ formatRupiah($permohonan->niilai_njop) }}
+
+
+
+
+
+
+
+