perbaikan conflict di route web

This commit is contained in:
Andy Chaerudin
2024-11-04 19:21:02 +07:00
100 changed files with 5459 additions and 1616 deletions

View File

@@ -1,49 +0,0 @@
<?php
namespace Modules\Lpj\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Modules\Lpj\Models\Branch;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class BranchExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
{
public function collection()
{
return Branch::all();
}
public function map($row)
: array
{
return [
$row->id,
$row->code,
$row->name,
$row->created_at
];
}
public function headings()
: array
{
return [
'ID',
'Code',
'Name',
'Created At'
];
}
public function columnFormats()
: array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'D' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}

View File

@@ -1,54 +0,0 @@
<?php
namespace Modules\Lpj\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Modules\Lpj\Models\Currency;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class CurrencyExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
{
public function collection()
{
return Currency::all();
}
public function map($row)
: array
{
return [
$row->id,
$row->code,
$row->name,
$row->decimal_places,
$row->updated_at,
$row->deleted_at,
$row->created_at
];
}
public function headings()
: array
{
return [
'ID',
'Code',
'Name',
'Decimal Places',
'Created At'
];
}
public function columnFormats()
: array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'B' => NumberFormat::FORMAT_NUMBER,
'E' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}

View File

@@ -1,200 +0,0 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\BranchExport;
use Modules\Lpj\Http\Requests\BranchRequest;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\Permohonan;
class AuthorizationController extends Controller
{
public $user;
public function index()
{// dd('hai');
// return view('lpj::branch.index');
// $permohonan = Permohonan::find(2);
// dd($permohonan->get());
return view('lpj::authorization.index');
}
public function store(BranchRequest $request)
{
$validate = $request->validated();
if ($validate) {
try {
// Save to database
Branch::create($validate);
return redirect()
->route('basicdata.branch.index')
->with('success', 'Branch created successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.branch.create')
->with('error', 'Failed to create branch');
}
}
}
public function create()
{
return view('lpj::branch.create');
}
public function edit($id)
{
$branch = Branch::find($id);
return view('lpj::branch.create', compact('branch'));
}
public function update(BranchRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
// Update in database
$branch = Branch::find($id);
$branch->update($validate);
return redirect()
->route('basicdata.branch.index')
->with('success', 'Branch updated successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.branch.edit', $id)
->with('error', 'Failed to update branch');
}
}
}
public function destroy($id)
{
try {
// Delete from database
$branch = Branch::find($id);
$branch->delete();
echo json_encode(['success' => true, 'message' => 'Branch deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete branch']);
}
}
public function dataForDatatables(Request $request)
{
// if (is_null($this->user) || !$this->user->can('branch.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
// }
// Retrieve data from the database
$query = Permohonan::query();
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
// $data = $query->get();
$data = $query->select('permohonan.id', 'permohonan.nomor_registrasi'
, 'branches.name AS branche_name'
, 'debitures.name AS debiture_name'
// , 'tujuan_penilaian.name AS debiture_name'
, DB::raw("CONCAT(tujuan_penilaian.code,' - ', tujuan_penilaian.name) AS nama_tujuan_penilaian")
, 'users.name AS account_officer')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id', '=', 'permohonan.tujuan_penilaian_id')
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
/*
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('code', 'LIKE', "%$search%");
$q->orWhere('name', 'LIKE', "%$search%");
});
}
// Apply sorting if provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
*/
}
public function export()
{
return Excel::download(new BranchExport, 'branch.xlsx');
}
}

View File

@@ -1,150 +0,0 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\BranchExport;
use Modules\Lpj\Http\Requests\BranchRequest;
use Modules\Lpj\Models\Branch;
class BranchController extends Controller
{
public $user;
public function index()
{
return view('lpj::branch.index');
}
public function store(BranchRequest $request)
{
$validate = $request->validated();
if ($validate) {
try {
// Save to database
Branch::create($validate);
return redirect()
->route('basicdata.branch.index')
->with('success', 'Branch created successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.branch.create')
->with('error', 'Failed to create branch');
}
}
}
public function create()
{
return view('lpj::branch.create');
}
public function edit($id)
{
$branch = Branch::find($id);
return view('lpj::branch.create', compact('branch'));
}
public function update(BranchRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
// Update in database
$branch = Branch::find($id);
$branch->update($validate);
return redirect()
->route('basicdata.branch.index')
->with('success', 'Branch updated successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.branch.edit', $id)
->with('error', 'Failed to update branch');
}
}
}
public function destroy($id)
{
try {
// Delete from database
$branch = Branch::find($id);
$branch->delete();
echo json_encode(['success' => true, 'message' => 'Branch deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete branch']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('branch.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
// Retrieve data from the database
$query = Branch::query();
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('code', 'LIKE', "%$search%");
$q->orWhere('name', 'LIKE', "%$search%");
});
}
// Apply sorting if provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
}
public function export()
{
return Excel::download(new BranchExport, 'branch.xlsx');
}
}

View File

@@ -1,150 +0,0 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\CurrencyExport;
use Modules\Lpj\Http\Requests\CurrencyRequest;
use Modules\Lpj\Models\Currency;
class CurrencyController extends Controller
{
public $user;
public function index()
{
return view('lpj::currency.index');
}
public function store(CurrencyRequest $request)
{
$validate = $request->validated();
if ($validate) {
try {
// Save to database
Currency::create($validate);
return redirect()
->route('basicdata.currency.index')
->with('success', 'Currency created successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.currency.create')
->with('error', 'Failed to create currency');
}
}
}
public function create()
{
return view('lpj::currency.create');
}
public function edit($id)
{
$currency = Currency::find($id);
return view('lpj::currency.create', compact('currency'));
}
public function update(CurrencyRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
// Update in database
$currency = Currency::find($id);
$currency->update($validate);
return redirect()
->route('basicdata.currency.index')
->with('success', 'Currency updated successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.currency.edit', $id)
->with('error', 'Failed to update currency');
}
}
}
public function destroy($id)
{
try {
// Delete from database
$currency = Currency::find($id);
$currency->delete();
echo json_encode(['success' => true, 'message' => 'Currency deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete currency']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('currency.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
// Retrieve data from the database
$query = Currency::query();
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('code', 'LIKE', "%$search%");
$q->orWhere('name', 'LIKE', "%$search%");
});
}
// Apply sorting if provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
}
public function export()
{
return Excel::download(new CurrencyExport, 'currency.xlsx');
}
}

View File

@@ -14,9 +14,11 @@
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DetailDokumenJaminan;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\HubunganPemilikJaminan;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\JenisLegalitasJaminan;
use Modules\Lpj\Models\PemilikJaminan;
use ZipArchive;
class DokumenJaminanController extends Controller
{
@@ -86,6 +88,7 @@
'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key],
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '',
];
DetailDokumenJaminan::create($detail);
} catch (Exception $e) {
@@ -124,10 +127,18 @@
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get();
$hubunganPemilik = HubunganPemilikJaminan::all();
return view(
'lpj::debitur.jaminan',
compact('debitur', 'provinces', 'jenisJaminan', 'jenisLegalitasJaminan', 'pemilikJaminan'),
compact(
'debitur',
'provinces',
'jenisJaminan',
'jenisLegalitasJaminan',
'pemilikJaminan',
'hubunganPemilik',
),
);
}
@@ -141,6 +152,52 @@
DB::beginTransaction();
$validate['debiture_id'] = $id;
if ($validate['pemilik_jaminan_id'] == 00) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => request()->get('hubungan_pemilik_jaminan_id'),
'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,
'nomor_id' => request()->get('nomor_id'),
'name' => request()->get('pemilik_name'),
];
$detailSertifikat = [];
$names = request()->input('detail_sertifikat.name', []);
$nomorIds = request()->input('detail_sertifikat.nomor_id', []);
foreach ($names as $index => $name) {
if (isset($nomorIds[$index])) {
$detailSertifikat[] = [
'name' => $name,
'nomor_id' => $nomorIds[$index],
];
}
}
$pemilik_jaminan['detail_sertifikat'] = json_encode($detailSertifikat);
//dd($pemilik_jaminan);
try {
$pemilikJaminan = PemilikJaminan::updateOrCreate([
'debiture_id' => $id,
'name' => request()->get('pemilik_name'),
], $pemilik_jaminan);
} catch (Exception $e) {
return redirect()->route('debitur.jaminan.index', $id)->with(
'error',
'Gagal update pemilik jaminan: ' . $e->getMessage(),
);
}
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
}
if ($validate['pemilik_jaminan_id'] == 0) {
$pemilik_jaminan = [
'hubungan_pemilik_jaminan_id' => 1,
@@ -159,11 +216,14 @@
'debiture_id' => $id,
'name' => $debitur->name,
], $pemilik_jaminan);
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
}
$document = DokumenJaminan::find($jaminan);
$document->update($validate);
if ($request->detail_dokumen_jaminan_id) {
foreach ($request->detail_dokumen_jaminan_id as $key => $value) {
if (isset($request->dokumen_jaminan[$key])) {
@@ -238,6 +298,7 @@
$jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get();
$hubunganPemilik = HubunganPemilikJaminan::all();
return view(
'lpj::debitur.jaminan',
@@ -252,6 +313,7 @@
'districts',
'villages',
'pemilikJaminan',
'hubunganPemilik',
),
);
}
@@ -274,6 +336,45 @@
}
}
public function bulkDownload()
{
$dokumenIds = request()->get('jaminan'); // Expecting an array of dokumen_jaminan_id
$documents = DetailDokumenJaminan::where('dokumen_jaminan_id', $dokumenIds)->get();
if ($documents->isEmpty()) {
return redirect()->back()->with('error', 'No documents found for the provided IDs.');
}
$zip = new ZipArchive;
$zipFileName = 'documents_jaminan_' . $dokumenIds . '.zip';
$zipFilePath = storage_path('app/public/' . $zipFileName);
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
foreach ($documents as $document) {
$filePath = storage_path('app/public/' . $document->dokumen_jaminan);
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);
}
}
$zip->close();
if (!file_exists($zipFilePath)) {
return redirect()->back()->with('error', 'Failed to create ZIP file.');
}
} else {
return redirect()->back()->with('error', 'Failed to create ZIP file.');
}
return response()->download($zipFilePath, $zipFileName, [
'Content-Type' => 'application/zip',
'Content-Disposition' => 'attachment; filename="' . $zipFileName . '"',
'Content-Length' => filesize($zipFilePath),
])->deleteFileAfterSend(false);
}
public function download()
{
$dokumen = request()->get('dokumen');

View File

@@ -13,7 +13,6 @@
class JenisFasilitasKreditController extends Controller
{
use LpjHelpers; // <---- Using the LpjHelpers Trait
public $user;
public function index()
@@ -28,12 +27,6 @@
if ($validate) {
try {
// Save to database
// andy add
$lastNumberCodeJFK = LpjHelpers::onLastCodeJFK();
$validate['name'] =strtoupper($request->name);
$validate['code'] =$lastNumberCodeJFK;
// andy add
JenisFasilitasKredit::create($validate);
return redirect()

View File

@@ -0,0 +1,34 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LaporanController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function sederhana_index()
{
return view('lpj::laporan.sederhana_index');
}
public function standard_index()
{
return view('lpj::laporan.standard_index');
}
/**
* Show the specified resource.
*/
public function show($id) {}
/**
* Store form inspeksi.
*/
public function store(Request $request) {}
public function update(Request $request, $id) {}
}

View File

@@ -42,16 +42,16 @@ class OtorisasiPenawaranController extends Controller
$query =PenawaranTender::query()
->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->where('penawaran.status','=','persetujuan-penawaran')
->withCount('penawarandetails');
->where('penawaran.status','=','proposal-tender')
->withCount('penawarandetails');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%');
});
}
@@ -114,19 +114,19 @@ class OtorisasiPenawaranController extends Controller
if (request()->ajax()) {
$id = $request->id;
$penawaran = PenawaranTender::where('status','=','persetujuan-penawaran')->find($id);
$penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id);
if ($penawaran) {
$penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id)
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id')
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id')
->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
->get();
$penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id)
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
->where('detail_penawaran.status','=',1)
->get();
if(sizeof($penawarandetailLogs)>0)
{
$h=0;
@@ -139,8 +139,8 @@ class OtorisasiPenawaranController extends Controller
}
$h++;
}
}
}
$i=0;
foreach($penawrandetails as $obj)
@@ -149,17 +149,17 @@ class OtorisasiPenawaranController extends Controller
{
$penawrandetails_path = Storage::url($obj->dokumen_persetujuan);
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
}
$i++;
}
$penawaranString = "";
if($penawaran->status)
{
$penawaranString = convertSlug($penawaran->status);
$penawaran->status = $penawaranString;
}
}
$kjpp=null;
$kjpp = KJPP::pluck('name', 'id');
@@ -202,11 +202,11 @@ class OtorisasiPenawaranController extends Controller
// update status Penawaran menjadi SPK
// update status Permohonan menjadi SPK
// insert detail_permohonan_log
PenawaranDetailTender::where('status', 1)
->where('penawaran_id', $request->penawaran_id)
->whereNotIn('id', [$id])
->update(['status' => 2,
->update(['status' => 2,
'updated_by' => Auth::id(),
'updated_at' => now()
]);
@@ -228,12 +228,12 @@ class OtorisasiPenawaranController extends Controller
'updated_by' => Auth::id(),
'updated_at' => now()
]);
// log
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
if(sizeof($detailPenawaran)>0)
{
foreach ($detailPenawaran as $model) {
array_push($dataDetailPenawaranLog, [
'detail_penawaran_id' =>$model->id,
@@ -248,12 +248,12 @@ class OtorisasiPenawaranController extends Controller
'authorized_at' =>$model->authorized_at,
'created_at' =>$model->created_at,
'updated_at' =>$model->updated_at,
'deleted_at' =>$model->deleted_at,
'deleted_at' =>$model->deleted_at,
'created_by' =>$model->created_by,
'updated_by' =>$model->updated_by,
'deleted_by' =>$model->deleted_by
]);
}
PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);

View File

@@ -63,6 +63,7 @@
public function update(PemilikJaminanRequest $request, $id, $pemilik)
{
$validate = $request->validated();
if ($validate) {
try {
$pemilik = PemilikJaminan::find($pemilik);
@@ -88,6 +89,7 @@
$districts = District::where('city_code', $pemilik->city_code)->get();
$villages = Village::where('district_code', $pemilik->district_code)->get();
$hubunganPemilik = HubunganPemilikJaminan::all();
$detailSertifikat = $pemilik->detail_sertifikat;
return view(
'lpj::pemilik_jaminan.form',
@@ -99,6 +101,7 @@
'villages',
'hubunganPemilik',
'pemilik',
'detailSertifikat'
),
);
}

View File

@@ -0,0 +1,135 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request;
use Modules\Lpj\Models\Permohonan;
use App\Http\Controllers\Controller;
class PenilaiController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::penilai.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('lpj::create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
*/
public function show($id)
{
$permohonan = Permohonan::with('debiture.documents.jenisjaminan')->find($id);
return view('lpj::penilai.show', compact('permohonan'));
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
return view('lpj::edit');
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
//
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('penilai.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
// Retrieve data from the database
$query = Permohonan::query()->where('status', '=', 'done');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
$q->orWhereRelation('jenisfasilitasKredit', 'name', 'LIKE', '%' . $search . '%');
});
}
// Apply sorting if provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisfasilitasKredit'])->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
}
}

View File

@@ -3,6 +3,7 @@
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Barryvdh\DomPDF\Facade\Pdf;
use Exception;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
@@ -304,4 +305,19 @@
return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully');
}
public function show($id)
{
$permohonan = Permohonan::find($id);
return view('lpj::permohonan.show', compact('permohonan'));
}
public function print($id){
$permohonan = Permohonan::find($id);
return view('lpj::permohonan.print', compact('permohonan'));
// $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan'));
// return $pdf->stream();
}
}

View File

