lpj/app/Http/Controllers/DokumenJaminanController.php

227 lines
9.9 KiB
PHP
Raw Normal View History

<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
2024-09-10 10:53:46 +00:00
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;
2024-09-10 10:53:46 +00:00
use Modules\Lpj\Models\DetailDokumenJaminan;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\JenisLegalitasJaminan;
use Modules\Lpj\Models\PemilikJaminan;
class DokumenJaminanController extends Controller
{
public $user;
public function index($id)
{
$debitur = Debiture::find($id);
2024-09-11 03:50:46 +00:00
$documents = DokumenJaminan::with('pemilik','detail')->where('debiture_id', $id)->get();
return view(
'lpj::debitur.edit',
compact('debitur', 'documents'),
);
}
public function store(DokumenJaminanRequest $request, $id)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
2024-09-10 10:53:46 +00:00
if ($validate) {
try {
2024-09-10 10:53:46 +00:00
DB::beginTransaction();
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => 1,
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
2024-08-22 10:23:20 +00:00
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
2024-08-22 10:23:20 +00:00
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
}
2024-09-10 10:53:46 +00:00
$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(),
);
}
2024-08-22 10:23:20 +00:00
return redirect()->route('debitur.jaminan.index', $id)->with(
'success',
'Dokumen Jaminan berhasil ditambahkan',
);
} catch (Exception $e) {
2024-09-10 10:53:46 +00:00
DB::rollBack();
return redirect()->route('debitur.jaminan.index', $id)->with('error','ggl'. $e->getMessage());
}
}
}
public function create($id)
{
$debitur = Debiture::find($id);
$provinces = Province::all();
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
2024-08-22 10:23:20 +00:00
$pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get();
return view(
'lpj::debitur.jaminan',
2024-08-22 10:23:20 +00:00
compact('debitur', 'provinces', 'jenisJaminan', 'jenisLegalitasJaminan', 'pemilikJaminan'),
);
}
public function update(DokumenJaminanRequest $request, $id, $jaminan)
{
$debitur = Debiture::find($id);
$validate = $request->validated();
if ($validate) {
try {
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => 1,
'npwp' => $debitur->npwp,
'email' => $debitur->email,
'phone' => $debitur->phone,
'province_code' => $debitur->province_code,
'city_code' => $debitur->city_code,
'district_code' => $debitur->district_code,
'village_code' => $debitur->village_code,
'postal_code' => $debitur->postal_code,
'address' => $debitur->address,
];
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
}
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::find($jaminan);
$document->update($validate);
2024-08-22 10:23:20 +00:00
return redirect()->route('debitur.jaminan.index', $id)->with(
'success',
'Dokumen Jaminan berhasil diubah',
);
} catch (Exception $e) {
2024-08-22 10:23:20 +00:00
return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage());
}
}
}
public function edit($id, $jaminan)
{
$document = DokumenJaminan::find($jaminan);
$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();
2024-08-22 10:23:20 +00:00
$pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get();
return view(
'lpj::debitur.jaminan',
compact(
'debitur',
'provinces',
'jenisJaminan',
'jenisLegalitasJaminan',
'document',
'cities',
'districts',
'villages',
'pemilikJaminan',
),
);
}
public function destroy($id, $jaminan_id)
{
try {
$jaminan = DokumenJaminan::find($jaminan_id);
$jaminan->delete();
echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']);
}
}
2024-09-11 03:50:46 +00:00
public function download($id){
$document = DetailDokumenJaminan::find($id);
return response()->download(storage_path('app/public/' . $document->dokumen_jaminan));
}
}