Feature #15 : Pemilik Jaminan
This commit is contained in:
parent
0bdade3456
commit
3fc9e8fd0c
111
app/Http/Controllers/PemilikJaminanController.php
Normal file
111
app/Http/Controllers/PemilikJaminanController.php
Normal 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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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',
|
||||||
|
44
app/Http/Requests/PemilikJaminanRequest.php
Normal file
44
app/Http/Requests/PemilikJaminanRequest.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
67
app/Models/PemilikJaminan.php
Normal file
67
app/Models/PemilikJaminan.php
Normal 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');
|
||||||
|
}
|
||||||
|
}
|
@ -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');
|
||||||
|
}
|
||||||
|
};
|
@ -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
|
||||||
|
@ -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
|
@ -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
|
||||||
|
236
resources/views/pemilik_jaminan/form.blade.php
Normal file
236
resources/views/pemilik_jaminan/form.blade.php
Normal 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
|
24
resources/views/pemilik_jaminan/index.blade.php
Normal file
24
resources/views/pemilik_jaminan/index.blade.php
Normal 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
|
@ -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');
|
||||||
|
});
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user