@@ -75,7 +75,7 @@ class ProsesPenawaranController extends Controller
// Get the data for the current page
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->with(['tujuanPenilaianKJPP'])->get();
$data = $query->with(['tujuanPenilaianKJPP','permohonan','permohonan.debiture'])->get();
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
@@ -110,13 +110,13 @@ class ProsesPenawaranController extends Controller
$id = $request->id;
$penawaran = PenawaranTender::find($id);
$penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id)
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
->where('detail_penawaran.status','=',1)
->get();
if ($penawaran) {
$i=0;
foreach($penawrandetails as $obj)
{
@@ -156,11 +156,11 @@ class ProsesPenawaranController extends Controller
$dataPenawaranDetail = array();
if (request()->ajax()) {
$validator = ProsesPenawaranController::rulesEditnya($request, $id);
if ($validator['fails']) {
$data['message'] = $validator['errors'];
$data['status'] = 'error';
}
}
else
{
try {
@@ -174,9 +174,9 @@ class ProsesPenawaranController extends Controller
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
if ($file_tmp->isValid())
{
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
@@ -205,16 +205,16 @@ class ProsesPenawaranController extends Controller
{
$data['status'] = 'error';
$data['message'] ['check_file'] = array("Silahkan upload file");
}
} catch (Exception $e) {
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.');
}
}
} else {
$data['status'] = 'error';
$data['message'] ['message_ajax'] = array("no ajax request");
@@ -257,57 +257,52 @@ class ProsesPenawaranController extends Controller
$dataPenawaran = array();
$penawaran = PenawaranTender::find($id);
$checkActiveDateRange = checkActiveDateRangePenawaran($id);
// cek masa aktif penawaran
if($checkActiveDateRange)
{
$checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id);
$checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id);
if($checkKelengkapanDetailKJPP)
{
DB::beginTransaction();
try {
$dataPenawaran = ['status' => 'persetujuan-penawaran',
$_updatestatus = ['status' => 'proposal-tender',
'updated_by' => Auth::id(),
'updated_at' => now()
];
$dataPermohonan = ['status' => 'persetujuan-penawaran',
'updated_by' => Auth::id(),
'updated_at' => now()
];
$permohonan = Permohonan::where('nomor_registrasi','=', $penawaran->nomor_registrasi)->first();
$penawaran->update($dataPenawaran);
$permohonan->update($dataPermohonan);
$penawaran->update($_updatestatus);
$permohonan->update($_updatestatus);
DB::commit();
$data['message'] ['message_success'] = array('Sukses melakukan Proses Penawaran');
$data['status'] = 'success';
} catch (Exception $e) {
DB::rollBack();
// dd($e);
$data['message'] ['message_error_try_catch'] = array("Gagal melakukan Proses Penawaran");
$data['status'] = 'error';
}
}
else
{
$data['message'] ['cek_kelengkapan_data'] = array("Silahkan lengkapi data KJPP");
$data['status'] = 'error';
}
}
else
{
$data['message'] ['active_date_range'] = array("Penawaran sudah di tutup");
$data['status'] = 'error';
}
return response()->json($data);
}
@@ -326,12 +321,12 @@ class ProsesPenawaranController extends Controller
'updated_at' => now()
];
$detailpenawaran->update($dataDetailPenawaran);
$detailpenawaran->update($dataDetailPenawaran);
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Sukses delete Penawaran KJPP '.$request->kjppName);
} catch (Exception $e) {
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
}

View File

@@ -41,16 +41,16 @@ class ProsesPenawaranUlangController extends Controller
$query =PenawaranTender::query()
->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->where('penawaran.status','=','persetujuan-penawaran')
->withCount('penawarandetails');
->where('penawaran.status','=','proposal-tender')
->withCount('penawarandetails');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%');
});
}
@@ -118,11 +118,11 @@ class ProsesPenawaranUlangController extends Controller
if (request()->ajax()) {
$id = $request->id;
$penawaran = PenawaranTender::where('status','=','persetujuan-penawaran')->find($id);
$penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id);
if ($penawaran) {
$penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id)
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
->where('detail_penawaran.status','=',1)
->get();
@@ -143,7 +143,7 @@ class ProsesPenawaranUlangController extends Controller
{
$penawaranString = convertSlug($penawaran->status);
$penawaran->status = $penawaranString;
}
}
$data['penawaran'] = $penawaran;
$data['penawrandetails'] = $penawrandetails;
@@ -176,7 +176,7 @@ class ProsesPenawaranUlangController extends Controller
if ($validator['fails']) {
$data['message'] = $validator['errors'];
$data['status'] = 'error';
}
}
else
{
// cek masa aktif penawaran
@@ -187,7 +187,7 @@ class ProsesPenawaranUlangController extends Controller
{
DB::beginTransaction();
try {
$dataDetailPenawaranLog = [
'detail_penawaran_id' =>$detailpenawaran->id,
'kjpp_rekanan_id' =>$detailpenawaran->kjpp_rekanan_id,
@@ -201,15 +201,15 @@ class ProsesPenawaranUlangController extends Controller
'authorized_at' =>$detailpenawaran->authorized_at,
'created_at' =>$detailpenawaran->created_at,
'updated_at' =>$detailpenawaran->updated_at,
'deleted_at' =>$detailpenawaran->deleted_at,
'deleted_at' =>$detailpenawaran->deleted_at,
'created_by' =>$detailpenawaran->created_by,
'updated_by' =>$detailpenawaran->updated_by,
'deleted_by' =>$detailpenawaran->deleted_by
];
PenawaranDetailTenderLog::create($dataDetailPenawaranLog);
$biaya_penawaran="";
if($request->biaya_penawaran)
$biaya_penawaran= str_replace(".","",$request->biaya_penawaran);
@@ -222,9 +222,9 @@ class ProsesPenawaranUlangController extends Controller
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
if ($file_tmp->isValid())
{
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
@@ -247,9 +247,9 @@ class ProsesPenawaranUlangController extends Controller
{
$data['status'] = 'error';
$data['message']['check_file'] = array("Silahkan upload file");
}
$detailpenawaran->update($dataDetailPenawaran);
if($pleaseCommit)
@@ -279,7 +279,7 @@ class ProsesPenawaranUlangController extends Controller
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
}
} else {
@@ -288,7 +288,7 @@ class ProsesPenawaranUlangController extends Controller
}
return response()->json($data);
}
}
// delete KJPP di detail_penawaran (status di buat 0)
public function updateKJPPStatus(Request $request, $id): JsonResponse
@@ -316,16 +316,16 @@ class ProsesPenawaranUlangController extends Controller
'authorized_at' =>$model->authorized_at,
'created_at' =>$model->created_at,
'updated_at' =>$model->updated_at,
'deleted_at' =>$model->deleted_at,
'deleted_at' =>$model->deleted_at,
'created_by' =>$model->created_by,
'updated_by' =>$model->updated_by,
'deleted_by' =>$model->deleted_by
];
PenawaranDetailTenderLog::create($dataDetailPenawaranLog);
// log
$data['id']=$id;
$dataku = ['status' => '0',
@@ -333,7 +333,7 @@ class ProsesPenawaranUlangController extends Controller
'updated_at' => now()
];
$model->update($dataku);
$model->update($dataku);
DB::commit();
$data['status'] = 'success';

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ResumeController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::resume.index');
}
/**
* Show the specified resource.
*/
public function show($id) {}
/**
* Store form inspeksi.
*/
public function store(Request $request) {}
public function update(Request $request, $id) {}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SLAController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::SLA.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('lpj::create');
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
*/
public function show($id)
{
return view('lpj::show');
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
return view('lpj::edit');
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
//
}
}

View File

@@ -241,15 +241,25 @@ class TenderController extends Controller
}
/**
* Remove the specified resource from storage.
* Tampilkan Surat Tender
*/
public function destroy($id)
public function showSuratTender($noreg)
{
//
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
if (!$penawaran) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
}
// Jika batas tanggal penawaran sudah lewat
if ($penawaran->end_date < date('Y-m-d')) {
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
}
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg'));
}
public function datatablesPenawaran(Request $request)

View File

@@ -1,40 +0,0 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BranchRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules()
: array
{
$rules = [
'name' => 'required|string|max:255',
'status' => 'nullable|boolean',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',
];
if ($this->method() == 'PUT') {
$rules['code'] = 'required|string|max:3|unique:branches,code,' . $this->id;
} else {
$rules['code'] = 'required|string|max:3|unique:branches,code';
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
{
return true;
}
}

View File

@@ -1,41 +0,0 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CurrencyRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules()
: array
{
$rules = [
'name' => 'required|string|max:255',
'decimal_places' => 'nullable|integer|between:0,3',
'status' => 'nullable|boolean',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',
];
if ($this->method() == 'PUT') {
$rules['code'] = 'required|string|max:3|unique:currencies,code,' . $this->id;
} else {
$rules['code'] = 'required|string|max:3|unique:currencies,code';
}
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
{
return true;
}
}

View File

@@ -4,6 +4,7 @@
use Illuminate\Foundation\Http\FormRequest;
use Modules\Lpj\Rules\UniqueCifExceptZero;
use Modules\Lpj\Rules\UniqueExcept;
class DebitureRequest extends FormRequest
{

View File

@@ -15,9 +15,11 @@
: array
{
return [
'code' => 'required|max:6',
'name' => 'required|max:255',
'slug' => 'required|max:255',
'code' => 'required|max:6',
'name' => 'required|max:255',
'slug' => 'required|max:255',
'custom_field' => 'nullable|max:255',
'custom_field_type' => 'nullable|max:255',
];
}
@@ -32,7 +34,7 @@
public function prepareForValidation()
{
if($this->method() == 'POST' && $this->code == null) {
if ($this->method() == 'POST' && $this->code == null) {
$this->merge([
'code' => IdGenerator::generate(
['table' => 'jenis_legalitas_jaminan', 'length' => 6, 'prefix' => 'JLJ', 'field' => 'code'],
@@ -41,7 +43,7 @@
]);
} else {
$this->merge([
'slug' => Str::slug($this->name),
'slug' => Str::slug($this->name),
]);
}
}

View File

@@ -26,6 +26,7 @@
'address' => 'nullable|string',
'postal_code' => 'nullable|string|max:10',
'status' => 'nullable|boolean',
'detail_sertifikat' => 'nullable|string|max:255',
];
//$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id;
@@ -41,4 +42,24 @@
{
return true;
}
public function prepareForValidation() {
$detailSertifikat = [];
$names = $this->input('detail_sertifikat.name', []);
$nomorIds = $this->input('detail_sertifikat.nomor_id', []);
foreach ($names as $index => $name) {
if (isset($nomorIds[$index])) {
$detailSertifikat[] = [
'name' => $name,
'nomor_id' => $nomorIds[$index]
];
}
}
$this->merge([
'detail_sertifikat' => json_encode($detailSertifikat),
]);
}
}

View File

@@ -20,7 +20,7 @@
'branch_id' => 'required|exists:branches,id',
'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id',
'debiture_id' => 'required|exists:debitures,id',
'status' => 'required|string|default:order',
'status' => 'required|string',
'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
'nilai_plafond_id' => 'required|exists:nilai_plafond,id',
'status_bayar' => 'required|string',

View File

@@ -63,13 +63,17 @@ class TenderPenawaranRequest extends FormRequest
$endDate = strtotime($this->input('end_date'));
$today = strtotime(date('Y-m-d'));
// Jika dalam keadaan tambah penawaran maka munculkan pesan ini
if ($this->method() !== 'PUT') {
if ($startDate < $today) {
$validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
}
}
if ($endDate < $startDate) {
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
}
if ($startDate < $today) {
$validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
}
// Validasi minimal 3 pilihan pada nama_kjpp
$namaKjpp = $this->input('kjpp', []);

View File

@@ -2,13 +2,10 @@
namespace Modules\Lpj\Models;
use Modules\Lpj\Database\Factories\BranchFactory;
use Modules\Basicdata\Models\Branch as BasicdataBranch;
class Branch extends Base
class Branch extends BasicdataBranch
{
protected $table = 'branches';
protected $fillable = ['code', 'name', 'status', 'authorized_at', 'authorized_status', 'authorized_by'];
public function debitures()
{
return $this->hasMany(Debiture::class, 'branch_id', 'id');

View File

@@ -1,20 +0,0 @@
<?php
namespace Modules\Lpj\Models;
use Modules\Lpj\Database\Factories\CurrencyFactory;
class Currency extends Base
{
protected $table = 'currencies';
protected $fillable = [
'code',
'name',
'decimal_places',
'status',
'authorized_at',
'authorized_status',
'authorized_by'
];
}

View File

@@ -17,7 +17,7 @@
'name',
'dokumen_jaminan',
'keterangan',
'details',
'status',
'authorized_at',
'authorized_status',

View File

@@ -19,4 +19,9 @@ class JenisLaporan extends Model
protected $fillable = ['code', 'name'];
public function penawaran()
{
return $this->hasMany(PenawaranTender::class, 'jenis_laporan_id', 'id');
}
}

View File

@@ -7,5 +7,5 @@
class JenisLegalitasJaminan extends Base
{
protected $table = 'jenis_legalitas_jaminan';
protected $fillable = ['code', 'name','slug'];
protected $fillable = ['code', 'name','slug','custom_field','custom_field_type'];
}

View File

@@ -30,7 +30,8 @@ class PemilikJaminan extends Base
'status',
'authorized_at',
'authorized_status',
'authorized_by'
'authorized_by',
'detail_sertifikat',
];
public function province()

View File

@@ -36,4 +36,14 @@ class PenawaranTender extends Model
{
return $this->hasMany(TujuanPenilaianKJPP::class, 'id', 'tujuan_penilaian_kjpp_id');
}
public function permohonan()
{
return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi');
}
public function jenisLaporan()
{
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
}
}

View File

@@ -2,16 +2,12 @@
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Lpj\Database\Factories\PermohonanFactory;
use Modules\Usermanagement\Models\User;
use Modules\Lpj\Models\TujuanPenilaian;
use Modules\Lpj\Models\JenisFasilitasKredit;
class Permohonan extends Base
{
protected $table = 'permohonan';
protected $table = 'permohonan';
protected $fillable = [
'nomor_registrasi',
'tanggal_permohonan',
@@ -41,7 +37,7 @@ class Permohonan extends Base
'registrasi_by',
'registrasi_at',
'jenis_penilaian_id',
'region_id'
'region_id',
];
public function user()
@@ -81,6 +77,11 @@ class Permohonan extends Base
public function penilaian()
{
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
}
public function penawaranTender()
{
return $this->hasMany(PenawaranTender::class, 'nomor_registrasi');
}
}

18
app/Models/SLA.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class SLA extends Model
{
use HasFactory;
protected $table = 'sla';
/**
* The attributes that are mass assignable.
*/
protected $guarded = ['id'];
}

View File

@@ -1,25 +1,32 @@
<?php
namespace Modules\Lpj\Rules;
namespace Modules\Lpj\Rules;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Modules\Lpj\Models\Debiture;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Modules\Lpj\Models\Debiture;
class UniqueCifExceptZero implements ValidationRule
{
public function __construct($id = null)
class UniqueCifExceptZero implements ValidationRule
{
$this->id = $id;
}
protected $id;
public function validate($attribute, $value, $fail): void
{
if (Debiture::where($attribute, $value)
->where('id', '!=', $this->id)
->where($attribute, '!=', '0000000000')
->exists()) {
$fail('The :attribute field must be uniquse.'.$this->id);
public function __construct($id = null)
{
$this->id = $id;
}
/**
* Run the validation rule.
*/
public function validate(string $attribute, mixed $value, Closure $fail)
: void {
if ($value !== '0000000000' && $value !== null && Debiture::query()->where($attribute, $value)->when(
$this->id,
function ($query) {
$query->where('id', '!=', $this->id);
},
)->exists()) {
$fail('The :attribute field must be unique.');
}
}
}
}

View File

@@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('sla', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('sla');
}
};

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('debitures', function (Blueprint $table) {
$table->dropUnique(['cif']);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('debitures', function (Blueprint $table) {
$table->string('cif')->unique()->change();
});
}
};

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('pemilik_jaminan', function (Blueprint $table) {
$table->string('detail_sertifikat')->nullable()->after('name');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('pemilik_jaminan', function (Blueprint $table) {
$table->dropColumn('detail_sertifikat');
});
}
};

View File

@@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) {
$table->string('custom_field')->nullable()->after('slug');
$table->string('custom_field_type')->nullable()->after('custom_field');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) {
$table->dropColumn('custom_field');
$table->dropColumn('custom_field_type');
});
}
};

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('detail_dokumen_jaminan', function (Blueprint $table) {
$table->string('details')->nullable()->after('dokumen_jaminan_id');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('detail_dokumen_jaminan', function (Blueprint $table) {
$table->dropColumn('details');
});
}
};

View File

