Feature #15 : Pemilik Jaminan

This commit is contained in:
Daeng Deni Mardaeni 2024-08-22 14:52:36 +07:00
parent 0bdade3456
commit 3fc9e8fd0c
12 changed files with 743 additions and 7 deletions

View File

@ -0,0 +1,111 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
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\Http\Requests\PemilikJaminanRequest;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\HubunganPemilikJaminan;
use Modules\Lpj\Models\PemilikJaminan;
class PemilikJaminanController extends Controller
{
public $user;
public function index($id)
{
$debitur = Debiture::find($id);
$pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get();
return view(
'lpj::debitur.edit',
compact('debitur', 'pemilikJaminan'),
);
}
public function store(PemilikJaminanRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
PemilikJaminan::create($validate);
return redirect()->route('debitur.pemilik.index', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function create($id)
{
$debitur = Debiture::find($id);
$provinces = Province::all();
$hubunganPemilik = HubunganPemilikJaminan::all();
return view(
'lpj::pemilik_jaminan.form',
compact('debitur', 'provinces', 'hubunganPemilik'),
);
}
public function update(PemilikJaminanRequest $request, $id, $pemilik)
{
$validate = $request->validated();
if ($validate) {
try {
$pemilik = PemilikJaminan::find($pemilik);
$pemilik->update($validate);
return redirect()->route('debitur.pemilik.index', $id);
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
}
}
public function edit($id, $pemilik)
{
$pemilik = PemilikJaminan::find($pemilik);
$debitur = Debiture::find($pemilik->debiture_id);
$provinces = Province::all();
$cities = City::where('province_code', $pemilik->province_code)->get();
$districts = District::where('city_code', $pemilik->city_code)->get();
$villages = Village::where('district_code', $pemilik->district_code)->get();
$hubunganPemilik = HubunganPemilikJaminan::all();
return view(
'lpj::pemilik_jaminan.form',
compact(
'debitur',
'provinces',
'cities',
'districts',
'villages',
'hubunganPemilik',
'pemilik',
),
);
}
public function destroy($id, $pemilik_id)
{
try {
$jaminan = PemilikJaminan::find($pemilik_id);
$jaminan->delete();
echo json_encode(['success' => true, 'message' => 'Pemilik Jaminan deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete Pemilik Jaminan']);
}
}
}

View File

@ -13,6 +13,7 @@
: array : array
{ {
$rules = [ $rules = [
'debiture_id' => 'required|exists:debtures,id',
'pemilik_jaminan_id' => 'required', 'pemilik_jaminan_id' => 'required',
'jenis_jaminan_id' => 'required', 'jenis_jaminan_id' => 'required',
'jenis_legalitas_jaminan_id' => 'required', 'jenis_legalitas_jaminan_id' => 'required',

View File

@ -0,0 +1,44 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PemilikJaminanRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules()
: array
{
$rules = [
'debiture_id' => 'required|exists:debitures,id',
'npwp' => 'nullable|string|max:16',
'email' => 'nullable|email|max:100',
'phone' => 'nullable|string|max:20',
'hubungan_pemilik_jaminan_id' => 'nullable|exists:hubungan_pemilik_jaminan,id',
'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',
];
$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id;
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
{
return true;
}
}

View File

@ -0,0 +1,67 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Location\Models\City;
use Modules\Location\Models\District;
use Modules\Location\Models\Province;
use Modules\Location\Models\Village;
use Modules\Lpj\Database\Factories\PemilikJaminanFactory;
class PemilikJaminan extends Base
{
protected $table = 'pemilik_jaminan';
protected $fillable = [
'debiture_id',
'hubungan_pemilik_jaminan_id',
'name',
'npwp',
'email',
'phone',
'nomor_id',
'province_code',
'city_code',
'district_code',
'village_code',
'postal_code',
'address',
'status',
'authorized_at',
'authorized_status',
'authorized_by'
];
public function province()
{
return $this->belongsTo(Province::class, 'province_code', 'code');
}
public function city()
{
return $this->belongsTo(City::class, 'city_code', 'code');
}
public function district()
{
return $this->belongsTo(District::class, 'district_code', 'code');
}
public function village()
{
return $this->belongsTo(Village::class, 'village_code', 'code');
}
public function debitur(){
return $this->belongsTo(Debiture::class, 'debiture_id', 'id');
}
public function dokumen(){
return $this->hasMany(DokumenJaminan::class, 'pemilik_jaminan_id', 'id');
}
public function hubungan_pemilik(){
return $this->belongsTo(HubunganPemilikJaminan::class, 'hubungan_pemilik_jaminan_id', 'id');
}
}

View File

@ -0,0 +1,52 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\HubunganPemilikJaminan;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('pemilik_jaminan', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade');
$table->foreignIdFor(HubunganPemilikJaminan::class)->constrained('hubungan_pemilik_jaminan')->onDelete('cascade');
$table->string('name');
$table->string('npwp', 16)->nullable();
$table->string('nomor_id', 16)->nullable();
$table->string('email', 100)->nullable();
$table->string('phone', 15)->nullable();
$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->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('pemilik_jaminan');
}
};

View File

@ -9,7 +9,7 @@
Debitur Debitur
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="hidden" name="id" value="{{ $debitur->id ?? '' }}"> <input type="hidden" name="debiture_id" value="{{ $debitur->id ?? '' }}">
<p class="text-base text-gray-700">{{ $debitur->name }} | {{ $debitur->address.', '.$debitur->village->name.', '.$debitur->city->name.', '.$debitur->province->name.', '.$debitur->postal_code }}</p> <p class="text-base text-gray-700">{{ $debitur->name }} | {{ $debitur->address.', '.$debitur->village->name.', '.$debitur->city->name.', '.$debitur->province->name.', '.$debitur->postal_code }}</p>
</div> </div>
</div> </div>
@ -29,8 +29,8 @@
{{ $pemilik->name }} {{ $pemilik->name }}
</option> </option>
@else @else
<option value="{{ $pemilik-id }}"> <option value="{{ $pemilik->id }}">
{{ $Pemilik->name }} {{ $pemilik->name }}
</option> </option>
@endif @endif
@endforeach @endforeach

View File

@ -0,0 +1,172 @@
<div class="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-5 lg:gap-7.5">
@foreach($pemilikJaminan as $pemilik)
<div class="card flex flex-col gap-5 p-5 lg:p-7.5">
<div class="flex items-center flex-wrap justify-between gap-1">
<div class="flex items-center gap-2.5">
<div class="relative size-[44px] shrink-0">
<svg class="w-full h-full stroke-primary-clarity fill-primary-light" fill="none" height="48" viewBox="0 0 44 48" width="44" xmlns="http://www.w3.org/2000/svg">
<path d="M16 2.4641C19.7128 0.320509 24.2872 0.320508 28 2.4641L37.6506 8.0359C41.3634 10.1795 43.6506 14.141 43.6506
18.4282V29.5718C43.6506 33.859 41.3634 37.8205 37.6506 39.9641L28 45.5359C24.2872 47.6795 19.7128 47.6795 16 45.5359L6.34937
39.9641C2.63655 37.8205 0.349365 33.859 0.349365 29.5718V18.4282C0.349365 14.141 2.63655 10.1795 6.34937 8.0359L16 2.4641Z" fill="">
</path>
<path d="M16.25 2.89711C19.8081 0.842838 24.1919 0.842837 27.75 2.89711L37.4006 8.46891C40.9587 10.5232 43.1506 14.3196 43.1506
18.4282V29.5718C43.1506 33.6804 40.9587 37.4768 37.4006 39.5311L27.75 45.1029C24.1919 47.1572 19.8081 47.1572 16.25 45.1029L6.59937
39.5311C3.04125 37.4768 0.849365 33.6803 0.849365 29.5718V18.4282C0.849365 14.3196 3.04125 10.5232 6.59937 8.46891L16.25 2.89711Z" stroke="">
</path>
</svg>
<div class="absolute leading-none left-2/4 top-2/4 -translate-y-2/4 -translate-x-2/4">
<i class="ki-filled ki-user-tick text-1.5xl text-primary">
</i>
</div>
</div>
<div class="flex flex-col">
<a class="text-md font-semibold text-gray-900 hover:text-primary-active mb-px" href="/metronic/tailwind/demo1/public-profile/profiles/creator">
{{ $pemilik->name }}
</a>
<span class="text-2sm font-medium text-gray-600">
{{ $pemilik->hubungan_pemilik->name }}
</span>
</div>
</div>
<div class="menu inline-flex" data-menu="true">
<div class="flex flex-nowrap justify-center gap-1.5">
<a href="{{ route('debitur.pemilik.edit',['id' => $debitur->id,'pemilik' => $pemilik->id]) }}" class="btn btn-sm btn-icon btn-outline btn-info">
<i class="ki-outline ki-notepad-edit"></i>
</a>
<a onclick="deleteData({{ $pemilik->id }})" class="delete btn btn-sm btn-icon btn-outline btn-danger">
<i class="ki-outline ki-trash"></i>
</a>
</div>
</div>
</div>
<div class="grid">
<div class="flex items-center justify-between flex-wrap mb-3.5 gap-2">
<span class="text-2xs text-gray-600 uppercase">
nomor id/ktp
</span>
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
{{ $pemilik->nomor_id }}
</p>
</div>
<div class="border-t border-gray-300 border-dashed">
</div>
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
<span class="text-2xs text-gray-600 uppercase">
npwp
</span>
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
{{ $pemilik->npwp }}
</p>
</div>
<div class="border-t border-gray-300 border-dashed">
</div>
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
<span class="text-2xs text-gray-600 uppercase">
nomor telepon
</span>
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
{{ $pemilik->phone }}
</p>
</div>
<div class="border-t border-gray-300 border-dashed">
</div>
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
<span class="text-2xs text-gray-600 uppercase">
Email
</span>
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
{{ $pemilik->email }}
</p>
</div>
<div class="border-t border-gray-300 border-dashed mb-3.5">
</div>
<div class="flex items-start justify-between flex-wrap gap-2">
<span class="text-2xs text-gray-600 uppercase">
alamat
</span>
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
{{ $pemilik->address.', '.$pemilik->village->name.', '.$pemilik->city->name.', '.$pemilik->province->name.', '.$pemilik->postal_code }}
</p>
</div>
</div>
</div>
@endforeach
<style>
.add-new-bg {
background-image: url('/assets/media/images/2600x1200/bg-4.png');
}
.dark .add-new-bg {
background-image: url('/assets/media/images/2600x1200/bg-4-dark.png');
}
</style>
<a class="card border-2 border-dashed border-brand-clarity bg-center bg-[length:600px] bg-no-repeat add-new-bg" href="{{ route('debitur.pemilik.create',$debitur->id) }}">
<div class="card-body grid items-center">
<div class="flex flex-col gap-3">
<div class="flex justify-center pt-5">
<div class="relative size-[60px] shrink-0">
<svg class="w-full h-full stroke-brand-clarity fill-light" fill="none" height="48" viewBox="0 0 44 48" width="44" xmlns="http://www.w3.org/2000/svg">
<path d="M16 2.4641C19.7128 0.320509 24.2872 0.320508 28 2.4641L37.6506 8.0359C41.3634 10.1795 43.6506 14.141 43.6506
18.4282V29.5718C43.6506 33.859 41.3634 37.8205 37.6506 39.9641L28 45.5359C24.2872 47.6795 19.7128 47.6795 16 45.5359L6.34937
39.9641C2.63655 37.8205 0.349365 33.859 0.349365 29.5718V18.4282C0.349365 14.141 2.63655 10.1795 6.34937 8.0359L16 2.4641Z" fill="">
</path>
<path d="M16.25 2.89711C19.8081 0.842838 24.1919 0.842837 27.75 2.89711L37.4006 8.46891C40.9587 10.5232 43.1506 14.3196 43.1506
18.4282V29.5718C43.1506 33.6804 40.9587 37.4768 37.4006 39.5311L27.75 45.1029C24.1919 47.1572 19.8081 47.1572 16.25 45.1029L6.59937
39.5311C3.04125 37.4768 0.849365 33.6803 0.849365 29.5718V18.4282C0.849365 14.3196 3.04125 10.5232 6.59937 8.46891L16.25 2.89711Z" stroke="">
</path>
</svg>
<div class="absolute leading-none left-2/4 top-2/4 -translate-y-2/4 -translate-x-2/4">
<i class="ki-filled ki-user-edit text-2xl text-brand">
</i>
</div>
</div>
</div>
<div class="flex flex-col text-center">
<span class="text-lg font-semibold text-gray-900 hover:text-primary-active mb-px">
Pemilik Jaminan
</span>
<span class="text-2sm font-normal text-gray-600">
Tambah Pemilik
</span>
</div>
</div>
</div>
</a>
</div>
@push('scripts')
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script type="text/javascript">
function deleteData(data) {
Swal.fire({
title: 'Are you sure?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!'
}).then((result) => {
if (result.isConfirmed) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
}
});
$.ajax(`debitur/{{$debitur->id}}}/pemilik/${data}`, {
type: 'DELETE'
}).then((response) => {
swal.fire('Deleted!', 'Pemilik Jaminan has been deleted.', 'success').then(() => {
window.location.reload();
});
}).catch((error) => {
console.error('Error:', error);
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
});
}
})
}
</script>
@endpush

View File

@ -11,7 +11,8 @@
<div class="card-header" id="basic_settings"> <div class="card-header" id="basic_settings">
<div class="card-title flex flex-row gap-1.5"> <div class="card-title flex flex-row gap-1.5">
<a href="{{ route('debitur.edit',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Debitur</a> <a href="{{ route('debitur.edit',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Debitur</a>
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Pinjaman</a> <a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Dokumen Jaminan</a>
<a href="{{ route('debitur.pemilik.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.pemilik.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Pemilk Jaminan</a>
</div> </div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a> <a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
@ -20,6 +21,8 @@
<div class="card-body"> <div class="card-body">
@if(request()->routeIs('debitur.edit', $debitur)) @if(request()->routeIs('debitur.edit', $debitur))
@include('lpj::debitur.components.debitur') @include('lpj::debitur.components.debitur')
@elseif(request()->routeIs('debitur.pemilik.index', $debitur))
@include('lpj::debitur.components.pemilik')
@else @else
@include('lpj::debitur.components.jaminan') @include('lpj::debitur.components.jaminan')
@endif @endif

View File

@ -0,0 +1,236 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($pemilik->id) ? 'Edit' : 'Tambah' }} Pemilik Jaminan
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('debitur.pemilik.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body">
<form action="{{ isset($pemilik->id) ? route('debitur.pemilik.update', ['id'=>$debitur->id,'pemilik'=>$pemilik->id]) : route('debitur.pemilik.store',$debitur->id) }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
@if(isset($pemilik->id))
@method('PUT')
@endif
@csrf
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Debitur
</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="hidden" name="debiture_id" value="{{ $debitur->id ?? '' }}">
<p class="text-base text-gray-700">{{ $debitur->name }} | {{ $debitur->address.', '.$debitur->village->name.', '.$debitur->city->name.', '.$debitur->province->name.', '.$debitur->postal_code }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Hubungan Pemilik Jaminan
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="hubungan_pemilik_jaminan_id" id="hubungan_pemilik_jaminan_id">
<option value="">Pilih Hubungan Pemilik Jaminan</option>
@if(isset($hubunganPemilik))
@foreach($hubunganPemilik as $hubungan)
@if(isset($pemilik))
<option value="{{ $hubungan->id }}" {{ isset($pemilik->hubungan_pemilik_jaminan_id) && $pemilik->hubungan_pemilik_jaminan_id == $hubungan->id?'selected' : '' }}>
{{ $hubungan->name }}
</option>
@else
<option value="{{ $hubungan->id }}">
{{ $hubungan->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('hubungan_pemilik_jaminan_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nama Lengkap
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger @enderror" type="text " id="name" name="name" value="{{ $pemilik->name ?? '' }}" placeholder="Nama Pemilik Jaminan">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nomor ID/KTP
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_id') border-danger @enderror" type="number" name="nomor_id" value="{{ $debitur->nomor_id ?? '' }}">
@error('nomor_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
NPWP
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('npwp') border-danger @enderror" type="number" name="npwp" value="{{ $debitur->npwp ?? '' }}">
@error('npwp')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Email
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('email') border-danger @enderror" type="email" name="email" value="{{ $debitur->email ?? '' }}">
@error('email')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
No Handphone
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('phone') border-danger @enderror" type="number" name="phone" value="{{ $debitur->phone ?? '' }}">
@error('phone')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Address
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="flex flex-wrap items-baseline w-full">
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger @enderror">
<option value="">Select Province</option>
@foreach($provinces as $province)
@if(isset($pemilik))
<option value="{{ $province->code }}" {{ isset($pemilik->province_code) && $pemilik->province_code == $province->code?'selected' : '' }}>
{{ $province->name }}
</option>
@else
<option value="{{ $province->code }}">
{{ $province->name }}
</option>
@endif
@endforeach
</select>
@error('province_code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger @enderror">
<option value="">Select City</option>
@if(isset($cities))
@foreach($cities as $city)
@if(isset($pemilik))
<option value="{{ $city->code }}" {{ isset($pemilik->city_code) && $pemilik->city_code == $city->code?'selected' : '' }}>
{{ $city->name }}
</option>
@else
<option value="{{ $city->code }}">
{{ $city->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('city_code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
<div class="flex flex-wrap items-baseline w-full">
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger @enderror">
<option value="">Select District</option>
@if(isset($districts))
@foreach($districts as $district)
@if(isset($pemilik))
<option value="{{ $district->code }}" {{ isset($pemilik->district_code) && $pemilik->district_code == $district->code?'selected' : '' }}>
{{ $district->name }}
</option>
@else
<option value="{{ $district->code }}">
{{ $district->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('district_code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger @enderror">
<option value="">Select Village</option>
@if(isset($villages))
@foreach($villages as $village)
@if(isset($pemilik))
<option value="{{ $village->code }}" {{ isset($pemilik->village_code) && $pemilik->village_code == $village->code?'selected' : '' }}>
{{ $village->name }}
</option>
@else
<option value="{{ $village->code }}">
{{ $village->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('district_code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('postal_code') border-danger @enderror" type="number" id="postal_code" name="postal_code" value="{{ $pemilik->postal_code ?? '' }}" placeholder="Postal Code">
@error('postal_code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex flex-row w-full mt-2 lg:mt-5">
<textarea class="textarea @error('address') border-danger @enderror" rows="3" type="number" id="address" name="address">{{ $pemilik->address ?? '' }}</textarea>
@error('address')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</form>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,24 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($document->id) ? 'Edit' : 'Tambah' }} Pemilik Jaminan
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body">
@include('lpj::debitur.form')
</div>
</div>
</div>
@endsection

View File

@ -217,3 +217,19 @@
$trail->push('Edit Data Jaminan Debitur'); $trail->push('Edit Data Jaminan Debitur');
}); });
Breadcrumbs::for('debitur.pemilik.index', function (BreadcrumbTrail $trail) {
$trail->parent('debitur');
$trail->push('Data Pemilik Jaminan Debitur');
});
Breadcrumbs::for('debitur.pemilik.create', function (BreadcrumbTrail $trail) {
$trail->parent('debitur.pemilik.index');
$trail->push('Tambah Data Pemilik Jaminan Debitur');
});
Breadcrumbs::for('debitur.pemilik.edit', function (BreadcrumbTrail $trail) {
$trail->parent('debitur.pemilik.index');
$trail->push('Edit Data Pemilik Jaminan Debitur');
});

View File

@ -14,6 +14,7 @@
use Modules\Lpj\Http\Controllers\JenisJaminanController; use Modules\Lpj\Http\Controllers\JenisJaminanController;
use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController; use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController;
use Modules\Lpj\Http\Controllers\NilaiPlafondController; use Modules\Lpj\Http\Controllers\NilaiPlafondController;
use Modules\Lpj\Http\Controllers\PemilikJaminanController;
use Modules\Lpj\Http\Controllers\TujuanPenilaianController; use Modules\Lpj\Http\Controllers\TujuanPenilaianController;
/* /*
@ -156,14 +157,23 @@
Route::get('export', [DebitureController::class, 'export'])->name('export'); Route::get('export', [DebitureController::class, 'export'])->name('export');
Route::name('jaminan.')->prefix('{id}/jaminan')->group(function(){ Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () {
Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); Route::get('/', [DokumenJaminanController::class, 'index'])->name('index');
Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); Route::get('create', [DokumenJaminanController::class, 'create'])->name('create');
Route::get('{jaminan}/edit', [DokumenJaminanController::class,'edit'])->name('edit'); Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit');
Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update');
Route::post('store', [DokumenJaminanController::class,'store'])->name('store'); Route::post('store', [DokumenJaminanController::class, 'store'])->name('store');
Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy');
}); });
Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () {
Route::get('/', [PemilikJaminanController::class, 'index'])->name('index');
Route::get('create', [PemilikJaminanController::class, 'create'])->name('create');
Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit');
Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update');
Route::post('store', [PemilikJaminanController::class, 'store'])->name('store');
Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy');
});
}); });
Route::resource('debitur', DebitureController::class); Route::resource('debitur', DebitureController::class);