diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 1907fbf..520c20e 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -4,12 +4,14 @@ use App\Http\Controllers\Controller; use Exception; + use Illuminate\Support\Facades\DB; use Modules\Location\Models\City; use Modules\Location\Models\District; use Modules\Location\Models\Province; use Modules\Location\Models\Village; use Modules\Lpj\Http\Requests\DokumenJaminanRequest; use Modules\Lpj\Models\Debiture; + use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\DokumenJaminan; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisLegalitasJaminan; @@ -36,8 +38,10 @@ $debitur = Debiture::find($id); $validate = $request->validated(); + if ($validate) { try { + DB::beginTransaction(); $validate['debiture_id'] = $id; if ($validate['pemilik_jaminan_id'] == 0) { @@ -61,22 +65,54 @@ $validate['pemilik_jaminan_id'] = $pemilikJaminan->id; } - if ($request->hasFile('dokumen_jaminan')) { - $file = $request->file('dokumen_jaminan'); - $file_name = $file->getClientOriginalName(); - $file->storeAs('public/jaminan/' . $debitur->id, $file_name); - $validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name; + $document = DokumenJaminan::create($validate); + + try { + + foreach ($request->dokumen_jaminan as $key => $value) { + $file_name = $value->getClientOriginalName(); + + if ($file_name) { + try { + $file_name = $value->getClientOriginalName(); + $value->storeAs( + 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', + $file_name + ); + + $detail = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], + 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name, + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; + DetailDokumenJaminan::create($detail); + } catch (Exception $e) { + DB::rollBack(); + return redirect()->route('debitur.jaminan.index', $id)->with( + 'error', + 'Gagal upload file dokumen jaminan '. $key. ': '. $e->getMessage(), + ); + } + } + } + DB::commit(); + }catch (Exception $e) { + DB::rollBack(); + return redirect()->route('debitur.jaminan.index', $id)->with( + 'error', + 'gg'.$e->getMessage(), + ); } - - DokumenJaminan::create($validate); - return redirect()->route('debitur.jaminan.index', $id)->with( 'success', 'Dokumen Jaminan berhasil ditambahkan', ); } catch (Exception $e) { - return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage()); + DB::rollBack(); + return redirect()->route('debitur.jaminan.index', $id)->with('error','ggl'. $e->getMessage()); } } } diff --git a/app/Http/Requests/DetailDokumenJaminanRequest.php b/app/Http/Requests/DetailDokumenJaminanRequest.php new file mode 100644 index 0000000..4cb22ce --- /dev/null +++ b/app/Http/Requests/DetailDokumenJaminanRequest.php @@ -0,0 +1,43 @@ + 'required|exists:debitures,id', + 'pemilik_jaminan_id' => 'required', + 'jenis_jaminan_id' => 'required', + 'jenis_legalitas_jaminan_id' => 'required', + 'dokumen_jaminan' => 'nullable|file|mimes:pdf', + 'keterangan' => 'nullable|string|max:255', + 'province_code' => 'nullable|exists:provinces,code', + 'city_code' => 'nullable|exists:cities,code', + 'district_code' => 'nullable|exists:districts,code', + 'village_code' => 'nullable|exists:villages,code', + 'name' => 'required', + 'address' => 'nullable|string', + 'postal_code' => 'nullable|string|max:10', + 'status' => 'nullable|boolean', + ]; + + return $rules; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize() + : bool + { + return true; + } + } diff --git a/app/Http/Requests/DokumenJaminanRequest.php b/app/Http/Requests/DokumenJaminanRequest.php index 4cb22ce..bc5cad4 100644 --- a/app/Http/Requests/DokumenJaminanRequest.php +++ b/app/Http/Requests/DokumenJaminanRequest.php @@ -16,14 +16,10 @@ 'debiture_id' => 'required|exists:debitures,id', 'pemilik_jaminan_id' => 'required', 'jenis_jaminan_id' => 'required', - 'jenis_legalitas_jaminan_id' => 'required', - 'dokumen_jaminan' => 'nullable|file|mimes:pdf', - 'keterangan' => 'nullable|string|max:255', 'province_code' => 'nullable|exists:provinces,code', 'city_code' => 'nullable|exists:cities,code', 'district_code' => 'nullable|exists:districts,code', 'village_code' => 'nullable|exists:villages,code', - 'name' => 'required', 'address' => 'nullable|string', 'postal_code' => 'nullable|string|max:10', 'status' => 'nullable|boolean', diff --git a/app/Models/DetailDokumenJaminan.php b/app/Models/DetailDokumenJaminan.php new file mode 100644 index 0000000..e164ea5 --- /dev/null +++ b/app/Models/DetailDokumenJaminan.php @@ -0,0 +1,34 @@ +belongsTo(JenisLegalitasJaminan::class, 'jenis_legalitas_jaminan_id', 'id'); + } + + public function dokumenJaminan(){ + return $this->belongsTo(DokumenJaminan::class, 'dokumen_jaminan_id', 'id'); + } + } diff --git a/app/Models/DokumenJaminan.php b/app/Models/DokumenJaminan.php index 83886f6..274f3c8 100644 --- a/app/Models/DokumenJaminan.php +++ b/app/Models/DokumenJaminan.php @@ -16,10 +16,6 @@ 'permohonan_id', 'pemilik_jaminan_id', 'jenis_jaminan_id', - 'jenis_legalitas_jaminan_id', - 'name', - 'dokumen_jaminan', - 'keterangan', 'province_code', 'city_code', 'district_code', @@ -64,10 +60,6 @@ return $this->belongsTo(JenisJaminan::class, 'jenis_jaminan_id', 'id'); } - public function jenisLegalitasJaminan(){ - return $this->belongsTo(JenisLegalitasJaminan::class, 'jenis_legalitas_jaminan_id', 'id'); - } - public function permohonan(){ return $this->belongsTo(Permohonan::class, 'permohonan_id', 'id'); } diff --git a/database/migrations/2024_08_20_090400_create_dokumen_jaminan_table.php b/database/migrations/2024_09_05_030400_create_dokumen_jaminan_table.php similarity index 88% rename from database/migrations/2024_08_20_090400_create_dokumen_jaminan_table.php rename to database/migrations/2024_09_05_030400_create_dokumen_jaminan_table.php index 979d973..2e663c9 100644 --- a/database/migrations/2024_08_20_090400_create_dokumen_jaminan_table.php +++ b/database/migrations/2024_09_05_030400_create_dokumen_jaminan_table.php @@ -18,20 +18,16 @@ use Illuminate\Support\Facades\Schema; { Schema::create('dokumen_jaminan', function (Blueprint $table) { $table->id(); - $table->string('name'); $table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade'); $table->foreignIdFor(Permohonan::class)->nullable()->constrained('permohonan')->onDelete('cascade'); $table->foreignIdFor(JenisJaminan::class)->constrained('jenis_jaminan')->onDelete('cascade'); $table->foreignIdFor(PemilikJaminan::class)->constrained('pemilik_jaminan')->onDelete('cascade'); - $table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade'); $table->string('province_code')->nullable()->index(); $table->string('city_code')->nullable()->index(); $table->string('district_code')->nullable()->index(); $table->string('village_code')->nullable()->index(); $table->string('postal_code', 5)->nullable(); $table->text('address')->nullable(); - $table->string('dokumen_jaminan')->nullable(); - $table->string('keterangan')->nullable(); $table->boolean('status')->default(true)->nullable(); $table->timestamps(); diff --git a/database/migrations/2024_09_05_035110_create_detail_dokumen_jaminan_table.php b/database/migrations/2024_09_05_035110_create_detail_dokumen_jaminan_table.php new file mode 100644 index 0000000..cef5294 --- /dev/null +++ b/database/migrations/2024_09_05_035110_create_detail_dokumen_jaminan_table.php @@ -0,0 +1,44 @@ +id(); + $table->string('name'); + $table->foreignIdFor(DokumenJaminan::class)->constrained('dokumen_jaminan')->onDelete('cascade'); + $table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade'); + $table->string('dokumen_jaminan')->nullable(); + $table->string('keterangan')->nullable(); + + $table->boolean('status')->default(true)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('detail_dokumen_jaminan'); + } +}; diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 5c77732..67063bf 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -73,67 +73,9 @@ @enderror -
- -
- - @error('jenis_legalitas_jaminan_id') - {{ $message }} - @enderror -
-
-
- -
- - @error('name') - {{ $message }} - @enderror -
-
+
-
- -
- - @if(isset($document->dokumen_jaminan)) - {{ basename($document->dokumen_jaminan) }} - - @endif - @error('dokumen_jaminan') - {{ $message }} - @enderror -
-
- -
- -
- - @error('keterangan') - {{ $message }} - @enderror -
@@ -155,7 +97,8 @@ {{ $province->name }} @endif - ; @endforeach + ; + @endforeach @error('province_code') {{ $message }} @@ -253,29 +196,66 @@ @push('scripts') @endpush diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index d5009fc..4cfeb65 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -19,14 +19,7 @@
-
- - {{ $document->name }} - - - {{ $document->jenisJaminan->name }} | {{ $document->jenisLegalitasJaminan->name }} - -
+