@@ -0,0 +1,42 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\ArahMataAngin;
class ArahMataAnginSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
ArahMataAngin::insert([
[
'name' => 'Utara',
],
[
'name' => 'Timur Laut',
],
[
'name' => 'Timur',
],
[
'name' => 'Tenggara',
],
[
'name' => 'Selatan',
],
[
'name' => 'Barat Daya',
],
[
'name' => 'Barat',
],
[
'name' => 'Barat Laut',
],
]);
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Basicdata\Models\Branch;
class BranchSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Branch::insert([
[
'code' => 'C01',
'name' => 'KPNO',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Basicdata\Models\Currency;
class CurrencySeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Currency::insert([
[
'code' => 'IDR',
'name' => 'Rupiah',
'decimal_places' => 2,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'MYR',
'name' => 'Ringgit',
'decimal_places' => 2,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'SAR',
'name' => 'Riyadh',
'decimal_places' => 2,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,158 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\Debiture;
class DebitureSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Debiture::insert([
[
'branch_id' => 1,
'cif' => '1234567890',
'name' => 'Willy',
'npwp' => '123455432109876',
'email' => 'w@gmail.com',
'phone' => '08113242341',
'nomor_rekening' => '1081666666',
'province_code' => '31',
'city_code' => '31.74',
'district_code' => '31.74.09',
'village_code' => '31.74.09.1003',
'postal_code' => '12630',
'address' => null,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '0987654321',
'name' => 'Antonius Ginting',
'npwp' => '234567890123456',
'email' => 'x@gmail.com',
'phone' => '081234567891',
'nomor_rekening' => '987654310',
'province_code' => '31',
'city_code' => '31.71',
'district_code' => '31.71.06',
'village_code' => '31.71.06.1001',
'postal_code' => '10310',
'address' => 'Jl. Menteng Tengah No.66',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '1518467',
'name' => 'PT ABCD SEJATI',
'npwp' => '001852600023342',
'email' => 'abcd@ag.co.id',
'phone' => '081111555',
'nomor_rekening' => '0082346',
'province_code' => '31',
'city_code' => '31.74',
'district_code' => '31.74.04',
'village_code' => '31.74.04.1005',
'postal_code' => '10420',
'address' => 'Jl. Raya Kwitang No. 105, Senen, Kwitang, Jakarta Pusat',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '12345',
'name' => 'Testing',
'npwp' => '102928018391211',
'email' => 'testing@email.com',
'phone' => '098172386',
'nomor_rekening' => '12345',
'province_code' => '11',
'city_code' => '11.01',
'district_code' => '11.01.01',
'village_code' => '11.01.01.2001',
'postal_code' => '23773',
'address' => 'alamat',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '0000000000',
'name' => 'Gartika Pertiwi',
'npwp' => '123456789101112',
'email' => 'Gartika_Pertiwi@gmail.com',
'phone' => '1234567',
'nomor_rekening' => '1234567',
'province_code' => '31',
'city_code' => '31.71',
'district_code' => '31.71.04',
'village_code' => '31.71.04.1005',
'postal_code' => '10420',
'address' => null,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '1235464575',
'name' => 'Fleming',
'npwp' => '123455432109876',
'email' => 'x@gmail.com',
'phone' => '08113242341',
'nomor_rekening' => '1081666666',
'province_code' => '31',
'city_code' => '31.74',
'district_code' => '31.74.09',
'village_code' => '31.74.09.1001',
'postal_code' => '12620',
'address' => 'testt',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'branch_id' => 1,
'cif' => '1234689743',
'name' => 'Testing 2',
'npwp' => '1234689743418451',
'email' => 'testing@mail.com',
'phone' => '081385777611',
'nomor_rekening' => '3575467279562',
'province_code' => '31',
'city_code' => '31.71',
'district_code' => '31.71.06',
'village_code' => '31.71.06.1001',
'postal_code' => '10310',
'address' => 'Jl. Menteng Raya no. 13',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
]);
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\DetailDokumenJaminan;
class DetailDokumenJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DetailDokumenJaminan::insert([
[
'name' => 'Tanah Bangunan',
'dokumen_jaminan_id' => 1,
'jenis_legalitas_jaminan_id' => 1,
'dokumen_jaminan' => 'jaminan/1/1/Test.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Tanah Bangunan',
'dokumen_jaminan_id' => 1,
'jenis_legalitas_jaminan_id' => 3,
'dokumen_jaminan' => 'jaminan/1/1/Test.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Tanah Bangunan',
'dokumen_jaminan_id' => 1,
'jenis_legalitas_jaminan_id' => 4,
'dokumen_jaminan' => 'jaminan/1/1/Test.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Tanah Bangunan',
'dokumen_jaminan_id' => 1,
'jenis_legalitas_jaminan_id' => 5,
'dokumen_jaminan' => 'jaminan/1/1/Test.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Tanah Bangunan',
'dokumen_jaminan_id' => 1,
'jenis_legalitas_jaminan_id' => 6,
'dokumen_jaminan' => 'jaminan/1/1/Test.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\PenawaranDetailTender;
class DetailPenawaranSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
PenawaranDetailTender::insert([
[
'kjpp_rekanan_id' => 1,
'penawaran_id' => 1,
'biaya_penawaran' => 15000000,
'attachment' => 'Test.pdf',
'dokumen_persetujuan' => 'uploads/penawaran/1_1_Test_2_1729826174.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'kjpp_rekanan_id' => 2,
'penawaran_id' => 1,
'biaya_penawaran' => 30000000,
'attachment' => 'Test.pdf',
'dokumen_persetujuan' => 'uploads/penawaran/2_2_Test_2_1729826198.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'kjpp_rekanan_id' => 3,
'penawaran_id' => 1,
'biaya_penawaran' => 20000000,
'attachment' => 'Test.pdf',
'dokumen_persetujuan' => 'uploads/penawaran/3_3_Test_2_1729826215.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\DokumenJaminan;
class DokumenJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DokumenJaminan::insert([
[
'debiture_id' => 1,
'jenis_jaminan_id' => 1,
'pemilik_jaminan_id' => 3,
'province_code' => '32',
'city_code' => '32.75',
'district_code' => '32.75.03',
'village_code' => '32.75.03.1001',
'postal_code' => '17125',
'address' => 'Jl. Apel No. 9',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\HubunganPemilikJaminan;
class HubunganPemilikJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
HubunganPemilikJaminan::insert([
[
'name' => 'Milik Pribadi'
],
[
'name' => 'Suami/Istri'
],
[
'name' => 'Anak'
],
[
'name' => 'Saudara Kandung'
],
[
'name' => 'Ayah'
],
[
'name' => 'Ibu'
]
]);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\HubunganPenghuniJaminan;
class HubunganPenghuniJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
HubunganPenghuniJaminan::insert([
[
'name' => 'Suami/Istri',
],
[
'name' => 'Anak',
],
[
'name' => 'Saudara Kandung',
],
[
'name' => 'Orang Tua',
],
[
'name' => 'Kontrak/Kost'
]
]);
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\IjinUsaha;
class IjinUsahaSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
IjinUsaha::insert([
[
'code' => 'IU001',
'name' => 'Bisnis',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'IU002',
'name' => 'Properti',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'IU003',
'name' => 'Personal Properti',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisDokumen;
class JenisDokumenSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisDokumen::insert([
[
'name' => 'Sertifikat',
'max_size' => 15,
'description' => 'Foto copy Sertifikat sesuai dengan asli',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'PBB/NJOP',
'max_size' => 15,
'description' => 'Foto Copy PBB/NJOP Tahun Terakhir',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'NPWP Perorangan/Perusahaan',
'max_size' => 10,
'description' => 'Copy NPWP Perorangan/Perusahaan',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Siteplan',
'max_size' => 10,
'description' => 'Siteplan',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Surat Pernyataan Kebenaran Data',
'max_size' => 5,
'description' => 'Surat Pernyataan Kebenaran Data (Surat Representasi)',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,90 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisFasilitasKredit;
class JenisFasilitasKreditSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisFasilitasKredit::insert([
[
'code' => 'JFK001',
'name' => 'KPR FLPP',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK002',
'name' => 'KPR KERJASAMA',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK003',
'name' => 'KPR ≤ 500 JT',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK004',
'name' => 'KPR > 500 JT',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK005',
'name' => 'KKB',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK006',
'name' => 'KPA',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK007',
'name' => 'MODAL KERJA',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JFK008',
'name' => 'INVESTASI',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
]);
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisJaminan;
class JenisJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisJaminan::insert([
[
'code' => 'JJ001',
'name' => 'Tanah',
'slug' => 'tanah',
'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ003","JLJ004","JLJ005","JLJ006"]',
'created_at' => now(),
'updated_at' => now(),
'authorized_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JJ002',
'name' => 'Rumah Tinggal / Ruko (Unit) / Apartemen (Unit) / Gudang',
'slug' => 'rumah-tinggal-ruko-unit-apartemen-unit-gudang',
'jenis_legalitas_jaminan_id' => null,
'created_at' => now(),
'updated_at' => now(),
'authorized_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JJ003',
'name' => 'Kawasan Industrial / Komersil / Residensial - Perumahan',
'slug' => 'kawasan-industrial-komersil-residensial-perumahan',
'jenis_legalitas_jaminan_id' => null,
'created_at' => now(),
'updated_at' => now(),
'authorized_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JJ004',
'name' => 'Gedung Apartement / Kantor / Condotel (Strata Tittle)',
'slug' => 'gedung-apartement-kantor-condotel-strata-tittle',
'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ002"]',
'created_at' => now(),
'updated_at' => now(),
'authorized_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'JJ005',
'name' => 'Mall',
'slug' => 'mall',
'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ006"]',
'created_at' => now(),
'updated_at' => now(),
'authorized_at' => null,
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisLaporan;
class JenisLaporanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisLaporan::insert([
[
'code' => 'JL001',
'name' => 'Short Report',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'JL002',
'name' => 'Full Report',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,90 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisLegalitasJaminan;
class JenisLegalitasJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisLegalitasJaminan::insert([
[
'code' => 'JLJ001',
'name' => 'Sertifikat',
'slug' => 'sertifikat',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'JLJ002',
'name' => 'SHGB',
'slug' => 'shgb',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => 1
],
[
'code' => 'JLJ003',
'name' => 'Copy PBB / NJOP Tahun Terakhir (Jika Ada)',
'slug' => 'copy-pbb-njop-tahun-terakhir-jika-ada',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'JLJ004',
'name' => 'Copy NPWP Perusahaan/Perorangan',
'slug' => 'copy-npwp-perusahaanperorangan',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'JLJ005',
'name' => 'Siteplan',
'slug' => 'siteplan',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'JLJ006',
'name' => 'Surat Pernyataan Kebenaran Data (Surat Representasi)',
'slug' => 'surat-pernyataan-kebenaran-data-surat-representasi',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
]);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\JenisPenilaian;
class JenisPenilaianSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
JenisPenilaian::insert([
[
'code' => 'JP1',
'name' => 'Internal',
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'JP2',
'name' => 'External',
'created_at' => now(),
'updated_at' => now()
],
]);
}
}

View File

@@ -0,0 +1,102 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Modules\Lpj\Models\KJPP;
use Illuminate\Database\Seeder;
class KJPPSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
KJPP::insert([
[
'code' => 'K000101',
'name' => 'Bank Anda',
'jenis_kantor' => 'Kantor Pusat',
'nomor_ijin_usaha' => 'IU001',
'province_code' => '32',
'city_code' => '32.75',
'district_code' => '32.75.03',
'village_code' => '32.75.03.1001',
'address' => 'Jl. Apel no. 1',
'postal_code' => '17125',
'nomor_telepon_kantor' => '0219976896',
'email_kantor' => 'bankanda@bankanda.id',
'nama_pimpinan' => 'Ida Royani',
'nomor_hp_pimpinan' => '081800908070',
'nama_pic_reviewer' => 'Beno',
'nomor_hp_pic_reviewer' => '081765489070',
'nama_pic_admin' => 'Dani',
'nomor_hp_pic_admin' => '081278786666',
'nama_pic_marketing' => 'Feni',
'nomor_hp_pic_marketing' => '087867590801',
'ijin_usaha_id' => '["IU001","IU002"]',
'jenis_aset_id' => '["JJ001","JJ002","JJ003"]',
'attachment' => 'default.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'K000201',
'name' => 'Bank Juri',
'jenis_kantor' => 'Kantor Pusat',
'nomor_ijin_usaha' => 'IU001',
'province_code' => '12',
'city_code' => '12.04',
'district_code' => '12.04.11',
'village_code' => '12.04.11.2005',
'address' => 'Jl. Mangga no. 1',
'postal_code' => '22876',
'nomor_telepon_kantor' => '0219976890',
'email_kantor' => 'bankjuri@bankjuri.id',
'nama_pimpinan' => 'Arif Simbolo bolo',
'nomor_hp_pimpinan' => '089643475023',
'nama_pic_reviewer' => 'Beno Harefa',
'nomor_hp_pic_reviewer' => '081765489080',
'nama_pic_admin' => 'Dani Harefa',
'nomor_hp_pic_admin' => '081278786667',
'nama_pic_marketing' => 'Feni Harefa',
'nomor_hp_pic_marketing' => '081765489075',
'ijin_usaha_id' => '["IU001","IU002","IU003"]',
'jenis_aset_id' => '["JJ001","JJ004","JJ003"]',
'attachment' => 'default.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'K000301',
'name' => 'Bank Gantra',
'jenis_kantor' => 'Kantor Pusat',
'nomor_ijin_usaha' => 'IU001',
'province_code' => '12',
'city_code' => '12.21',
'district_code' => '12.21.05',
'village_code' => '12.21.05.2005',
'address' => 'Jl. Apel no. 1',
'postal_code' => '22776',
'nomor_telepon_kantor' => '0219976889',
'email_kantor' => 'bankgantra@bankgantra.id',
'nama_pimpinan' => 'Arif Simantra',
'nomor_hp_pimpinan' => '089643475020',
'nama_pic_reviewer' => 'Beno Aditya',
'nomor_hp_pic_reviewer' => '081765489079',
'nama_pic_admin' => 'Dani Maulana',
'nomor_hp_pic_admin' => '081278786680',
'nama_pic_marketing' => 'Feni Rose',
'nomor_hp_pic_marketing' => '081890901234',
'ijin_usaha_id' => '["IU001","IU002","IU003"]',
'jenis_aset_id' => '["JJ001","JJ002","JJ005"]',
'attachment' => 'default.pdf',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -1,17 +1,45 @@
<?php
namespace Modules\Lpj\Database\Seeders;
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Seeder;
class LpjDatabaseSeeder extends Seeder
class LpjDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
/**
* Run the database seeds.
*/
public function run()
: void
{
// $this->call([]);
}
$this->call([
BranchSeeder::class,
CurrencySeeder::class,
JenisFasilitasKreditSeeder::class,
JenisLegalitasJaminanSeeder::class,
JenisJaminanSeeder::class,
JenisDokumenSeeder::class,
TujuanPenilaianSeeder::class,
NilaiPlatformSeeder::class,
HubunganPemilikJaminanSeeder::class,
HubunganPenghuniJaminanSeeder::class,
ArahMataAnginSeeder::class,
StatusPermohonanSeeder::class,
RegionSeeder::class,
TeamsSeeder::class,
TeamUsersSeeder::class,
JenisPenilaianSeeder::class,
TujuanPenilaianKJPPSeeder::class,
IjinUsahaSeeder::class,
JenisLaporanSeeder::class,
KJPPSeeder::class,
DebitureSeeder::class,
PermohonanSeeder::class,
PemilikJaminanSeeder::class,
DokumenJaminanSeeder::class,
DetailDokumenJaminanSeeder::class,
PenawaranSeeder::class,
DetailPenawaranSeeder::class,
PenilaianSeeder::class,
]);
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\NilaiPlafond;
class NilaiPlatformSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
NilaiPlafond::insert([
[
'code' => 'NP001',
'name' => '5 M - 10 M',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'NP002',
'name' => '2 M - 5 M',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'NP003',
'name' => '< 2M',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,118 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\PemilikJaminan;
class PemilikJaminanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
PemilikJaminan::insert([
[
'debiture_id' => 2,
'hubungan_pemilik_jaminan_id' => 1,
'name' => 'Antonius Ginting',
'npwp' => '234567890123456',
'nomor_id' => '13144213123',
'email' => 'x@gmail.com',
'phone' => '081234567891',
'province_code' => '31',
'city_code' => '31.71',
'district_code' => '31.71.06',
'village_code' => '31.71.06.1001',
'postal_code' => '10310',
'address' => 'Jl. Menteng Tengah No.66',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'debiture_id' => 7,
'hubungan_pemilik_jaminan_id' => 1,
'name' => 'Rahmat Rafli',
'npwp' => '1234689743418451',
'nomor_id' => '32754590325823',
'email' => 'testing@mail.com',
'phone' => '081385777611',
'province_code' => '32',
'city_code' => '32.75',
'district_code' => '32.75.03',
'village_code' => '32.75.03.1001',
'postal_code' => '10310',
'address' => 'Jl. Apel 1 no. 9',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'debiture_id' => 1,
'hubungan_pemilik_jaminan_id' => 1,
'name' => 'Willy',
'npwp' => '123455432109876',
'nomor_id' => null,
'email' => 'w@gmail.com',
'phone' => '08113242341',
'province_code' => '31',
'city_code' => '31.74',
'district_code' => '31.74.09',
'village_code' => '31.74.09.1003',
'postal_code' => '12630',
'address' => null,
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'debiture_id' => 4,
'hubungan_pemilik_jaminan_id' => 1,
'name' => 'Testing',
'npwp' => '1029280183912111',
'nomor_id' => null,
'email' => 'testing@email.com',
'phone' => '098172386',
'province_code' => '11',
'city_code' => '11.01',
'district_code' => '11.01.01',
'village_code' => '11.01.01.2001',
'postal_code' => '23773',
'address' => 'alamat',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'debiture_id' => 7,
'hubungan_pemilik_jaminan_id' => 1,
'name' => 'Testing 2',
'npwp' => '1234689743418451',
'nomor_id' => null,
'email' => 'testing@mail.com',
'phone' => '081385777611',
'province_code' => '31',
'city_code' => '31.71',
'district_code' => '31.71.06',
'village_code' => '31.71.06.1001',
'postal_code' => '10310',
'address' => 'Jl. Menteng Raya no. 13',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\PenawaranTender;
class PenawaranSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
PenawaranTender::insert([
[
'code' => 'NP001',
'nomor_registrasi' => 'REG0000002',
'tujuan_penilaian_kjpp_id' => 3,
'jenis_laporan_id' => 2,
'start_date' => '2024-10-21',
'end_date' => '2024-10-28',
'catatan' => 'Hai',
'status' => 'tender',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'code' => 'NP002',
'nomor_registrasi' => 'REG0000003',
'tujuan_penilaian_kjpp_id' => 1,
'jenis_laporan_id' => 1,
'start_date' => '2024-10-28',
'end_date' => '2024-10-31',
'catatan' => null,
'status' => 'tender',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\Penilaian;
class PenilaianSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Penilaian::insert([
[
'jenis_penilaian_id' => 2,
'teams_id' => 2,
'tanggal_kunjungan' => now(),
'keterangan' => 'Hai',
'status' => 'done',
'nomor_registrasi' => 'REG0000010',
'penilaian_id' => 2,
'surveyor_id' => 1,
'penilai_surveyor_id' => 1
],
[
'jenis_penilaian_id' => 2,
'teams_id' => 1,
'tanggal_kunjungan' => now(),
'keterangan' => 'Hello',
'status' => 'done',
'nomor_registrasi' => 'REG0000008',
'penilaian_id' => 2,
'surveyor_id' => 1,
'penilai_surveyor_id' => 1
],
[
'jenis_penilaian_id' => 2,
'teams_id' => 2,
'tanggal_kunjungan' => now(),
'keterangan' => 'Hello',
'status' => 'done',
'nomor_registrasi' => 'REG0000007',
'penilaian_id' => 1,
'surveyor_id' => 1,
'penilai_surveyor_id' => 1
]
]);
}
}

View File

@@ -0,0 +1,126 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\Permohonan;
class PermohonanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Permohonan::insert([
[
'nomor_registrasi' => 'REG0000002',
'tanggal_permohonan' => '2024-09-11',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 1,
'debiture_id' => 1,
'status' => 'persetujuan-penawaran',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 1,
'nilai_plafond_id' => 1,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => 'KJM3413259230951024',
'jenis_penilaian_id' => 2
],
[
'nomor_registrasi' => 'REG0000003',
'tanggal_permohonan' => '2024-09-13',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 1,
'debiture_id' => 1,
'status' => 'tender',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 1,
'nilai_plafond_id' => 1,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => 'KJM3413259230951025',
'jenis_penilaian_id' => 2
],
[
'nomor_registrasi' => 'REG0000006',
'tanggal_permohonan' => '2024-10-18',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 1,
'debiture_id' => 2,
'status' => 'registered',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 4,
'nilai_plafond_id' => 1,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => '23425654765868',
'jenis_penilaian_id' => 2
],
[
'nomor_registrasi' => 'REG0000007',
'tanggal_permohonan' => '2024-10-28',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 7,
'debiture_id' => 4,
'status' => 'done',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 7,
'nilai_plafond_id' => 1,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => '421354365747658',
'jenis_penilaian_id' => 2
],
[
'nomor_registrasi' => 'REG0000008',
'tanggal_permohonan' => '2024-10-28',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 1,
'debiture_id' => 7,
'status' => 'done',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 7,
'nilai_plafond_id' => 2,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => '421354365747659',
'jenis_penilaian_id' => 2
],
[
'nomor_registrasi' => 'REG0000010',
'tanggal_permohonan' => '2024-10-28',
'user_id' => 1,
'branch_id' => 1,
'tujuan_penilaian_id' => 5,
'debiture_id' => 7,
'status' => 'done',
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'jenis_fasilitas_kredit_id' => 4,
'nilai_plafond_id' => 1,
'status_bayar' => 'sudah_bayar',
'nilai_njop' => '421354365747660',
'jenis_penilaian_id' => 2
]
]);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\Regions;
class RegionSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Regions::insert([
[
'code' => 'R01',
'name' => 'Region 1',
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'R02',
'name' => 'Region 2',
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,128 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\StatusPermohonan;
class StatusPermohonanSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
StatusPermohonan::insert([
[
'name' => 'Order',
'slug' => 'order',
'description' => 'Status pengisian pengajuan dari AO sampai dengan approval dari BD atau EO Pemohon',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Revisi',
'slug' => 'revisi',
'description' => 'Back to pemohon dari admin',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Register',
'slug' => 'register',
'description' => 'pengajuan pemohon yang sudah diperiksa admin dan diproses ke SO',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Assign',
'slug' => 'assign',
'description' => 'posisi dari SO ke penilai setelah penunjukkan penilai',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Survey',
'slug' => 'survey',
'description' => 'tanggal kunjungan yang sudah ditentukan',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Proses Laporan',
'slug' => 'proses-laporan',
'description' => 'posisi penginputan yang dilakukan oleh penilai, dengan indikator tanggal kunjungan sampai laporan selesai (sesuai SLA)',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Approved',
'slug' => 'approved',
'description' => 'Laporan atau resume selesai',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Delivered',
'slug' => 'delivered',
'description' => 'Sudah isi nilai likuidasi',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Registered',
'slug' => 'registered',
'description' => 'abc',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Tender',
'slug' => 'tender',
'description' => 'abc',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
],
[
'name' => 'Done',
'slug' => 'done',
'description' => 'abc',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'created_by' => 1,
'updated_by' => 1
]
]);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\TeamsUsers;
class TeamUsersSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
TeamsUsers::insert([
[
'teams_id' => 1,
'user_id' => 3,
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'teams_id' => 2,
'user_id' => 4,
'status' => 1,
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\Teams;
class TeamsSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Teams::insert([
[
'regions_id' => 1,
'code' => 'T01',
'name' => 'Penilai 1',
'created_at' => now(),
'updated_at' => now()
],
[
'regions_id' => 2,
'code' => 'T02',
'name' => 'Penilai 2',
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\TujuanPenilaianKJPP;
class TujuanPenilaianKJPPSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
TujuanPenilaianKJPP::insert([
[
'code' => 'TPK01',
'name' => 'Transaksi Jual Beli Aset',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'TPK02',
'name' => 'Penjaminan Utang atau Pembiayaan',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'TPK03',
'name' => 'Pelaporan Keuangan',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
],
[
'code' => 'TPK04',
'name' => 'Pengambilalihan atau Merger dan Akuisisi (M&A)',
'status' => 1,
'created_at' => now(),
'updated_at' => now()
]
]);
}
}

View File

@@ -0,0 +1,95 @@
<?php
namespace Modules\Lpj\Database\Seeders;
use Illuminate\Database\Seeder;
use Modules\Lpj\Models\TujuanPenilaian;
class TujuanPenilaianSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
TujuanPenilaian::insert([
[
'code' => 'TP0001',
'name' => 'Penilaian Baru',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'TP0002',
'name' => 'Penilaian Ulang',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'TP0003',
'name' => 'Review',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => now(),
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => 1
],
[
'code' => 'TP0004',
'name' => 'Lelang',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'TP0005',
'name' => 'RAP',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'TP0006',
'name' => 'Revaluasi Aset',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
],
[
'code' => 'TP0007',
'name' => 'Asuransi',
'status' => 1,
'created_at' => now(),
'updated_at' => now(),
'deleted_at' => null,
'created_by' => 1,
'updated_by' => 1,
'deleted_by' => null
]
]);
}
}

View File

@@ -6,9 +6,7 @@
"keywords": [],
"priority": 0,
"providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"],
"files": [
"app/Helpers/Lpj.php"
],
"files": ["app/Helpers/Lpj.php"],
"menu": {
"main": [
{
@@ -193,7 +191,7 @@
"classes": "",
"attributes": [],
"permission": "",
"roles": ["ssenior-officero"]
"roles": ["senior-officer"]
}
]
},
@@ -214,16 +212,70 @@
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin","surveyor"]
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"surveyor"
]
},
{
"title": "Penilai",
"path": "penilai",
"icon": "ki-filled ki-brush text-lg",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
"title": "Laporan",
"path": "",
"path": "laporan",
"icon": "ki-filled ki-filter-tablet text-lg",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "senior-officer"]
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"senior-officer"
],
"sub": [
{
"title": "Sederhana",
"path": "laporan.sederhana",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "admin"]
},
{
"title": "Standard",
"path": "laporan.standard",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"senior-officer"
]
}
]
},
{
"title": "Resume",
"path": "resume",
"icon": "ki-filled ki-questionnaire-tablet text-lg",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo"]
}
],
"master": [
@@ -234,24 +286,14 @@
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "surveyor"],
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"surveyor"
],
"sub": [
{
"title": "Cabang",
"path": "basicdata.branch",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo"]
},
{
"title": "Mata Uang",
"path": "basicdata.currency",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "pemohon-ao", "pemohon-eo"]
},
{
"title": "Jenis Fasilitas Kredit",
"path": "basicdata.jenis-fasilitas-kredit",
@@ -388,6 +430,14 @@
"permission": "",
"roles": ["administrator", "admin"]
},
{
"title": "SLA",
"path": "basicdata.sla",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator", "admin"]
},
{
"title": "Bentuk Tanah",
"path": "basicdata.bentuk-tanah",
@@ -395,73 +445,72 @@
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Kontur Tanah",
"path": "basicdata.kontur-tanah",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Posisi Kavling",
"path": "basicdata.posisi-kavling",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Ketinggian Tanah",
"path": "basicdata.ketinggian-tanah",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Kondisi Fisik Tanah",
"path": "basicdata.kondisi-fisik-tanah",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Jenis Bangunan",
"path": "basicdata.jenis-bangunan",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Kondisi Bangunan",
"path": "basicdata.kondisi-bangunan",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
{
},
{
"title": "Sifat Bangunan",
"path": "basicdata.sifat-bangunan",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
},
},
{
{
"title": "Sarana Pelengkap",
"path": "basicdata.sarana-pelengkap",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["surveyor"]
}
}
]
}
],

View File

@@ -0,0 +1,8 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('sla') }}
@endsection
@section('content')
@endsection

View File

@@ -1,58 +0,0 @@
@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">
@if(isset($branch->id))
<form action="{{ route('basicdata.branch.update', $branch->id) }}" method="POST">
<input type="hidden" name="id" value="{{ $branch->id }}">
@method('PUT')
@else
<form method="POST" action="{{ route('basicdata.branch.store') }}">
@endif
@csrf
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($branch->id) ? 'Edit' : 'Tambah' }} Branch
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.branch.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $branch->code ?? '' }}">
@error('code')
<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">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $branch->name ?? '' }}">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
</div>
@endsection

View File

@@ -1,147 +0,0 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('basicdata.branch') }}
@endsection
@section('content')
<div class="grid">
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5" data-datatable-state-save="false" id="branch-table" data-api-url="{{ route('basicdata.branch.datatables') }}">
<div class="card-header py-5 flex-wrap">
<h3 class="card-title">
Daftar Cabang
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
<input placeholder="Search Branch" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="{{ route('basicdata.branch.export') }}"> Export to Excel </a>
<a class="btn btn-sm btn-primary" href="{{ route('basicdata.branch.create') }}"> Tambah Cabang </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
</th>
<th class="min-w-[250px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Code </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[250px]" data-datatable-column="name">
<span class="sort"> <span class="sort-label"> Cabang </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true">
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<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(`basic-data/cabang/${data}`, {
type: 'DELETE'
}).then((response) => {
swal.fire('Deleted!', 'User 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>
<script type="module">
const element = document.querySelector('#branch-table');
const searchInput = document.getElementById('search');
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
code: {
title: 'Code',
},
name: {
title: 'Cabang',
},
actions: {
title: 'Status',
render: (item, data) => {
return `<div class="flex flex-nowrap justify-center">
<a class="btn btn-sm btn-icon btn-clear btn-info" href="basic-data/cabang/${data.id}/edit">
<i class="ki-outline ki-notepad-edit"></i>
</a>
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
<i class="ki-outline ki-trash"></i>
</a>
</div>`;
},
}
},
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function () {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
@endpush

View File

@@ -16,7 +16,9 @@
<i class="ki-outline ki-minus text-gray-600 text-2sm accordion-active:block hidden">
</i>
</button>
<div class="accordion-content hidden" id="accordion_detail_jaminan_{{ $loop->index }}">
<div class="card-body lg:py-7.5 grid grid-cols-2">
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
@@ -53,6 +55,9 @@
</div>
</div>
<div class="card-table scrollable-x-auto pb-3">
<a href="{{ route('debitur.jaminan.bulk.download',['id' => $permohonan->debiture->id,'jaminan' => $dokumen->id]) }}" class="ml-6 btn btn-dark dark:btn-light">
<i class="ki-outline ki-cloud-download"></i> Download Semua Dokumen
</a>
<table class="table align-middle text-sm text-gray-500">
@foreach($dokumen->detail as $detail)
<tr>
@@ -69,8 +74,10 @@
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
@if(isset($detail->dokumen_jaminan))
<a href="{{ route('debitur.jaminan.download',['id'=>$permohonan->debiture->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2">{{ basename($detail->dokumen_jaminan) }}
<i class="ki-filled ki-cloud-download"></i></a>
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
<a href="{{ route('debitur.jaminan.download',['id'=>$permohonan->debiture->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2 badge-info"><i class="ki-filled ki-cloud-download mr-2"></i> Download</a>
) @endif
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($detail->dokumen_jaminan) }}')"><i class="ki-filled ki-eye mr-2"></i>Preview</span>
@endif
</td>
</tr>
@@ -90,3 +97,5 @@
@endforeach
</div>
</div>
@include('lpj::component.pdfviewer')

View File

@@ -0,0 +1,25 @@
<!-- Modal for PDF viewing -->
<div id="pdfModal" class="fixed inset-0 bg-gray-800 bg-opacity-75 flex items-center justify-center hidden w-full">
<div class="bg-white rounded-lg overflow-hidden shadow-xl transform transition-all min-w-3xl w-[1500px] h-[1200px]">
<div class="p-4 h-full">
<button onclick="closePDFModal()" class="float-right text-2xl">
<i class="ki-filled ki-cross-square text-red-600"></i>
</button>
<div id="pdfViewer" class="h-full"></div>
</div>
</div>
</div>
@push('scripts')
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.3.0/pdfobject.min.js"></script>
<script>
function viewPDF(url) {
PDFObject.embed(url, "#pdfViewer");
document.getElementById('pdfModal').classList.remove('hidden');
}
function closePDFModal() {
document.getElementById('pdfModal').classList.add('hidden');
}
</script>
@endpush

View File

@@ -1,69 +0,0 @@
@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">
@if(isset($currency->id))
<form action="{{ route('basicdata.currency.update', $currency->id) }}" method="POST">
<input type="hidden" name="id" value="{{ $currency->id }}">
@method('PUT')
@else
<form method="POST" action="{{ route('basicdata.currency.store') }}">
@endif
@csrf
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($currency->id) ? 'Edit' : 'Tambah' }} Currency
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.currency.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $currency->code ?? '' }}">
@error('code')
<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">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $currency->name ?? '' }}">
@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">
Decimal Places
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('decimal_places') border-danger bg-danger-light @enderror" type="number" min="0" max="3" name="decimal_places" value="{{ $currency->decimal_places ?? '' }}">
@error('decimal_places')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
</div>
@endsection

View File

@@ -1,154 +0,0 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('basicdata.currency') }}
@endsection
@section('content')
<div class="grid">
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5" data-datatable-state-save="false" id="currency-table" data-api-url="{{ route('basicdata.currency.datatables') }}">
<div class="card-header py-5 flex-wrap">
<h3 class="card-title">
Daftar Mata Uang
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
<input placeholder="Search Currency" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="{{ route('basicdata.currency.export') }}"> Export to Excel </a>
<a class="btn btn-sm btn-primary" href="{{ route('basicdata.currency.create') }}"> Tambah Mata Uang </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
</th>
<th class="min-w-[250px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Code </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[250px]" data-datatable-column="name">
<span class="sort"> <span class="sort-label"> Mata Uang </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px]" data-datatable-column="decimal_places">
<span class="sort"> <span class="sort-label"> Decimal Places </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true">
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<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(`basic-data/mata-uang/${data}`, {
type: 'DELETE'
}).then((response) => {
swal.fire('Deleted!', 'User 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>
<script type="module">
const element = document.querySelector('#currency-table');
const searchInput = document.getElementById('search');
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
code: {
title: 'Code',
},
name: {
title: 'Mata Uang',
},
decimal_places: {
title: 'Decimal Places',
},
actions: {
title: 'Status',
render: (item, data) => {
return `<div class="flex flex-nowrap justify-center">
<a class="btn btn-sm btn-icon btn-clear btn-info" href="basic-data/mata-uang/${data.id}/edit">
<i class="ki-outline ki-notepad-edit"></i>
</a>
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
<i class="ki-outline ki-trash"></i>
</a>
</div>`;
},
}
},
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function () {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
@endpush

View File

@@ -22,9 +22,10 @@
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="input-group w-full">
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
<select onchange="changePemilikJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
<option value="">Pilih Pemilik Jaminan</option>
<option value="0">Sama Dengan Debitur</option>
<option value="00">Tidak Sama Dengan Debitur</option>
@if(isset($pemilikJaminan))
@foreach($pemilikJaminan as $pemilik)
@if(isset($document))
@@ -39,19 +40,71 @@
@endforeach
@endif
</select>
@if(isset($document->id))
<a href="{{ route('debitur.pemilik.create',$debitur->id) }}?from=update-document&document={{ $document->id }}" class="btn btn-light">
<i class="ki-outline ki-plus-squared"></i> Tambah Pemilik Jaminan
</a>
@else
<a href="{{ route('debitur.pemilik.create',$debitur->id) }}?from=create-document" class="btn btn-light">
<i class="ki-outline ki-plus-squared"></i> Tambah Pemilik Jaminan
</a>
@endif
</div>
@error('pemilik_jaminan_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
<fieldset id="pemilik_jaminan" class="hidden border border-solid border-gray-300 p-3 w-full mt-5 grid gap-5">
<legend class="text-sm">Pemilik Jaminan</legend>
<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 bg-danger-light @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">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('pemilik_name') border-danger bg-danger-light @enderror" type="text " id="pemilik_name" name="pemilik_name" value="{{ $pemilik->name ?? '' }}" placeholder="Nama Pemilik Jaminan">
@error('pemilik_name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id" value="{{ $debitur->nomor_id ?? '' }}" placeholder="Nomor ID/KTP">
@error('nomor_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div id="nama_sertifikat">
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
&nbsp;
</label>
<div class="flex flex-wrap items-baseline w-full">
<button type="button" id="tambah_sertifikat" class="btn btn-primary btn-xs">Tambah Nama di Sertifikat</button>
</div>
</div>
</fieldset>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -112,6 +165,18 @@
</div>
</div>
@if($detail->details)
@php $custom_field = json_decode($detail->details,true) @endphp
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[][$detail->jenisLegalitasJaminan->custom_field]" value="{{ $custom_field[$detail->jenisLegalitasJaminan->custom_field] }}">
</div>
</div>
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Keterangan
@@ -244,14 +309,69 @@
</form>
@push('scripts')
{{--Pemilik Jaminan--}}
<script>
document.addEventListener("DOMContentLoaded", function() {
const namaSertifikatDiv = document.getElementById("nama_sertifikat");
// Function to add delete event listeners to existing buttons
function addDeleteListeners() {
document.querySelectorAll(".delete-button").forEach(button => {
button.addEventListener("click", function() {
this.closest(".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5").remove();
});
});
}
// Add delete listeners to existing buttons
addDeleteListeners();
document.getElementById("tambah_sertifikat").addEventListener("click", function() {
const newDiv = document.createElement("div");
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
newDiv.innerHTML = `
<label class="form-label max-w-56">
Nama Lengkap
</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">
<input class="input" type="text" name="detail_sertifikat[name][]" value="" placeholder="Nama Pemilik Jaminan">
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="number" name="detail_sertifikat[nomor_id][]" value="" placeholder="Nomor ID/KTP">
</div>
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
</div>
</div>
`;
namaSertifikatDiv.appendChild(newDiv);
// Add delete listener to the new button
addDeleteListeners();
});
});
function changePemilikJaminan() {
var pemilikJaminan = document.getElementById("pemilik_jaminan_id").value;
var fieldsetPemilikJaminan = document.getElementById("pemilik_jaminan");
if (pemilikJaminan === "00") {
fieldsetPemilikJaminan.classList.remove("hidden");
} else {
fieldsetPemilikJaminan.classList.add("hidden");
}
}
</script>
{{--Legalitas Jaminan--}}
<script>
function getLegalitasJaminan() {
var legalitasJaminan = document.getElementById('jenis_jaminan_id').value;
var url = '/basic-data/jenis-jaminan/legalitas/' + legalitasJaminan;
var legalitasJaminan = document.getElementById("jenis_jaminan_id").value;
var url = "/basic-data/jenis-jaminan/legalitas/" + legalitasJaminan;
fetch(url, {
method: 'GET',
method: "GET",
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
.then(response => {
@@ -261,8 +381,8 @@
return response.json();
})
.then(data => {
var doctainer = document.getElementById('doctainer');
doctainer.innerHTML = '';
var doctainer = document.getElementById("doctainer");
doctainer.innerHTML = "";
data.forEach((item, index) => {
doctainer.innerHTML += `
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -290,6 +410,27 @@
</div>
</div>
${item.custom_field && item.custom_field.length > 0 ? `
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
${item.custom_field.replace(/_/g, " ")}
</label>
<div class="flex flex-wrap items-baseline w-full">
${item.custom_field_type === "text" ? `
<input class="input" type="text" name="custom_field[][${item.custom_field}]">
` : item.custom_field_type === "number" ? `
<input class="input" type="number" name="custom_field[][${item.custom_field}]">
` : item.custom_field_type === "date" ? `
<input class="input" type="date" name="custom_field[][${item.custom_field}]">
` : item.custom_field_type === "textarea" ? `
<textarea class="textarea" rows="3" name="custom_field[][${item.custom_field}]"></textarea>
` : `
<input class="input" type="text" name="custom_field[][${item.custom_field}]">
`}
</div>
</div>
` : ""}
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Keterangan
@@ -298,10 +439,10 @@
<textarea class="textarea" rows="3" type="number" name="keterangan[]"></textarea>
</div>
</div>`;
})
});
})
.catch(error => {
console.error('Error:', error);
console.error("Error:", error);
// Handle the error here
});
}

View File

@@ -23,6 +23,11 @@
</div>
<div class="menu inline-flex" data-menu="true">
<div class="flex flex-nowrap justify-center gap-1.5">
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
<a href="{{ route('debitur.jaminan.bulk.download',['id' => $debitur->id,'jaminan' => $document->id]) }}" class="btn btn-sm btn-icon btn-dark">
<i class="ki-outline ki-cloud-download"></i>
</a>
@endif
<a href="{{ route('debitur.jaminan.edit',['id' => $debitur->id,'jaminan' => $document->id]) }}" class="btn btn-sm btn-icon btn-outline btn-info">
<i class="ki-outline ki-notepad-edit"></i>
</a>
@@ -65,7 +70,12 @@
<span class="text-2xs text-gray-600 uppercase">
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
</span>
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id, 'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline">{{ basename($detail->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a>
<div>
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2 badge-info"><i class="ki-filled ki-cloud-download mr-2"></i> Download</a>
@endif
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($detail->dokumen_jaminan) }}')"><i class="ki-filled ki-eye mr-2"></i>Preview</span>
</div>
</div>
<div class="border-t border-gray-300 border-dashed">
</div>
@@ -126,6 +136,7 @@
</a>
</div>
@include('lpj::component.pdfviewer')
@push('scripts')
<script type="text/javascript">

View File

@@ -10,51 +10,83 @@
<form action="{{ route('basicdata.jenis-legalitas-jaminan.update', $jenisLegalitasJaminan->id) }}" method="POST">
<input type="hidden" name="id" value="{{ $jenisLegalitasJaminan->id }}">
@method('PUT')
@else
<form method="POST" action="{{ route('basicdata.jenis-legalitas-jaminan.store') }}">
@endif
@csrf
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($jenisLegalitasJaminan->id) ? 'Edit' : 'Tambah' }} Jenis Legalitas Jaminan
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.jenis-legalitas-jaminan.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body grid gap-5">
@if(isset($jenisLegalitasJaminan->id))
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input readonly class="input border-warning bg-warning-light @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $jenisLegalitasJaminan->code ?? '' }}">
@error('code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $jenisLegalitasJaminan->name ?? '' }}">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
@else
<form method="POST" action="{{ route('basicdata.jenis-legalitas-jaminan.store') }}">
@endif
@csrf
<div class="card pb-2.5">
<div class="card-header" id="basic_settings">
<h3 class="card-title">
{{ isset($jenisLegalitasJaminan->id) ? 'Edit' : 'Tambah' }} Jenis Legalitas Jaminan
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.jenis-legalitas-jaminan.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
</div>
</div>
<div class="card-body grid gap-5">
@if(isset($jenisLegalitasJaminan->id))
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input readonly class="input border-warning bg-warning-light @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $jenisLegalitasJaminan->code ?? '' }}">
@error('code')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $jenisLegalitasJaminan->name ?? '' }}">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<!-- Tambahkan inputan custom_field -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Custom Field
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('custom_field') border-danger bg-danger-light @enderror" type="text" name="custom_field" value="{{ $jenisLegalitasJaminan->custom_field ?? '' }}">
@error('custom_field')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<!-- Tambahkan inputan custom_field_type -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Custom Field Type
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect @error('custom_field_type') border-danger bg-danger-light @enderror" name="custom_field_type">
<option value="">Pilih Tipe</option>
<option value="text" {{ (isset($jenisLegalitasJaminan) && $jenisLegalitasJaminan->custom_field_type == 'text') ? 'selected' : '' }}>Text</option>
<option value="number" {{ (isset($jenisLegalitasJaminan) && $jenisLegalitasJaminan->custom_field_type == 'number') ? 'selected' : '' }}>Number</option>
<option value="date" {{ (isset($jenisLegalitasJaminan) && $jenisLegalitasJaminan->custom_field_type == 'date') ? 'selected' : '' }}>Date</option>
</select>
@error('custom_field_type')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
</div>
@endsection

View File

@@ -80,28 +80,8 @@
</div>
<label class="form-label max-w-56">Nomor Ijin Usaha</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="nomor_ijin_usaha"
class="select w-full @error('nomor_ijin_usaha') border-danger @enderror"
name="nomor_ijin_usaha">
<option value="">Pilih Nomor Ijin Usaha</option>
@if (isset($ijin_usaha))
@if (isset($kjpp))
@foreach ($ijin_usaha as $branches)
<option value="{{ $branches->code }}"
{{ old('nomor_ijin_usaha', $kjpp->nomor_ijin_usaha) == $branches->code ? 'selected' : '' }}>
{{ $branches->code }}
</option>
@endforeach
@else
@foreach ($ijin_usaha as $branches)
<option value="{{ $branches->code }}"
{{ old('nomor_ijin_usaha') == $branches->code ? 'selected' : '' }}>
{{ $branches->code }}
</option>
@endforeach
@endif
@endif
</select>
<input class="input @error('nomor_ijin_usaha') border-danger @enderror" type="text"
name="nomor_ijin_usaha" value="{{ $kjpp->nomor_ijin_usaha ?? old('nomor_ijin_usaha') }}">
@error('nomor_ijin_usaha')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror

View File

@@ -0,0 +1,487 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('laporan.sederhana.index') }}
@endsection
@section('content')
<style>
.input-group {
position: relative;
width: 100%;
}
.left-group {
padding-right: 2.5rem;
}
.right-group {
padding-left: 2.5rem;
}
.input-group .input-unit {
position: absolute;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: #6b7280;
}
.input-group .input-unit.left {
left: 0.75rem;
}
.input-group .input-unit.right {
right: 0.75rem;
}
</style>
<div class="grid">
<div class="card card-grid min-w-full" id="debitur-table">
<div class="card-header py-5 flex-wrap">
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form action="" method="POST" class="grid gap-5">
<input type="hidden" name="id" value="">
@csrf
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
CADEB AN
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cadeb') border-danger bg-danger-light @enderror"
type="text" name="cadeb" value="">
@error('cadeb')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Jenis Aset
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('aset') border-danger bg-danger-light @enderror"
type="text" name="aset" value="">
@error('aset')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('kredit') border-danger bg-danger-light @enderror"
type="text" name="kredit" value="">
@error('kredit')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Alamat Objek
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('alamat') border-danger bg-danger-light @enderror"
type="text" name="alamat" value="">
@error('alamat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Cabang Pemohon
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cabang') border-danger bg-danger-light @enderror"
type="text" name="cabang" value="">
@error('cabang')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
AO
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('ao') border-danger bg-danger-light @enderror" type="text"
name="ao" value="">
@error('ao')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Surveyor
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('surveyor') border-danger bg-danger-light @enderror"
type="text" name="surveyor" value="">
@error('surveyor')
<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">
Penilai
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('penilai') border-danger bg-danger-light @enderror"
type="text" name="penilai" value="">
@error('penilai')
<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">
Tanggal Survey
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_survey') border-danger bg-danger-light @enderror"
type="date" name="tanggal_survey" value="">
@error('tanggal_survey')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Nomor Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_resume') border-danger bg-danger-light @enderror"
type="number" name="nomor_resume" value="">
@error('nomor_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Tanggal Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_resume') border-danger bg-danger-light @enderror"
type="date" name="tanggal_resume" value="">
@error('tanggal_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Faktor Positif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_positif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_positif" name="faktor_positif"></textarea>
@error('faktor_positif')
<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">
Faktor Negatif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_negatif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_negatif" name="faktor_negatif"></textarea>
@error('faktor_negatif')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<label class="form-label">Kesimpulan Nilai Pasar</label>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai Fisik
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai IMB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Asumsi nilai terpotong jalan/GSB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Catatan perlu diperhatikan
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('catatan') border-danger bg-danger-light @enderror" rows="3" type="number"
id="catatan" name="catatan"></textarea>
@error('catatan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
DISCLAIMER
</label>
<div class="flex flex-wrap items-baseline w-full">
<ol>
<li>Laporan Resume ini dikeluarkan dikarenakan belum dilakukannya pembayaran biaya
penilaian jaminan</li>
<li>Laporan Resume ini tidak bisa dijadikan sebagai dasar pengajuan dan atau pencairan
kredit, laporan yang digunakan tetap wajib berupa Laporan Penilaian Jaminan (LPJ)
</li>
<li>Detail per meter tanah dan bangunan, sarana pelengkap dll akan tercatat di Laporan
Penilaian Jaminan (LPJ) nanti</li>
<li>Laporan Resume ini hanya digunakan untuk kepentingan internal bagi</li>
<li>Laporan resume ini hanya berlaku <span class="text-red-500">14 hari</span> kerja
terhitung dari tanggal resume ini dibuat sesuai aturan yang berlaku, apabila lewat
maka harus dilakukan order ulang sesuai prosedur yang berlaku</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali</li>
</ol>
</div>
</div>
<hr>
<label class="form-label">Salam,</label>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
PENILAI
</label>
<label class="form-label max-w-56 lg:w-32">
SENIOR OFICER
</label>
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</form>
</div>
</div>
</div>
{{-- <form method="POST" action="">
<div class="card pb-2.5">
<input type="hidden" name="action" value="">
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
name="code" value="">
@error('code')
<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">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text"
name="name" value="">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form> --}}
</div>
@endsection

View File

@@ -0,0 +1,486 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('laporan.standard.index') }}
@endsection
@section('content')
<style>
.input-group {
position: relative;
width: 100%;
}
.left-group {
padding-right: 2.5rem;
}
.right-group {
padding-left: 2.5rem;
}
.input-group .input-unit {
position: absolute;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: #6b7280;
}
.input-group .input-unit.left {
left: 0.75rem;
}
.input-group .input-unit.right {
right: 0.75rem;
}
</style>
<div class="grid">
<div class="card card-grid min-w-full" id="debitur-table">
<div class="card-header py-5 flex-wrap">
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form action="" method="POST" class="grid gap-5">
<input type="hidden" name="id" value="">
@csrf
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
CADEB AN
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cadeb') border-danger bg-danger-light @enderror"
type="text" name="cadeb" value="">
@error('cadeb')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Jenis Aset
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('aset') border-danger bg-danger-light @enderror"
type="text" name="aset" value="">
@error('aset')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('kredit') border-danger bg-danger-light @enderror"
type="text" name="kredit" value="">
@error('kredit')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Alamat Objek
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('alamat') border-danger bg-danger-light @enderror"
type="text" name="alamat" value="">
@error('alamat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Cabang Pemohon
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cabang') border-danger bg-danger-light @enderror"
type="text" name="cabang" value="">
@error('cabang')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
AO
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('ao') border-danger bg-danger-light @enderror" type="text"
name="ao" value="">
@error('ao')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Surveyor
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('surveyor') border-danger bg-danger-light @enderror"
type="text" name="surveyor" value="">
@error('surveyor')
<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">
Penilai
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('penilai') border-danger bg-danger-light @enderror"
type="text" name="penilai" value="">
@error('penilai')
<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">
Tanggal Survey
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_survey') border-danger bg-danger-light @enderror"
type="date" name="tanggal_survey" value="">
@error('tanggal_survey')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Nomor Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_resume') border-danger bg-danger-light @enderror"
type="number" name="nomor_resume" value="">
@error('nomor_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Tanggal Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_resume') border-danger bg-danger-light @enderror"
type="date" name="tanggal_resume" value="">
@error('tanggal_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Faktor Positif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_positif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_positif" name="faktor_positif"></textarea>
@error('faktor_positif')
<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">
Faktor Negatif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_negatif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_negatif" name="faktor_negatif"></textarea>
@error('faktor_negatif')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<label class="form-label">Kesimpulan Nilai Pasar</label>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai Fisik
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai IMB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Asumsi nilai terpotong jalan/GSB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Catatan perlu diperhatikan
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('catatan') border-danger bg-danger-light @enderror" rows="3" type="number"
id="catatan" name="catatan"></textarea>
@error('catatan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
DISCLAIMER
</label>
<div class="flex flex-wrap items-baseline w-full">
<ol>
<li>Laporan Resume ini dikeluarkan dikarenakan belum dilakukannya pembayaran biaya
penilaian jaminan</li>
<li>Laporan Resume ini tidak bisa dijadikan sebagai dasar pengajuan dan atau pencairan
kredit, laporan yang digunakan tetap wajib berupa Laporan Penilaian Jaminan (LPJ)
</li>
<li>Detail per meter tanah dan bangunan, sarana pelengkap dll akan tercatat di Laporan
Penilaian Jaminan (LPJ) nanti</li>
<li>Laporan Resume ini hanya digunakan untuk kepentingan internal bagi</li>
<li>Laporan resume ini hanya berlaku <span class="text-red-500">14 hari</span> kerja
terhitung dari tanggal resume ini dibuat sesuai aturan yang berlaku, apabila lewat
maka harus dilakukan order ulang sesuai prosedur yang berlaku</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali</li>
</ol>
</div>
</div>
<hr>
<label class="form-label">Salam,</label>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
PENILAI
</label>
<label class="form-label max-w-56 lg:w-32">
SENIOR OFICER
</label>
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</form>
</div>
</div>
</div>
{{-- <form method="POST" action="">
<div class="card pb-2.5">
<input type="hidden" name="action" value="">
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
name="code" value="">
@error('code')
<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">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text"
name="name" value="">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form> --}}
</div>
@endsection

View File

@@ -79,7 +79,7 @@
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id" value="{{ $debitur->nomor_id ?? '' }}" placeholder="Nomor ID/KTP">
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id" value="{{ $pemilik->nomor_id ?? '' }}" placeholder="Nomor ID/KTP">
@error('nomor_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
@@ -88,7 +88,28 @@
</div>
</div>
<div id="nama_sertifikat">
@if(isset($detailSertifikat))
@foreach(json_decode($detailSertifikat) as $sertifikat)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5">
<label class="form-label max-w-56">
Nama Lengkap
</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">
<input class="input" type="text" id="name" name="detail_sertifikat[name][]" value="{{ $sertifikat->name }}" placeholder="Nama Pemilik Jaminan">
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="number" name="detail_sertifikat[nomor_id][]" value="{{ $sertifikat->nomor_id }}" placeholder="Nomor ID/KTP">
</div>
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
</div>
</div>
</div>
@endforeach
@endif
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
@@ -253,41 +274,46 @@
</div>
@endsection
@push('scripts')
<script>
document.getElementById('tambah_sertifikat').addEventListener('click', function() {
const namaSertifikatDiv = document.getElementById('nama_sertifikat');
const newDiv = document.createElement('div');
newDiv.innerHTML = `
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5">
<label class="form-label max-w-56">
Nama Lengkap
</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">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" id="name" name="name[]" value="" placeholder="Nama Pemilik Jaminan">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id[]" value="" placeholder="Nomor ID/KTP">
@error('nomor_id')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
</div>
</div>
</div>
`;
namaSertifikatDiv.appendChild(newDiv);
document.addEventListener("DOMContentLoaded", function() {
const namaSertifikatDiv = document.getElementById("nama_sertifikat");
// Event listener untuk tombol hapus
newDiv.querySelector('.delete-button').addEventListener('click', function() {
namaSertifikatDiv.removeChild(newDiv);
// Function to add delete event listeners to existing buttons
function addDeleteListeners() {
document.querySelectorAll(".delete-button").forEach(button => {
button.addEventListener("click", function() {
this.closest(".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5").remove();
});
});
}
// Add delete listeners to existing buttons
addDeleteListeners();
document.getElementById("tambah_sertifikat").addEventListener("click", function() {
const newDiv = document.createElement("div");
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
newDiv.innerHTML = `
<label class="form-label max-w-56">
Nama Lengkap
</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">
<input class="input" type="text" name="detail_sertifikat[name][]" value="" placeholder="Nama Pemilik Jaminan">
</div>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="number" name="detail_sertifikat[nomor_id][]" value="" placeholder="Nomor ID/KTP">
</div>
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
</div>
</div>
`;
namaSertifikatDiv.appendChild(newDiv);
// Add delete listener to the new button
addDeleteListeners();
});
});
</script>

View File

@@ -189,7 +189,12 @@
@enderror
</div>
</div>
<div class="flex justify-end">
<div class="flex justify-end gap-1.5">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.showSuratTender', $noreg) }}" class="btn btn-primary">
Surat Tender
</a>
@endif
<button type="submit" class="btn btn-primary">
Save
</button>

View File

@@ -195,7 +195,12 @@
</div>
</div>
<div class="flex justify-end">
<div class="flex justify-end gap-1.5">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.showSuratTender', $noreg) }}" class="btn btn-primary">
Surat Tender
</a>
@endif
<button type="submit" class="btn btn-primary">
Penawaran Ulang
</button>

View File

@@ -0,0 +1,56 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }}
@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">
Surat Tender
</h3>
<div class="flex items-center gap-2">
@if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@else
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@endif
</div>
</div>
<div class="card-body grid gap-5">
<p>Dear
<span class="font-bold">{{ ucwords(auth()->user()->name) ?? 'Tidak Ada' }}</span>
</p>
<p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
class="font-bold">{{ ucwords($penawaran->permohonan->user->name) }}</span>, tujuan penilaian
untuk <span class="font-bold">
@foreach ($penawaran->tujuanPenilaianKJPP as $tujuanPenilaianKJPP)
{{ $tujuanPenilaianKJPP->name }}
@endforeach
</span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>,
dengan data-data sebagai berikut :</p>
<ul>
<li>Aset Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
<li>Lokasi Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
<li>LT / LB: <span class="font-bold">[otomasi dari tabel permohonan]</span></li>
</ul>
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
<p>Mohon proposal dapat saya terima segera, sebelum
<span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date) }} pukul 17.00 WIB</span>
</p>
<p>Best Regards,
<span class="font-bold">[otomasi dari nama dan tanda tangan user penginput]</span>
Sub Direktorat Appraisal
</p>
<p>PT. Bank Artha Graha Internasional, Tbk.<br>
Gedung Bank Artha Graha, Lantai 3<br>
Jl. Kwiitang Raya No 24-26, Jakarta Pusat - 10420.<br>
Telp. 021 - 3903040 (H)</p>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,200 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('penilai') }}
@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-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
data-datatable-state-save="false" id="penilai-table" data-api-url="{{ route('penilai.dataForTables') }}">
<div class="card-header py-5 flex-wrap">
<h3 class="card-title">
Penilai
</h3>
<div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex">
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
<input placeholder="Search Penilai" id="search" type="text" value="">
</label>
</div>
<div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="#"> Export to Excel </a>
</div>
</div>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
data-datatable-table="true">
<thead>
<tr>
<th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
</th>
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="debitur_id">
<span class="sort"> <span class="sort-label"> Debitur </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="branch_id">
<span class="sort"> <span class="sort-label"> Pemohon(Cabang/Direktorat) </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="user_id">
<span class="sort"> <span class="sort-label"> AO </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_id">
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="jenis_fasilitas_kredit_id">
<span class="sort"> <span class="sort-label"> Fasilitas Kredit </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="tanggal_survei">
<span class="sort"> <span class="sort-label"> Tanggal Survei </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="due_date_sla">
<span class="sort"> <span class="sort-label"> Due Date SLA </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
</table>
</div>
<div
class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
<div class="flex items-center gap-2">
Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per
page
</div>
<div class="flex items-center gap-4">
<span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
function formatDate(date) {
const day = date.getDate().toString().padStart(2, '0');
const month = (date.getMonth() + 1).toString().padStart(2, '0');
// Months are 0-indexed
const year = date.getFullYear();
return `${day} ${getIndonesianMonth(month)} ${year}`;
}
function getIndonesianMonth(month) {
const months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
];
return months[month -
1];
}
</script>
<script type="module">
const element = document.querySelector('#penilai-table');
const searchInput = document.getElementById('search');
const apiUrl = element.getAttribute('data-api-url');
const dataTableOptions = {
apiEndpoint: apiUrl,
pageSize: 5,
columns: {
select: {
render: (item, data, context) => {
const checkbox = document.createElement('input');
checkbox.className = 'checkbox checkbox-sm';
checkbox.type = 'checkbox';
checkbox.value = data.id.toString();
checkbox.setAttribute('data-datatable-row-check', 'true');
return checkbox.outerHTML.trim();
},
},
nomor_registrasi: {
title: 'Nomor Registrasi',
},
debitur_id: {
title: 'Debitur',
render: (item, data) => {
return `${data.debiture.name}`;
},
},
branch_id: {
title: 'Cabang Pemohon',
render: (item, data) => {
return `${data.branch.name}`;
},
},
user_id: {
title: 'User Pemohon',
render: (item, data) => {
return `${data.user.name}`;
},
},
tujuan_penilaian_id: {
title: 'Tujuan Penilaian',
render: (item, data) => {
return `${data.tujuan_penilaian.name}`;
},
},
jenis_fasilitas_kredit_id: {
title: 'Fasilitas Kredit',
render: (item, data) => {
return `${data.jenisfasilitas_kredit.name}`;
},
},
tanggal_survei: {
title: 'Tanggal Survei',
render: (item, data) => {
return `${formatDate(new Date(data.created_at))}`;
},
},
due_date_sla: {
title: 'Due Date SLA',
render: (item, data) => {
return `${formatDate(new Date(data.created_at))}`;
},
},
actions: {
title: 'Action',
render: (item, data) => {
return `
<div class="flex flex-nowrap justify-center gap-1.5">
<a class="btn btn-sm btn-outline btn-info" href="penilai/${data.id}/show">
<i class="ki-outline ki-eye"></i>
</a>
</div>`;
},
}
},
};
let dataTable = new KTDataTable(element, dataTableOptions);
// Custom search functionality
searchInput.addEventListener('input', function() {
const searchValue = this.value.trim();
dataTable.search(searchValue, true);
});
</script>
@endpush

View File

@@ -0,0 +1,160 @@
@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">
Detail Penilai
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('penilai.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i>
Back</a>
</div>
</div>
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nomor Registrasi
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->nomor_registrasi }}</p>
</div>
<label class="form-label max-w-56">
Nama Debitur
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->debiture->name }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Cabang
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->branch->name }}</p>
</div>
<label class="form-label max-w-56">
Alamat Jaminan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->debiture->address }}, Kel.
{{ $permohonan->debiture->village->name }}, Kec. {{ $permohonan->debiture->district->name }},
{{ ucwords(strtolower($permohonan->debiture->city->name)) }}, Kode Pos.
{{ $permohonan->debiture->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">
Nama AO/Pemohon
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->user->name }}</p>
</div>
<label class="form-label max-w-56">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->jenisFasilitasKredit->name }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Tanggal Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
</div>
<label class="form-label max-w-56">
CIF
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->debiture->cif }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Tanggal Konfirmasi Kunjungan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Surveyor
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->penilaian->userSurveyor->name }}</p>
<p class="flex w-full text-gray-600 font-medium text-sm">
Region 1</p>
</div>
<label class="form-label max-w-56">
Penilai
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
@foreach ($permohonan->penilaian->teams->teamsUsers as $index => $penilaian)
{{ $penilaian->user->name }}{{ $index + 1 < count($permohonan->penilaian->teams->teamsUsers) ? ', ' : '' }}
@endforeach
</p>
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->penilaian->teams->regions->name }}
</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Tujuan Penilaian
</label>
<p class="flex text-gray-600 font-medium text-sm w-full">
{{ $permohonan->tujuanPenilaian->name }}</p>
<label class="form-label max-w-56">
Jenis Jaminan
</label>
<p class="flex text-gray-600 font-medium text-sm w-full">
@foreach ($permohonan->debiture->documents as $document)
{{ $document->jenisjaminan->name }}
@endforeach
</p>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Tanggal Survei
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Tanggal Laporan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
No. Laporan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
PJ/001/001</p>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -148,7 +148,7 @@
Catatan
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea" rows="3" type="number" id="address" name="address"></textarea>
<textarea class="textarea" rows="3" type="number" id="keterangan" name="keterangan"></textarea>
</div>
</div>
</div>

View File

@@ -155,38 +155,15 @@
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Status Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="status" id="status">
<option value="">Pilih Status Permohonan</option>
@if(isset($status))
@foreach($status as $row)
@if(isset($permohonan))
<option value="{{ $row->slug }}" {{ isset($permohonan->status) && $permohonan->status == $row->slug ?'selected' : '' }}>
{{ $row->name }}
</option>
@else
<option value="{{ $row->slug }}">
{{ $row->name }}
</option>
@endif
@endforeach
@endif
</select>
@error('status')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
@if($permohonan->status=='revisi')
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
Catatan : <br>
<em class="text-red-500">{{ $permohonan->keterangan }}</em>
</div>
</div>
@endif
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
{{ $permohonan->status=='revisi' ? 'Submit Ulang' : 'Save' }}
</button>
</div>
</form>

View File

@@ -63,6 +63,10 @@
<span class="sort"> <span class="sort-label"> Status </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="keterangan">
<span class="sort"> <span class="sort-label"> Keterangan </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
</tr>
</thead>
@@ -158,7 +162,10 @@
debitur_id: {
title: 'Debitur',
render: (item, data) => {
return `${data.debiture.name}`;
if(data.debiture) {
return `${data.debiture.name}`;
}
return "-";
},
},
tujuan_penilaian_id: {
@@ -170,11 +177,20 @@
status: {
title: 'Status'
},
keterangan: {
title: 'Keterangan'
},
actions: {
title: 'Status',
title: 'Actions',
render: (item, data) => {
return `
<div class="flex flex-nowrap justify-center gap-1.5">
var actionHtml = `
<div class="flex flex-nowrap justify-center gap-1.5">`;
if(data.status !== 'order'){
actionHtml += `<a class="btn btn-sm btn-outline btn-success" href="permohonan/${data.id}">
<i class="ki-filled ki-document"></i>
</a>`;
}
actionHtml += `
<a class="btn btn-sm btn-outline btn-info" href="permohonan/${data.id}/edit">
<i class="ki-outline ki-notepad-edit"></i>
</a>
@@ -182,6 +198,8 @@
<i class="ki-outline ki-trash"></i>
</a>
</div>`;
return actionHtml;
},
}
},

View File

@@ -0,0 +1,221 @@
@extends('layouts.auth')
@section('content')
<div class="w-full gap-5 mx-auto" id="printtable">
<div class="gap-5 w-full">
<div class="card">
<div class="card-body lg:py-7.5 grid grid-cols-2">
<div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Nomor Register Permohonan
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ $permohonan->nomor_registrasi }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Pemohon
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ $permohonan->user->nik }} | {{ $permohonan->user->name }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Tujan Permohonan
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ $permohonan->tujuanPenilaian->name }}
</span>
</div>
</div>
<div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Status Permohonan
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ ucwords($permohonan->status) }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Cabang Pemohon
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ $permohonan->user->branch->name }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900 w-1/2">
Tanggal Permohonan
</h3>
<span class="text-md font-medium text-gray-900 w-1/2">
: {{ formatTanggalIndonesia($permohonan->created_at) }}
</span>
</div>
</div>
</div>
</div>
</div>
<div class="gap-5 w-full grid grid-cols-3 mt-5">
<div>
<div class="card min-w-full">
<div class="card-header" id="advanced_settings_appearance">
<h3 class="card-title">
1. Fasilitas Kredit
</h3>
</div>
<div class="card-body lg:py-7.5">
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Jenis Fasilitas
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $permohonan->jenisFasilitasKredit->name }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Nilai Plafond
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $permohonan->nilaiPlafond->name }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Nilai NJOP
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $permohonan->nilai_njop }}
</span>
</div>
</div>
</div>
<div class="card mt-5 min-w-full">
<div class="card-header">
<h3 class="card-title">
2. Identitas Debutur
</h3>
</div>
<div class="card-table scrollable-x-auto pb-3">
<div class="grid grid-cols-1 xl:grid-cols-2 gap-5 lg:gap-7.5">
<div class="col-span-1">
<table class="table align-middle text-sm text-gray-500">
<tr>
<td class="py-2 text-gray-600 font-normal">
Name
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->name ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
Cabang
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->branch->name ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
CIF
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->cif ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
Address
</td>
<td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->address ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
&nbsp;
</td>
<td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }}
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-span-2">
<div class="card min-w-full">
<div class="card-header">
<h3 class="card-title">
Data Jaminan
</h3>
</div>
<div class="card-table scrollable-x-auto pb-3">
@foreach($permohonan->debiture->documents as $dokumen)
<div class="card-body lg:py-7.5">
<span class="text-base text-gray-900 font-bold mb-5">
Jaminan {{ $loop->index + 1 }}
</span>
<div class="mb-5 grid grid-cols-2 mt-5">
<h3 class="text-md text-gray-900">
Pemilik Jaminan
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $dokumen->pemilik->name?? "" }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Jenis Jaminan:
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $dokumen->jenisJaminan->name?? "" }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Hubungan Pemilik Jaminan:
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $dokumen->pemilik->hubungan_pemilik->name?? "" }}
</span>
</div>
<div class="mb-5 grid grid-cols-2">
<h3 class="text-md text-gray-900">
Alamat Pemilik Jaminan:
</h3>
<span class="text-md font-medium text-gray-900">
: {{ $dokumen->pemilik->address ?? ""}},
<br> {{ $dokumen->pemilik->village->name ?? "" }}, {{ $dokumen->pemilik->district->name ?? "" }}, {{ $dokumen->pemilik->city->name ?? "" }}, {{ $dokumen->pemilik->province->name ?? "" }} - {{ $dokumen->pemilik->village->postal_code ?? "" }}
</span>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<script type="module">
var printtable = document.getElementById('printtable');
window.print(printtable);
</script>
@endpush

View File

@@ -0,0 +1,189 @@
@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="flex gap-5 flex-row w-full">
<div class="card flex-1">
<div class="card-header" id="advanced_settings_appearance">
<h3 class="card-title">
Data Permohonan
</h3>
</div>
<div class="card-body lg:py-7.5 grid grid-cols-3">
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Nomor Register Permohonan:
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->nomor_registrasi }}
</span>
</div>
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Pemohon:
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }}
</span>
</div>
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Tujan Permohonan:
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->tujuanPenilaian->name }}
</span>
</div>
</div>
</div>
<div class="card flex-1">
<div class="card-header" id="advanced_settings_appearance">
<h3 class="card-title">
Fasilitas Kredit
</h3>
</div>
<div class="card-body lg:py-7.5 grid grid-cols-3">
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Jenis Fasilitas
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->jenisFasilitasKredit->name }}
</span>
</div>
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Nilai Plafond:
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->nilaiPlafond->name }}
</span>
</div>
<div class="mb-5">
<h3 class="text-md font-medium text-gray-900">
Nilai NJOP:
</h3>
<span class="text-2sm text-gray-700">
{{ $permohonan->nilai_njop }}
</span>
</div>
</div>
</div>
</div>
<div class="card min-w-full">
<div class="card-header">
<h3 class="card-title">
Detail Debutur
</h3>
</div>
<div class="card-table scrollable-x-auto pb-3">
<div class="grid grid-cols-1 xl:grid-cols-2 gap-5 lg:gap-7.5">
<div class="col-span-1">
<table class="table align-middle text-sm text-gray-500">
<tr>
<td class="py-2 text-gray-600 font-normal">
Name
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->name ?? "" }}
</td>
</tr>
<tr>
<td class="py-3">
Email
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
{{ $permohonan->debiture->email ?? "" }}
</td>
</tr>
<tr>
<td class="py-3">
Phone
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
{{ $permohonan->debiture->phone ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
Address
</td>
<td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->address ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
&nbsp;
</td>
<td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }}
</td>
</tr>
</table>
</div>
<div class="col-span-1">
<table class="table align-middle text-sm text-gray-500">
<tr>
<td class="py-3 text-gray-600 font-normal">
Cabang
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->branch->name ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
CIF
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $permohonan->debiture->cif ?? "" }}
</td>
</tr>
<tr>
<td class="py-3 text-gray-600 font-normal">
Nomor Rekening
</td>
<td class="py-3 text-gray-700 text-sm font-normal">
{{ $permohonan->debiture->nomor_rekening ?? "" }}
</td>
</tr>
<tr>
<td class="py-3">
NPWP
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
{{ $permohonan->debiture->npwp ?? "" }}
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
@include('lpj::component.detail-jaminan')
<div class="card">
<form action="{{ route('permohonan.print', $permohonan->id) }}" method="GET">
<input type="hidden" name="_method" value="PUT">
@csrf
<div class="card-footer flex justify-end">
<button type="submit" name="status" value="print" class="btn btn-success">
<i class="ki-filled ki-printer mr-2"></i> Print Surat Permohonan
</button>
</div>
</form>
</div>
</div>
@endsection

View File

@@ -38,8 +38,8 @@
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="code">
<span class="sort"> <span class="sort-label"> Kode Penawaran </span>
<th class="min-w-[150px]" data-datatable-column="debiture">
<span class="sort"> <span class="sort-label"> Nama Debitur </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="start_date">
@@ -132,8 +132,16 @@
'nomor_registrasi': {
title: 'Nomor Registrasi',
},
code: {
title: 'Kode Penawaran',
debiture: {
title: 'Nama Debitur',
render: (item, data) => {
if(data.permohonan) {
return `${data.permohonan.debiture.name}`;
}
return "-";
}
},
start_date: {
title: 'Tanggal Penawaran',

View File

@@ -1,19 +1,19 @@
@push('scripts')
@include('lpj::assetsku.includenya')
@include('lpj::prosespenawaran.js.editextjs')
<script type="module">
@include('lpj::prosespenawaran.js.editextjs')
<script type="module">
$(document).ready(function() {
prepareForm();
});
function prepareForm()
function prepareForm()
{
setData();
}
function setData()
{
function setData()
{
let id = $("#id").val();
let token = "{{ csrf_token() }}";
// alert('token = ' + token);
@@ -33,7 +33,7 @@
// }
},
success: function(response) {
if ('success' == response.status)
{
$("#textReg").text(response.penawaran.nomor_registrasi);
@@ -55,7 +55,7 @@
function setTablesKJPP1(datas)
{
let i=1;
let i=1;
$.each(datas, function(key, value){
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
@@ -72,7 +72,7 @@
markup +='<td valign="top"><div class="input-group"><span class="inputku btn btn-input" id="{{$route[1]}}_rp_'+value.id+'">Rp.</span><input type="text" disabled="" style="text-align: right;" onkeydown="return numbersonly(this, event);" onkeyup="javascript:tandaPemisahTitik(this);" class="inputku input" id="{{$route[1]}}_biayaPenawaran_'+value.id+'" name="{{$route[1]}}_biayaPenawaran_'+value.id+'"></div><em id="{{$route[1]}}_biayaPenawaran_msg_'+value.id+'" class="alert text-danger text-sm"></em></td>';
markup +='<td><input type="file" disabled="" class="inputku file-input" id="{{$route[1]}}_dokumenPersetujuan_'+value.id+'" name="{{$route[1]}}_dokumenPersetujuan_'+value.id+'" accept="application/pdf" /><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
markup +='<td><div class="flex flex-nowrap justify-center">';
markup +='<a disabled="" class="btn btn-sm btn-icon btn-clear btn-info" href="javascript:void(0)" id="{{$route[1]}}_icon_update_'+value.id+'" title="Proses Penawaran '+kjppName+'" onclick="updateData('+value.id+','+value.kjpp_rekanan_id+',\''+kjppName+'\')"><i class="ki-outline ki-notepad-edit"></i></a>';
markup +='<a disabled="" class="btn btn-sm btn-icon btn-clear btn-info" href="javascript:void(0)" id="{{$route[1]}}_icon_update_'+value.id+'" title="Proses Penawaran '+kjppName+'" onclick="updateData('+value.id+','+value.kjpp_rekanan_id+',\''+kjppName+'\')"><i class="ki-outline ki-bookmark"></i></a>';
markup +='<a disabled="" class="delete btn btn-sm btn-icon btn-clear btn-danger" id="{{$route[1]}}_icon_delete_'+value.id+'" onclick="deleteData('+value.id+',\''+kjppName+'\')" title="Hapus Proses Penawaran '+kjppName+'"><i class="ki-outline ki-trash"></i></a>';
markup +='<label class="switch"><input name="{{$route[1]}}_check_'+value.id+'" id="{{$route[1]}}_check_'+value.id+'" onclick="switchProses('+value.id+')" type="checkbox" value="0"/><span class="switch-label">Proses</span></label></div></td>';
markup += '</tr>';
@@ -107,11 +107,11 @@
// updateAll penawaran & permohonan status
$("#{{$route[1]}}_toEdit").click(function(e) {
e.preventDefault();
//define variable
let token = "{{ csrf_token() }}";
let useURL = "{{ route($route[0].'.'.$route[1].'.updateAll',$id) }}";
var input_data = new Object();
input_data._token = token;
input_data.id = "{{ $id }}";
@@ -122,15 +122,15 @@
data: input_data,
dataType: "json",
success: function(response) {
if ('success' == response.status)
{
// toastr.success(response.message);
// success
var message = response.message;
toastrku("success", message);
setTimeout(function () {
var url = "{{ route('tender.prosespenawaran.index') }}";
setTimeout(function () {
var url = "{{ route('tender.prosespenawaran.index') }}";
$(location).attr('href',url);
}, 2000);
@@ -147,8 +147,8 @@
console.log(response);
}
});
});
});
});
</script>
@endpush
@endpush

View File

@@ -1,19 +1,19 @@
@push('scripts')
@include('lpj::assetsku.includenya')
@include('lpj::prosespenawaranulang.js.editextjs')
<script type="module">
@include('lpj::prosespenawaranulang.js.editextjs')
<script type="module">
$(document).ready(function() {
prepareForm();
});
function prepareForm()
function prepareForm()
{
setData();
}
function setData()
{
function setData()
{
let id = $("#id").val();
let token = "{{ csrf_token() }}";
// alert('token = ' + token);
@@ -49,7 +49,7 @@
var message = response.message;
toastrku("error", message);
}
},
error: function(xhr) {
},
@@ -57,10 +57,10 @@
}
});
}
function setTablesKJPP1(datas)
{
let i=1;
let i=1;
$.each(datas, function(key, value){
var kjppName = value.kjpp_code+' - '+value.kjpp_name;
var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran);
@@ -77,7 +77,7 @@
markup +='<td valign="top"><div class="input-group"><span class="inputku btn btn-input" id="{{$route[1]}}_rp_'+value.id+'">Rp.</span><input type="text" disabled="" style="text-align: right;" onkeydown="return numbersonly(this, event);" onkeyup="javascript:tandaPemisahTitik(this);" class="inputku input" id="{{$route[1]}}_biayaPenawaran_'+value.id+'" name="{{$route[1]}}_biayaPenawaran_'+value.id+'"></div><em id="{{$route[1]}}_biayaPenawaran_msg_'+value.id+'" class="alert text-danger text-sm"></em></td>';
markup +='<td><input type="file" disabled="" class="inputku file-input" id="{{$route[1]}}_dokumenPersetujuan_'+value.id+'" name="{{$route[1]}}_dokumenPersetujuan_'+value.id+'" accept="application/pdf" /><em id="{{$route[1]}}_dokumenPersetujuan_msg_'+value.id+'" class="alert text-danger text-sm"></em>'+htmlDokumenPersetujuanDownload+'</td>';
markup +='<td><div class="flex flex-nowrap justify-center">';
markup +='<a disabled="" class="btn btn-sm btn-icon btn-clear btn-info" href="javascript:void(0)" id="{{$route[1]}}_icon_update_'+value.id+'" title="Proses Penawaran '+kjppName+'" onclick="updateData('+value.id+','+value.kjpp_rekanan_id+',\''+kjppName+'\')"><i class="ki-outline ki-notepad-edit"></i></a>';
markup +='<a disabled="" class="btn btn-sm btn-icon btn-clear btn-info" href="javascript:void(0)" id="{{$route[1]}}_icon_update_'+value.id+'" title="Proses Penawaran '+kjppName+'" onclick="updateData('+value.id+','+value.kjpp_rekanan_id+',\''+kjppName+'\')"><i class="ki-outline ki-bookmark"></i></a>';
markup +='<a disabled="" class="delete btn btn-sm btn-icon btn-clear btn-danger" id="{{$route[1]}}_icon_delete_'+value.id+'" onclick="deleteData('+value.id+',\''+kjppName+'\')" title="Hapus Proses Penawaran '+kjppName+'"><i class="ki-outline ki-trash"></i></a>';
markup +='<label class="switch"><input name="{{$route[1]}}_check_'+value.id+'" id="{{$route[1]}}_check_'+value.id+'" onclick="switchProses('+value.id+')" type="checkbox" value="0"/><span class="switch-label">Proses</span></label></div></td>';
markup += '</tr>';
@@ -92,7 +92,7 @@
i++;
});
}
$(document).on("input", "input:file", function(e) {
let fileName = e.target.files[0].name;
let inputFile = e.target.id;
@@ -109,4 +109,4 @@
}
});
</script>
@endpush
@endpush

View File

@@ -0,0 +1,486 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('resume') }}
@endsection
@section('content')
<style>
.input-group {
position: relative;
width: 100%;
}
.left-group {
padding-right: 2.5rem;
}
.right-group {
padding-left: 2.5rem;
}
.input-group .input-unit {
position: absolute;
top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: #6b7280;
}
.input-group .input-unit.left {
left: 0.75rem;
}
.input-group .input-unit.right {
right: 0.75rem;
}
</style>
<div class="grid">
<div class="card card-grid min-w-full" id="debitur-table">
<div class="card-header py-5 flex-wrap">
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form action="" method="POST" class="grid gap-5">
<input type="hidden" name="id" value="">
@csrf
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
CADEB AN
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cadeb') border-danger bg-danger-light @enderror"
type="text" name="cadeb" value="">
@error('cadeb')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Jenis Aset
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('aset') border-danger bg-danger-light @enderror"
type="text" name="aset" value="">
@error('aset')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Fasilitas Kredit
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('kredit') border-danger bg-danger-light @enderror"
type="text" name="kredit" value="">
@error('kredit')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Alamat Objek
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('alamat') border-danger bg-danger-light @enderror"
type="text" name="alamat" value="">
@error('alamat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Cabang Pemohon
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('cabang') border-danger bg-danger-light @enderror"
type="text" name="cabang" value="">
@error('cabang')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
AO
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('ao') border-danger bg-danger-light @enderror" type="text"
name="ao" value="">
@error('ao')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Surveyor
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('surveyor') border-danger bg-danger-light @enderror"
type="text" name="surveyor" value="">
@error('surveyor')
<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">
Penilai
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('penilai') border-danger bg-danger-light @enderror"
type="text" name="penilai" value="">
@error('penilai')
<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">
Tanggal Survey
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_survey') border-danger bg-danger-light @enderror"
type="date" name="tanggal_survey" value="">
@error('tanggal_survey')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Nomor Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('nomor_resume') border-danger bg-danger-light @enderror"
type="number" name="nomor_resume" value="">
@error('nomor_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
Tanggal Resume
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('tanggal_resume') border-danger bg-danger-light @enderror"
type="date" name="tanggal_resume" value="">
@error('tanggal_resume')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Faktor Positif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_positif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_positif" name="faktor_positif"></textarea>
@error('faktor_positif')
<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">
Faktor Negatif
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('faktor_negatif') border-danger bg-danger-light @enderror" rows="3"
type="number" id="faktor_negatif" name="faktor_negatif"></textarea>
@error('faktor_negatif')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<label class="form-label">Kesimpulan Nilai Pasar</label>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai Fisik
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Sesuai IMB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Asumsi nilai terpotong jalan/GSB
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="input-group w-full">
<input
class="input w-full @error('sertifikat') border-danger bg-danger-light @enderror"
type="text" name="sertifikat" placeholder="Sertifikat" value="">
@error('sertifikat')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_tanah') border-danger bg-danger-light @enderror"
type="number" name="luas_tanah" placeholder="Luas tanah" value="">
<span class="input-unit right"></span>
@error('luas_tanah')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<input
class="left-group input w-full @error('luas_bangunan') border-danger bg-danger-light @enderror"
type="number" name="luas_bangunan" placeholder="Luas bangunan"
value="">
<span class="input-unit right"></span>
@error('luas_bangunan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
<div class="input-group w-full">
<span class="input-unit left">Rp</span>
<input
class="right-group input w-full pl-8 @error('pasar_wajar') border-danger bg-danger-light @enderror"
type="number" name="pasar_wajar" placeholder="Nilai pasar wajar"
value="">
@error('pasar_wajar')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Catatan perlu diperhatikan
</label>
<div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('catatan') border-danger bg-danger-light @enderror" rows="3" type="number"
id="catatan" name="catatan"></textarea>
@error('catatan')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<hr>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
DISCLAIMER
</label>
<div class="flex flex-wrap items-baseline w-full">
<ol>
<li>Laporan Resume ini dikeluarkan dikarenakan belum dilakukannya pembayaran biaya
penilaian jaminan</li>
<li>Laporan Resume ini tidak bisa dijadikan sebagai dasar pengajuan dan atau pencairan
kredit, laporan yang digunakan tetap wajib berupa Laporan Penilaian Jaminan (LPJ)
</li>
<li>Detail per meter tanah dan bangunan, sarana pelengkap dll akan tercatat di Laporan
Penilaian Jaminan (LPJ) nanti</li>
<li>Laporan Resume ini hanya digunakan untuk kepentingan internal bagi</li>
<li>Laporan resume ini hanya berlaku <span class="text-red-500">14 hari</span> kerja
terhitung dari tanggal resume ini dibuat sesuai aturan yang berlaku, apabila lewat
maka harus dilakukan order ulang sesuai prosedur yang berlaku</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali</li>
</ol>
</div>
</div>
<hr>
<label class="form-label">Salam,</label>
<div class="flex flex-wrap lg:flex-nowrap gap-4">
<div class="flex items-center w-full lg:w-1/2 gap-2.5">
<label class="form-label max-w-56 lg:w-32">
PENILAI
</label>
<label class="form-label max-w-56 lg:w-32">
SENIOR OFICER
</label>
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</form>
</div>
</div>
</div>
{{-- <form method="POST" action="">
<div class="card pb-2.5">
<input type="hidden" name="action" value="">
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Code
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
name="code" value="">
@error('code')
<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">
Name
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text"
name="name" value="">
@error('name')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form> --}}
</div>
@endsection

View File

@@ -3,9 +3,11 @@
use Diglactic\Breadcrumbs\Breadcrumbs;
use Diglactic\Breadcrumbs\Generator as BreadcrumbTrail;
Breadcrumbs::for('basicdata', function (BreadcrumbTrail $trail) {
$trail->push('Basic Data');
});
if (!Breadcrumbs::exists('basicdata')) {
Breadcrumbs::for('basicdata', function (BreadcrumbTrail $trail) {
$trail->push('Basic Data');
});
}
Breadcrumbs::for('basicdata.jenis-fasilitas-kredit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
@@ -113,36 +115,6 @@ Breadcrumbs::for('basicdata.jenis-dokumen.edit', function (BreadcrumbTrail $trai
});
Breadcrumbs::for('basicdata.currency', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Mata Uang', route('basicdata.currency.index'));
});
Breadcrumbs::for('basicdata.currency.create', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.currency');
$trail->push('Tambah Mata Uang', route('basicdata.currency.create'));
});
Breadcrumbs::for('basicdata.currency.edit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.currency');
$trail->push('Edit Mata Uang');
});
Breadcrumbs::for('basicdata.branch', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Cabang', route('basicdata.branch.index'));
});
Breadcrumbs::for('basicdata.branch.create', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.branch');
$trail->push('Tambah Cabang', route('basicdata.branch.create'));
});
Breadcrumbs::for('basicdata.branch.edit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.branch');
$trail->push('Edit Cabang');
});
Breadcrumbs::for('basicdata.nilai-plafond', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Nilai Plafond', route('basicdata.nilai-plafond.index'));
@@ -305,6 +277,12 @@ Breadcrumbs::for('permohonan.index', function (BreadcrumbTrail $trail) {
$trail->push('Permohonan', route('permohonan.index'));
});
Breadcrumbs::for('permohonan.show', function (BreadcrumbTrail $trail) {
$trail->parent('permohonan.index');
$trail->push('Show Permohonan');
});
Breadcrumbs::for('permohonan.create', function (BreadcrumbTrail $trail) {
$trail->parent('permohonan.index');
$trail->push('Tambah Permohonan', route('permohonan.create'));
@@ -416,6 +394,11 @@ Breadcrumbs::for('tender.penawaran.editPenawaran', function (BreadcrumbTrail $tr
$trail->push('Penawaran Ulang', route('tender.penawaran.editPenawaran', $noreg));
});
Breadcrumbs::for('tender.penawaran.showSuratTender', function (BreadcrumbTrail $trail, $noreg) {
$trail->parent('tender.penawaran');
$trail->push('Surat Tender', route('tender.penawaran.showSuratTender', $noreg));
});
Breadcrumbs::for('tender.penawaran.ulang', function (BreadcrumbTrail $trail) {
$trail->parent('tender');
@@ -543,3 +526,40 @@ Breadcrumbs::for('otorisator.pelaporan.index', function (BreadcrumbTrail $trail)
$trail->parent('otorisator');
$trail->push('Otorisator', route('otorisator.pelaporan.index'));
});
Breadcrumbs::for('laporan', function (BreadcrumbTrail $trail) {
$trail->push('Laporan', route('laporan.sederhana.index'));
});
Breadcrumbs::for('laporan.sederhana.index', function (BreadcrumbTrail $trail) {
$trail->parent('laporan');
$trail->push('Sederhana', route('laporan.sederhana.index'));
});
Breadcrumbs::for('laporan.standard.index', function (BreadcrumbTrail $trail) {
$trail->parent('laporan');
$trail->push('Standard', route('laporan.standard.index'));
});
Breadcrumbs::for('resume', function (BreadcrumbTrail $trail) {
$trail->push('Resume', route('resume.index'));
});
Breadcrumbs::for('resume.show', function (BreadcrumbTrail $trail) {
$trail->parent('resume');
$trail->push('Detail');
});
Breadcrumbs::for('penilai', function (BreadcrumbTrail $trail) {
$trail->push('Penilai', route('penilai.index'));
});
Breadcrumbs::for('penilai.show', function (BreadcrumbTrail $trail) {
$trail->parent('penilai');
$trail->push('Detail Penilai');
});
Breadcrumbs::for('sla', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('SLA', route('basicdata.sla.index'));
});

View File

@@ -1,34 +1,37 @@
<?php
use Illuminate\Support\Facades\Route;
use Modules\Lpj\Http\Controllers\ActivityController;
use Modules\Lpj\Http\Controllers\ArahMataAnginController;
use Modules\Lpj\Http\Controllers\BranchController;
use Modules\Lpj\Http\Controllers\CurrencyController;
use Modules\Lpj\Http\Controllers\DebitureController;
use Modules\Lpj\Http\Controllers\DokumenJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPemilikJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPenghuniJaminanController;
use Modules\Lpj\Http\Controllers\IjinUsahaController;
use Modules\Lpj\Http\Controllers\JenisDokumenController;
use Modules\Lpj\Http\Controllers\JenisFasilitasKreditController;
use Modules\Lpj\Http\Controllers\JenisJaminanController;
use Modules\Lpj\Http\Controllers\JenisLaporanController;
use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController;
use Modules\Lpj\Http\Controllers\JenisPenilaianController;
use Modules\Lpj\Http\Controllers\SLAController;
use Modules\Lpj\Http\Controllers\SpkController;
use Modules\Lpj\Http\Controllers\KJPPController;
use Modules\Lpj\Http\Controllers\NilaiPlafondController;
use Modules\Lpj\Http\Controllers\PemilikJaminanController;
use Modules\Lpj\Http\Controllers\TeamsController;
use Modules\Lpj\Http\Controllers\RegionController;
use Modules\Lpj\Http\Controllers\ResumeController;
use Modules\Lpj\Http\Controllers\TenderController;
use Modules\Lpj\Http\Controllers\LaporanController;
use Modules\Lpj\Http\Controllers\PenilaiController;
use Modules\Lpj\Http\Controllers\ActivityController;
use Modules\Lpj\Http\Controllers\DebitureController;
use Modules\Lpj\Http\Controllers\SurveyorController;
use Modules\Lpj\Http\Controllers\IjinUsahaController;
use Modules\Lpj\Http\Controllers\PenilaianController;
use Modules\Lpj\Http\Controllers\PermohonanController;
use Modules\Lpj\Http\Controllers\RegionController;
use Modules\Lpj\Http\Controllers\StatusPermohonanController;
use Modules\Lpj\Http\Controllers\TeamsController;
use Modules\Lpj\Http\Controllers\TenderController;
use Modules\Lpj\Http\Controllers\JenisDokumenController;
use Modules\Lpj\Http\Controllers\JenisJaminanController;
use Modules\Lpj\Http\Controllers\JenisLaporanController;
use Modules\Lpj\Http\Controllers\NilaiPlafondController;
use Modules\Lpj\Http\Controllers\ArahMataAnginController;
use Modules\Lpj\Http\Controllers\DokumenJaminanController;
use Modules\Lpj\Http\Controllers\JenisPenilaianController;
use Modules\Lpj\Http\Controllers\PemilikJaminanController;
use Modules\Lpj\Http\Controllers\TujuanPenilaianController;
use Modules\Lpj\Http\Controllers\StatusPermohonanController;
use Modules\Lpj\Http\Controllers\TujuanPenilaianKJPPController;
use Modules\Lpj\Http\Controllers\JenisFasilitasKreditController;
use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController;
// use Modules\Lpj\Http\Controllers\ActivityController;
use Modules\Lpj\Http\Controllers\SurveyorController;
use Modules\Lpj\Http\Controllers\HubunganPemilikJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPenghuniJaminanController;
/*
|--------------------------------------------------------------------------
@@ -92,29 +95,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('export', [JenisDokumenController::class, 'export'])->name('export');
});
Route::resource('jenis-dokumen', JenisDokumenController::class);
Route::name('currency.')->prefix('mata-uang')->group(function () {
Route::get('restore/{id}', [CurrencyController::class, 'restore'])->name('restore');
Route::get('datatables', [CurrencyController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [CurrencyController::class, 'export'])->name('export');
});
Route::name('branch.')->prefix('cabang')->group(function () {
Route::get('restore/{id}', [BranchController::class, 'restore'])->name('restore');
Route::get('datatables', [BranchController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [BranchController::class, 'export'])->name('export');
});
Route::resource('cabang', BranchController::class, [
'names' => [
'index' => 'branch.index',
'show' => 'branch.show',
'create' => 'branch.create',
'store' => 'branch.store',
'edit' => 'branch.edit',
'update' => 'branch.update',
'destroy' => 'branch.destroy',
],
]);
Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () {
Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore');
@@ -214,35 +195,6 @@ Route::middleware(['auth'])->group(function () {
],
]);
Route::resource('mata-uang', CurrencyController::class, [
'names' => [
'index' => 'currency.index',
'show' => 'currency.show',
'create' => 'currency.create',
'store' => 'currency.store',
'edit' => 'currency.edit',
'update' => 'currency.update',
'destroy' => 'currency.destroy',
],
]);
Route::name('branch.')->prefix('cabang')->group(function () {
Route::get('restore/{id}', [BranchController::class, 'restore'])->name('restore');
Route::get('datatables', [BranchController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [BranchController::class, 'export'])->name('export');
});
Route::resource('cabang', BranchController::class, [
'names' => [
'index' => 'branch.index',
'show' => 'branch.show',
'create' => 'branch.create',
'store' => 'branch.store',
'edit' => 'branch.edit',
'update' => 'branch.update',
'destroy' => 'branch.destroy',
],
]);
Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () {
Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore');
@@ -319,6 +271,12 @@ Route::middleware(['auth'])->group(function () {
Route::put('updateData/{type}/{id}', [SurveyorController::class, 'updateData'])->name('updateData');
Route::delete('deleteData/{id}/{type}', [SurveyorController::class, 'destroy'])->name('deleteData');
// Start Activity SLA route
Route::name('sla.')->prefix('sla')->group(function () {
Route::get('/', [SLAController::class, 'index'])->name('index');
});
// End Activity SLA route
$headers = [
'bentuk-tanah' => 'Bentuk Tanah',
'kontur-tanah' => 'Kontur Tanah',
@@ -348,6 +306,7 @@ Route::middleware(['auth'])->group(function () {
Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () {
Route::get('download', [DokumenJaminanController::class, 'download'])->name('download');
Route::get('bulk-download', [DokumenJaminanController::class, 'bulkDownload'])->name('bulk.download');
Route::get('/', [DokumenJaminanController::class, 'index'])->name('index');
Route::get('create', [DokumenJaminanController::class, 'create'])->name('create');
Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit');
@@ -368,11 +327,24 @@ Route::middleware(['auth'])->group(function () {
Route::resource('debitur', DebitureController::class);
Route::name('laporan.')->prefix('laporan')->group(function () {
Route::get('sederhana', [LaporanController::class, 'sederhana_index'])->name('sederhana.index');
Route::get('standard', [LaporanController::class, 'standard_index'])->name('standard.index');
});
Route::name('resume.')->prefix('resume')->group(function () {
Route::get('/', [ResumeController::class, 'index'])->name('index');
Route::get('{id}/show', [ResumeController::class, 'show'])->name('show');
Route::post('store', [ResumeController::class, 'store'])->name('store');
Route::get('datatables', [ResumeController::class, 'dataForDatatables'])->name('datatables');
});
Route::name('permohonan.')->prefix('permohonan')->group(function () {
Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur');
Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore');
Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [PermohonanController::class, 'export'])->name('export');
Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print');
});
Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index');
@@ -412,6 +384,9 @@ Route::middleware(['auth'])->group(function () {
Route::get('penawaran/datatables', [TenderController::class, 'datatablesPenawaran'])->name(
'penawaran.datatables',
);
Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name(
'penawaran.showSuratTender'
);
// Penawaran Ulang
Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name(
@@ -487,6 +462,12 @@ Route::middleware(['auth'])->group(function () {
Route::get('data-pembanding/{id}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
Route::put('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
});
Route::name('penilai.')->prefix('penilai')->group(function () {
Route::get('/', [PenilaiController::class, 'index'])->name('index');
Route::get('/{id}/show', [PenilaiController::class, 'show'])->name('show');
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
});
});
require __DIR__ . '/registrasi.php';