Merge remote-tracking branch 'origin/feature/senior-officer' into surveyor

This commit is contained in:
majid
2025-02-06 14:53:05 +07:00
79 changed files with 4078 additions and 1450 deletions

View File

@@ -0,0 +1,63 @@
<?php
namespace Modules\Lpj\Emails;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendJadwalKunjunganEmail extends Mailable
{
/**
* ID Penilaian.
*
* @var string
*/
public $id;
/**
* Waktu Penilaian.
*
* @var string
*/
public $waktu_penilaian;
/**
* Deskripsi Penilaian.
*
* @var string
*/
public $deskripsi_penilaian;
/**
* Create a new message instance.
*
* @param array $emailData
* @return void
*/
public function __construct(array $emailData)
{
// Validasi data yang diterima
if (!isset($emailData['emailData']['id']) ||
!isset($emailData['emailData']['waktu_penilaian']) ||
!isset($emailData['emailData']['deskripsi_penilaian'])) {
throw new \InvalidArgumentException("Data email tidak lengkap.");
}
$this->id = $emailData['emailData']['id'];
$this->waktu_penilaian = $emailData['emailData']['waktu_penilaian'];
$this->deskripsi_penilaian = $emailData['emailData']['deskripsi_penilaian'];
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Jadwal Kunjungan Penilaian Resmi')
->view('lpj::emails.jadwal-kunjungan');
}
}

View File

@@ -19,11 +19,12 @@ class SendPenawaranKJPPEmail extends Mailable
public $districts;
public $cities;
public $provinces;
public $user; // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc
/**
* Create a new message instance.
*/
public function __construct($dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces)
public function __construct($dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces, $user)
{
// Assign data yang diterima ke properti
$this->dp1 = $dp1;
@@ -33,6 +34,7 @@ class SendPenawaranKJPPEmail extends Mailable
$this->districts = $districts;
$this->cities = $cities;
$this->provinces = $provinces;
$this->user = $user; // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc
}
/**
@@ -50,6 +52,7 @@ class SendPenawaranKJPPEmail extends Mailable
'districts' => $this->districts,
'cities' => $this->cities,
'provinces' => $this->provinces,
'user' => $this->user // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc
]);
}
}

View File

@@ -0,0 +1,49 @@
<?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\CustomField;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class CustomFieldExport implements WithColumnFormatting, WithHeadings, FromCollection, WithMapping
{
public function collection()
{
return CustomField::all();
}
public function map($row): array
{
return [
$row->id,
$row->name,
$row->type,
$row->created_at,
$row->updated_at,
];
}
public function headings(): array
{
return [
'ID',
'Name',
'Type',
'Created At',
'Updated At',
];
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'D' => NumberFormat::FORMAT_DATE_DDMMYYYY,
'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
];
}
}

View File

@@ -2,7 +2,8 @@
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\HolidayCalendar;
use Modules\Lpj\Models\CustomField;
use Modules\Lpj\Models\HolidayCalendar;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\Penilaian;
@@ -359,3 +360,16 @@ function getNomorLaporan($permohonanId, $documentId){
])->first();
return $laporan->nomor_laporan ?? null;
}
function getCustomField($param){
if(is_numeric($param)){
$field = CustomField::find($param);
} else {
$field = CustomField::where(['name' => $param])->first();
}
if($field){
return $field;
} else {
return null;
}
}

View File

@@ -244,6 +244,15 @@ class ActivityController extends Controller
// abort(403, 'Sorry! You are not allowed to view users.');
}
$userRole = $user->roles->pluck('name')->first();
$regionId = null;
// If user is senior-officer, get their regionId
if ($userRole === 'senior-officer') {
$userTeam = TeamsUsers::with('team')->firstWhere('user_id', $user->id);
$regionId = $userTeam?->team->regions_id;
}
// Retrieve data from the database
$query = Permohonan::query();
@@ -289,22 +298,39 @@ class ActivityController extends Controller
// Get filtered count
$filteredRecords = $query->count();
// Get data
$data = null;
$userRole = $user->roles[0]->name ?? null;
if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) {
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian'])
->whereHas('penilaian.userPenilai', function ($q) use ($user) {
$q->where('user_id', $user->id);
})
->get();
} else {
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])
->get();
// Filter by region if user is senior-officer
if ($regionId) {
$query->whereHas('region', function ($q) use ($regionId) {
$q->where('region_id', $regionId);
});
}
// Filter for specific roles
if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) {
$query->whereHas('penilaian.userPenilai', function ($q) use ($user) {
$q->where('user_id', $user->id);
});
}
$totalRecords = $query->count();
// Pagination
if ($request->has('page') && $request->has('size')) {
$page = (int) $request->get('page', 1);
$size = (int) $request->get('size', 10);
$offset = ($page - 1) * $size;
$query->skip($offset)->take($size);
}
// Get filtered count
$filteredRecords = $query->count();
// Get data with necessary relationships
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan'])->get();
// Calculate total pages
$pageCount = ceil($totalRecords / $request->get('size', 10));

View File

@@ -0,0 +1,153 @@
<?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\CustomFieldExport;
use Modules\Lpj\Http\Requests\CustomFieldRequest;
use Modules\Lpj\Models\CustomField;
class CustomFieldController extends Controller
{
public $user;
public function index()
{
return view('lpj::custom_fields.index');
}
public function store(CustomFieldRequest $request)
{
$validate = $request->validated();
if ($validate) {
try {
// Save to database
CustomField::create($validate);
return redirect()
->route('basicdata.custom-field.index')
->with('success', 'Custom Field created successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.custom-field.create')
->with('error', $e->getMessage());
}
}
}
public function create()
{
$urutan_prioritas = CustomField::max('urutan_prioritas')+1;
return view('lpj::custom_fields.create', compact('urutan_prioritas'));
}
public function edit($id)
{
$customField = CustomField::find($id);
$urutan_prioritas = $customField->urutan_prioritas ?? CustomField::max('urutan_prioritas')+1;
return view('lpj::custom_fields.create', compact('customField', 'urutan_prioritas' ));
}
public function update(CustomFieldRequest $request, $id)
{
$validate = $request->validated();
if ($validate) {
try {
// Update in database
$customField = CustomField::find($id);
$customField->update($validate);
return redirect()
->route('basicdata.custom-field.index')
->with('success', 'Custom Field updated successfully');
} catch (Exception $e) {
return redirect()
->route('basicdata.custom-field.edit', $id)
->with('error', 'Failed to update custom field');
}
}
}
public function destroy($id)
{
try {
// Delete from database
$customField = CustomField::find($id);
$customField->delete();
echo json_encode(['success' => true, 'message' => 'Custom Field deleted successfully']);
} catch (Exception $e) {
echo json_encode(['success' => false, 'message' => 'Failed to delete custom field']);
}
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('custom_fields.view')) {
//abort(403, 'Sorry! You are not allowed to view custom fields.');
}
// Retrieve data from the database
$query = CustomField::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('name', 'LIKE', "%$search%");
$q->orWhere('label', 'LIKE', "%$search%");
$q->orWhere('type', '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 CustomFieldExport, 'custom_fields.xlsx');
}
}

View File

@@ -14,6 +14,7 @@
use Modules\Location\Models\Province;
use Modules\Location\Models\Village;
use Modules\Lpj\Http\Requests\DokumenJaminanRequest;
use Modules\Lpj\Models\CustomField;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DetailDokumenJaminan;
use Modules\Lpj\Models\DokumenJaminan;
@@ -88,7 +89,7 @@
'jenis_legalitas_jaminan_id' => $value,
'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key],
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : ''
];
$dokumenJaminan = [];
@@ -247,7 +248,7 @@
'jenis_legalitas_jaminan_id' => $value,
'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key],
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : ''
];
$dokumenJaminan = [];
@@ -496,6 +497,12 @@
foreach ($document->detail as $detail) {
// Only include existing legalitas if its id is in the new set
if (in_array($detail->jenis_legalitas_jaminan_id, $newLegalitasIds)) {
$customFields = [];
if($detail->jenisLegalitasJaminan->custom_fields) {
$customFields = CustomField::whereIn('id', $detail->jenisLegalitasJaminan->custom_fields)
->get();
}
$existingLegalitas[] = [
'id' => $detail->id,
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
@@ -507,6 +514,7 @@
$detail->dokumen_nomor,
) ?? $detail->dokumen_nomor,
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
'custom_fields' => $customFields,
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
'details' => $detail->details,
'keterangan' => $detail->keterangan,
@@ -519,6 +527,11 @@
foreach ($newLegalitasJaminan as $legalitas) {
if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) {
$customFields = [];
if($legalitas->custom_fields) {
$customFields = CustomField::whereIn('id', $legalitas->custom_fields)->get();
}
$newLegalitas[] = [
'id' => null,
'jenis_legalitas_jaminan_id' => $legalitas->id,
@@ -527,6 +540,7 @@
'dokumen_nomor' => null,
'custom_field' => $legalitas->custom_field,
'custom_field_type' => $legalitas->custom_field_type,
'custom_fields' => $customFields,
'details' => null,
'keterangan' => null,
'is_existing' => false,

View File

@@ -8,6 +8,7 @@
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\JenisLegalitasJaminanExport;
use Modules\Lpj\Http\Requests\JenisLegalitasJaminanRequest;
use Modules\Lpj\Models\CustomField;
use Modules\Lpj\Models\JenisLegalitasJaminan;
class JenisLegalitasJaminanController extends Controller
@@ -40,13 +41,15 @@
public function create()
{
return view('lpj::jenis_legalitas_jaminan.create');
$customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get();
return view('lpj::jenis_legalitas_jaminan.create',compact('customFields'));
}
public function edit($id)
{
$jenisLegalitasJaminan = JenisLegalitasJaminan::find($id);
return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan'));
$customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get();
return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan', 'customFields'));
}
public function update(JenisLegalitasJaminanRequest $request, $id)

View File

@@ -226,7 +226,7 @@ class PenilaiController extends Controller
}
}
return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta', 'provinces', 'basicData', 'memo', 'cities', 'districts', 'villages', 'noLpmemo'));
return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta', 'provinces', 'basicData', 'memo', 'cities', 'districts', 'villages', 'nomorLaporan'));
}
@@ -248,7 +248,7 @@ class PenilaiController extends Controller
public function edit($id)
{
$permohonan = Permohonan::with('debiture')->find($id);
return view('lpj::penilai.edit',compact('permohonan'));
return view('lpj::penilai.edit', compact('permohonan'));
}
@@ -272,7 +272,7 @@ class PenilaiController extends Controller
]
);
if($request->hasFile('file_paparan')) {
if ($request->hasFile('file_paparan')) {
$file = $request->file('file_paparan');
$path = $file->store('public/file_paparan');
@@ -282,10 +282,10 @@ class PenilaiController extends Controller
}
return redirect()
->route('penilai.show',['id'=>$id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.');
->route('penilai.show', ['id' => $id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.');
} catch (\Exception $e) {
return redirect()->route('penilai.show',['id'=>$id])->with('error', 'Terjadi kesalahan saat memproses permohonan.');
return redirect()->route('penilai.show', ['id' => $id])->with('error', 'Terjadi kesalahan saat memproses permohonan.');
}
}
@@ -379,12 +379,92 @@ class PenilaiController extends Controller
}
}
return view('lpj::penilai.components.rap-penilai', compact('permohonan', 'rap', 'provinces', 'cities',
return view('lpj::penilai.components.rap-penilai', compact(
'permohonan',
'rap',
'provinces',
'cities',
'districts',
'villages','forminspeksi', 'noLpRAP', 'basicData','cekAlamat'));
'villages',
'forminspeksi',
'nomorLaporan',
'basicData',
'cekAlamat'
));
}
public function call_report(Request $request)
{
$permohonanId = $request->query('permohonanId');
$documentId = $request->query('documentId');
$inspeksiId = $request->query('inspeksiId');
$jaminanId = $request->query('jaminanId');
$provinces = Province::all();
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
// $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'rap');
// $basicData = $this->surveyorController->getCommonData();
// $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
// Penilai::updateOrCreate(
// [
// 'permohonan_id' => $permohonanId,
// 'dokument_id' => $documentId,
// 'inspeksi_id' => $inspeksiId,
// ],
// [
// 'type_penilai' => 'call-report',
// ]
// );
// $resume = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
// $lpjData = null;
// $rap = null;
// $forminspeksi = null;
// if ($resume) {
// $forminspeksi = json_decode($inspeksi->data_form, true);
// $rap = json_decode($resume->rap, true);
// }
// Default: gunakan data dari debitur
// $debitur = Debiture::find($permohonan->debiture_id);
// $provinceCode = $debitur->province_code;
// $cityCode = $debitur->city_code;
// $districtCode = $debitur->district_code;
// $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null;
// if ($cekAlamat) {
// $provinceCode = $cekAlamat['province_code'] ?? $provinceCode;
// $cityCode = $cekAlamat['city_code'] ?? $cityCode;
// $districtCode = $cekAlamat['district_code'] ?? $districtCode;
// }
// $cities = City::where('province_code', $provinceCode)->get();
// $districts = District::where('city_code', $cityCode)->get();
// $villages = Village::where('district_code', $districtCode)->get();
// if ($forminspeksi) {
// if (isset($forminspeksi['alamat']['sesuai']['province_code'])) {
// $cities = City::where('province_code', $forminspeksi['alamat']['sesuai']['province_code'])->get();
// }
// if (isset($forminspeksi['alamat']['sesuai']['city_code'])) {
// $districts = District::where('city_code', $forminspeksi['alamat']['sesuai']['city_code'])->get();
// }
// if (isset($forminspeksi['alamat']['sesuai']['district_code'])) {
// $villages = Village::where('district_code', $forminspeksi['alamat']['sesuai']['district_code'])->get();
// }
// }
// return view('lpj::penilai.components.call-report', compact('permohonan', 'rap', 'provinces', 'cities',
// 'districts',
// 'villages','forminspeksi', 'noLpRAP', 'basicData','cekAlamat'));
return view('lpj::penilai.components.call-report', compact('permohonan'));
}
/**
* Remove the specified resource from storage.
*/
@@ -981,8 +1061,12 @@ class PenilaiController extends Controller
'rap'
));
// return $pdf;
$cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan);
$pdf->setPaper('A4', 'portrait');
return $pdf->stream();
return response($pdf->output(), 200)
->header('Content-Type', 'application/pdf')
->header('Content-Disposition', 'inline; filename="Laporan_' . $tipeLaporan . '_' .$permohonan->debiture->name . '_' . $cleanNomorLaporan .'.pdf"');
// return $pdf->stream();
} else {
// $pdf = view('lpj::' . $viewLaporan, compact(
$pdf = PDF::loadView('lpj::' . $viewLaporan, compact(
@@ -1022,7 +1106,8 @@ class PenilaiController extends Controller
'standard' => 'penilai.components.print-out-standard',
'resume' => 'penilai.components.print-resume',
'memo' => 'penilai.components.print-memo',
'rap' => 'penilai.components.print-out-rap'
'rap' => 'penilai.components.print-out-rap',
'call-report' => 'penilai.components.print-out-call-report'
];
return $viewMap[$tipe] ?? 'penilai.components.print-resume';
}

View File

@@ -680,6 +680,7 @@ class PenilaianController extends Controller
'penilaian.userPenilai' => function ($q) {
$q->where('role', 'penilai')->with(['user', 'team.regions'])->first();
},
'penilai',
'approveSo',
'approveEo',
'approveDd',
@@ -833,7 +834,7 @@ class PenilaianController extends Controller
}
}
public function revisiLaporan($id, Request $request)
public function revisiLaporan(Request $request,$id)
{
$permohonan = Permohonan::findOrFail($id);
$permohonan->update([

View File

@@ -14,6 +14,8 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Response;
use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\Permohonan;
@@ -77,16 +79,15 @@ use Modules\Lpj\Models\LaluLintasLokasi;
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
use Modules\Lpj\Http\Requests\SurveyorRequest;
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
use Modules\Lpj\Emails\SendEmail;
use Illuminate\Support\Facades\Mail;
use Modules\Lpj\Emails\SendJadwalKunjunganEmail;
class SurveyorController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
return view('lpj::surveyor.index');
@@ -831,8 +832,6 @@ private function isValidFormat($data)
}
public function checkButtonStatus($id)
{
try {
@@ -901,24 +900,24 @@ private function isValidFormat($data)
'deskripsi_penilaian' => 'required'
]);
// $user = ['user' => 'rustammajid76@gmail.com'];
$penilaian = Penilaian::findOrFail($validate['id']);
// $emailData = [
// 'email' => 'rustammajid76@gmail.com',
// 'subject' => 'Test',
// 'emailData' => '<h2>Hello, World!</h2><h2>This is the email content. Waktu Penilaian:</h2>'
// ];
$emailData = [
'email' => $penilaian->permohonan->user->email,
'subject' => 'Jadwal Kunjungan',
'emailData' => $validate,
// $this->sendMessage($emailData, $user);
];
$id = $request->input('id');
$penilaian = Penilaian::findOrFail($id);
Mail::to($emailData['email'])->send(new SendJadwalKunjunganEmail($emailData, $penilaian->permohonan->nomor_resitrasi, $penilaian->permohonan->debiture));
if ($validate['waktu_penilaian'] <= $penilaian->tanggal_kunjungan) {
if (Carbon::parse($validate['waktu_penilaian']) <= Carbon::parse($penilaian->tanggal_kunjungan)) {
return redirect()
->route('surveyor.index')
->with('error', 'Waktu penilaian harus lebih besar dari tanggal assign.');
}
$penilaian->update([
'waktu_penilaian' => $validate['waktu_penilaian'],
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
@@ -1940,7 +1939,7 @@ private function isValidFormat($data)
private function updateJenisAsset($permohonan, $request)
{
$jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id;
$jenis_jaminan_id = $permohonan->documents->first()->jenis_jaminan_id;
DokumenJaminan::where('permohonan_id', $permohonan->id)
->where('jenis_jaminan_id', $jenis_jaminan_id)
->update([
@@ -1950,7 +1949,7 @@ private function isValidFormat($data)
private function updateDetails($permohonan, $key, $newValue)
{
$document = $permohonan->debiture->documents->first();
$document = $permohonan->documents->first();
if (!$document) {
throw new \Exception("Document not found");
@@ -1964,18 +1963,18 @@ private function isValidFormat($data)
$datas = json_decode($detailsUpdate->details, true) ?? [];
if (is_numeric($newValue)) {
$newValue = [$key => $newValue];
if (!is_scalar($newValue)) {
throw new \InvalidArgumentException("New value must be a scalar (string/number)");
}
if (!is_array($newValue)) {
throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string");
}
foreach ($newValue as $subKey => $value) {
$datas[$subKey] = $value; // Update atau tambahkan key baru
// Update nilai berdasarkan kunci
if (array_key_exists($key, $datas)) {
$datas[$key] = $newValue;
} else {
throw new \Exception("Key '{$key}' not found in details");
}
// Simpan kembali ke database
$detailsUpdate->update([
'details' => json_encode($datas),
]);
@@ -2341,26 +2340,48 @@ private function isValidFormat($data)
$data['hub_cadeb_penghuni'] => ($data['hub_cadeb_penghuni'] == 'sesuai') ? $data['hub_cadeb_penghuni_sesuai'] : $data['hub_penghuni_tidak_sesuai']
],
'pihak_bank' => $data['pihak_bank'] ?? null,
'nomor_nib' => $data['nomor_nib'] ?? null,
'kordinat_lng' => $data['kordinat_lng'] ?? null,
'kordinat_lat' => $data['kordinat_lat'] ?? null,
]
];
}
private function updateFormData(array &$dataForm, array $data, $inspeksi, string $section, string $key, string $sesuaiKey, string $tidakSesuaiKey): void
{
if (isset($dataForm[$section][$key])) {
$dataForm[$section][$key] = []; // Reset data
if ($data[$key] == 'sesuai') {
$dataForm[$section][$key]['sesuai'] = $data[$sesuaiKey] ?? null;
} elseif ($data[$key] == 'tidak sesuai') {
$dataForm[$section][$key]['tidak sesuai'] = $data[$tidakSesuaiKey] ?? null;
}
if ($inspeksi) {
$inspeksi->data_form = json_encode($dataForm);
$inspeksi->save();
}
} else {
$data[$key] = $this->getFieldData($data, $key, true);
}
}
private function getTanahData(array $data): array
{
$inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first();
// Decode data_form dari inspeksi
$dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : [];
$this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'luas_tanah', 'luas_tanah_sesuai', 'luas_tanah_tidak_sesuai');
$this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'hadap_mata_angin', 'hadap_mata_angin_sesuai', 'hadap_mata_angin_tidak_sesuai');
// dd($dataForm);
return [
'tanah' => [
'luas_tanah' => $this->getFieldData(
$data,
'luas_tanah',
true
),
'hadap_mata_angin' => [
$data['hadap_mata_angin'] => $data['hadap_mata_angin'] == 'sesuai' ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'] ?? null
],
'luas_tanah' => $dataForm['tanah']['luas_tanah'] ?? $data['luas_tanah'],
'hadap_mata_angin' => $dataForm['tanah']['hadap_mata_angin'] ?? $data['hadap_mata_angin'],
'bentuk_tanah' => $this->getFieldData(
$data,
'bentuk_tanah',
@@ -2433,14 +2454,16 @@ private function isValidFormat($data)
}
}
$inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first();
// Decode data_form dari inspeksi
$dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : [];
$this->updateFormData($dataForm, $data, $inspeksi, 'bangunan', 'luas_tanah_bagunan', 'luas_tanah_bagunan_sesuai', 'luas_tanah_bagunan_tidak_sesuai');
return [
'bangunan' => [
'luas_tanah_bagunan' => $this->getFieldData(
$data,
'luas_tanah_bagunan',
true
),
'luas_tanah_bagunan' => $dataForm['bangunan']['luas_tanah_bagunan'] ?? $data['luas_tanah_bagunan'],
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
@@ -3115,6 +3138,7 @@ private function isValidFormat($data)
private function getUnitData($data, $request): array
{
return [
'action' => $data['action'] ?? null,
'luas_unit' => $this->getFieldData(
@@ -3196,26 +3220,32 @@ private function isValidFormat($data)
bool $checkKesesuaian = false,
?string $extraField = null
): array {
$result = [];
if ($checkKesesuaian) {
return [
$data[$fieldName] ?? '' => ($data[$fieldName] ?? '') === 'sesuai'
? ($data["{$fieldName}_sesuai"] ?? '')
: ($data["{$fieldName}_tidak_sesuai"] ?? '')
];
$isSesuai = ($data[$fieldName] ?? '') === 'sesuai';
$fieldKey = $isSesuai ? "{$fieldName}_sesuai" : "{$fieldName}_tidak_sesuai";
// Hanya simpan key yang dipilih
if ($isSesuai) {
$result['sesuai'] = $data[$fieldKey] ?? null;
} else {
$result['tidak sesuai'] = $data[$fieldKey] ?? null;
}
} else {
$result[$fieldName] = $data[$fieldName] ?? null;
if ($extraField) {
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
}
}
$result = [
$fieldName => $data[$fieldName] ?? null
];
if ($extraField) {
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
}
return $result;
// Hapus key dengan nilai null untuk memastikan hanya key yang valid yang disimpan
return array_filter($result, fn ($value) => $value !== null);
}
public function export(string $type)
{
$modelClass = $this->getModelClass($type);
@@ -3256,10 +3286,11 @@ private function isValidFormat($data)
->first();
if (!$inspeksi) {
return response()->json([
'success' => false,
'message' => 'Data inspeksi tidak ditemukan'
], 404);
$inspeksi = new Inspeksi();
$inspeksi->permohonan_id = $request->input('permohonan_id');
$inspeksi->dokument_id = $request->input('document_id');
$inspeksi->data_form = json_encode([]); // Inisialisasi data_form kosong
$inspeksi->save();
}
// Decode data form yang ada
@@ -3416,36 +3447,43 @@ private function isValidFormat($data)
public function print_out_inspeksi($permohonan_id, $dokument_id, $jenis_jaminan_id)
{
$permohonan = $this->getPermohonanJaminanId(
$permohonan_id,
$dokument_id,
$jenis_jaminan_id
);
// Ambil data permohonan dan data umum
$permohonan = $this->getPermohonanJaminanId($permohonan_id, $dokument_id, $jenis_jaminan_id);
$basicData = $this->getCommonData();
// Ambil data inspeksi
$inspeksi = Inspeksi::where('permohonan_id', $permohonan_id)
->where('dokument_id', $dokument_id)
->first();
$forminspeksi = null;
if ($inspeksi) {
$forminspeksi = json_decode($inspeksi->data_form, true);
if (!$inspeksi) {
// Redirect jika inspeksi tidak ditemukan
return redirect()->back()->with('error', 'Data inspeksi tidak ditemukan.');
}
// Cek jika forminspeksi kosong
// Decode data form inspeksi
$forminspeksi = json_decode($inspeksi->data_form, true);
if (!$forminspeksi) {
// Redirect kembali dengan pesan error
return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi');
// Redirect jika data form inspeksi kosong
return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi.');
}
// Pilih template PDF berdasarkan nama inspeksi
$templateView = strtolower($inspeksi->name) === 'rap'
? 'lpj::surveyor.components.print-out.main'
: 'lpj::surveyor.components.print-out.main';
$pdf = PDF::loadView('lpj::surveyor.components.print-out.main', compact(
'permohonan',
'basicData',
'forminspeksi',
));
// Generate PDF
$pdf = PDF::loadView($templateView, compact('permohonan', 'basicData', 'forminspeksi'));
$pdf->setPaper('A4', 'portrait');
return $pdf->download('Laporan_data.pdf');
// Tentukan nama file PDF
$namaDebiture = $permohonan->debiture->name . '-' . $permohonan->nomor_registrasi;
$fileName = 'inspeksi-' . $namaDebiture . '-data.pdf';
return $pdf->download($fileName);
}
}

View File

@@ -293,12 +293,12 @@ class TenderController extends Controller
}
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
if ($permohonan->debiture->documents->isEmpty()) {
if ($permohonan->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -338,12 +338,12 @@ class TenderController extends Controller
}
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
if ($permohonan->debiture->documents->isEmpty()) {
if ($permohonan->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -535,7 +535,7 @@ class TenderController extends Controller
return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!');
}
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -563,7 +563,7 @@ class TenderController extends Controller
return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!');
}
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -602,7 +602,7 @@ class TenderController extends Controller
return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!');
}
if ($permohonan->debiture->documents->isEmpty()) {
if ($permohonan->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
@@ -679,11 +679,18 @@ class TenderController extends Controller
return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!');
}
if ($permohonan->debiture->documents->isEmpty()) {
if ($permohonan->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->get();
foreach ($detail_penawaran as $detail) {
$this->kirimEmailKJPP($noreg,$detail->kjpp_rekanan_id);
}
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)
->where('status', '=', 1)
->pluck('kjpp_rekanan_id')
@@ -713,7 +720,7 @@ class TenderController extends Controller
];
});
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -724,6 +731,7 @@ class TenderController extends Controller
$districts = District::where('code', $district_permohonan)->get();
$cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get();
$user = auth::user();
$subject = 'Send Penawaran Email';
@@ -734,7 +742,8 @@ class TenderController extends Controller
'villages' => $villages,
'districts' => $districts,
'cities' => $cities,
'provinces' => $provinces
'provinces' => $provinces,
'user' => $user,
])->render();
// Dispatch job untuk mengirim email
@@ -745,7 +754,8 @@ class TenderController extends Controller
$villages,
$districts,
$cities,
$provinces
$provinces,
$user
);
try {
@@ -877,7 +887,7 @@ class TenderController extends Controller
return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!');
}
if ($permohonan->debiture->documents->isEmpty()) {
if ($permohonan->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
@@ -907,7 +917,7 @@ class TenderController extends Controller
$dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first();
foreach ($permohonan->debiture->documents as $document) {
foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
@@ -918,6 +928,7 @@ class TenderController extends Controller
$districts = District::where('code', $district_permohonan)->get();
$cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get();
$user = auth()->user();
$subject = 'Send Penawaran K J P P Email';
@@ -929,7 +940,8 @@ class TenderController extends Controller
'villages' => $villages,
'districts' => $districts,
'cities' => $cities,
'provinces' => $provinces
'provinces' => $provinces,
'user' => $user,
])->render();
SendPenawaranKJPPTenderJob::dispatch(
@@ -940,7 +952,8 @@ class TenderController extends Controller
$villages,
$districts,
$cities,
$provinces
$provinces,
$user
);
try {

View File

@@ -0,0 +1,58 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Modules\Lpj\Models\CustomField;
use Illuminate\Validation\Rule;
class CustomFieldRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required|max:255',
'type' => 'required|in:text,select,radio,checkbox',
'label' => 'nullable|max:255',
'urutan_prioritas' => [
'nullable',
'integer',
Rule::unique('custom_fields')->ignore($this->route('custom_field')),
],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
public function prepareValidationData($data){
if(!$this->type){
$this->merge(['type' => 'text']);
}
if (!$this->urutan_prioritas) {
$maxPrioritas = CustomField::max('urutan_prioritas') ?? 0;
$this->merge(['urutan_prioritas' => $maxPrioritas + 1]);
}
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'urutan_prioritas.unique' => 'Urutan prioritas sudah digunakan. Silakan pilih nomor lain.',
];
}
}

View File

@@ -570,7 +570,6 @@ class FormSurveyorRequest extends FormRequest
'dokument_id' => 'required',
'type' => 'required',
'nomor_registrasi' => 'required',
'nomor_nib' => 'nullable',
'debitur_perwakilan' => 'required|array',
'jenis_asset_name' => 'nullable|',
'jenis_asset' => 'required',

View File

@@ -20,6 +20,8 @@
'slug' => 'required|max:255',
'custom_field' => 'nullable|max:255',
'custom_field_type' => 'nullable|max:255',
'custom_fields' => 'nullable|array',
'custom_fields.*' => 'required|string|max:255',
];
}
@@ -46,5 +48,10 @@
'slug' => Str::slug($this->name),
]);
}
// Ensure custom_fields is always an array
if (!is_array($this->custom_fields)) {
$this->merge(['custom_fields' => []]);
}
}
}

View File

@@ -22,11 +22,12 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
protected $districts;
protected $cities;
protected $provinces;
protected $user;
/**
* Create a new job instance.
*/
public function __construct($kjpps, $dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces)
public function __construct($kjpps, $dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces, $user)
{
$this->kjpps = $kjpps;
$this->dp1 = $dp1; // Simpan keseluruhan array dp1, bukan dp1[0]
@@ -36,6 +37,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
$this->districts = $districts;
$this->cities = $cities;
$this->provinces = $provinces;
$this->user = $user;
}
/**
@@ -50,7 +52,8 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
$this->villages,
$this->districts,
$this->cities,
$this->provinces
$this->provinces,
$this->user // Kirim user ke email sebagai cc dan bcc
);
$email->with([
@@ -61,6 +64,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
'districts' => $this->districts,
'cities' => $this->cities,
'provinces' => $this->provinces,
'user' => $this->user // Kirim user ke email sebagai cc dan bcc
]);
$send = Mail::to($this->kjpps)->send($email);

View File

@@ -21,11 +21,12 @@ class SendPenawaranTenderJob implements ShouldQueue
protected $districts;
protected $cities;
protected $provinces;
protected $user; // Tidak perlu array [0] lagi
/**
* Create a new job instance.
*/
public function __construct($kjpps, $penawaran, $permohonan, $villages, $districts, $cities, $provinces)
public function __construct($kjpps, $penawaran, $permohonan, $villages, $districts, $cities, $provinces,$user)
{
$this->kjpps = $kjpps;
$this->penawaran = $penawaran;
@@ -34,6 +35,7 @@ class SendPenawaranTenderJob implements ShouldQueue
$this->districts = $districts;
$this->cities = $cities;
$this->provinces = $provinces;
$this->user = $user; // Simpan user yang dikirim email ke properti
}
/**
@@ -49,6 +51,7 @@ class SendPenawaranTenderJob implements ShouldQueue
'districts' => $this->districts,
'cities' => $this->cities,
'provinces' => $this->provinces,
'user' => $this->user // Kirim user ke email ke properti sebagai additional data
]);
Mail::to($this->kjpps)->send($email);

View File

@@ -0,0 +1,26 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\CustomFieldFactory;
class CustomField extends Base
{
/**
* The attributes that are mass assignable.
*/
protected $fillable = [
'name',
'type',
'urutan_prioritas',
'label'
];
// protected static function newFactory(): CustomFieldFactory
// {
// // return CustomFieldFactory::new();
// }
}

View File

@@ -7,5 +7,14 @@
class JenisLegalitasJaminan extends Base
{
protected $table = 'jenis_legalitas_jaminan';
protected $fillable = ['code', 'name','slug','custom_field','custom_field_type'];
protected $fillable = ['code', 'name','slug','custom_field','custom_field_type','custom_fields'];
protected $casts = [
'custom_fields' => 'array',
];
public function customFields()
{
return $this->hasMany(CustomField::class);
}
}

View File

@@ -0,0 +1,34 @@
<?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('custom_fields', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('type');
$table->timestamps();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('custom_fields');
}
};

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('custom_fields', function (Blueprint $table) {
$table->integer('urutan_prioritas')->nullable()->after('type');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('custom_fields', function (Blueprint $table) {
$table->dropColumn('urutan_prioritas');
});
}
};

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('custom_fields', function (Blueprint $table) {
$table->string('label')->nullable()->after('name');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('custom_fields', function (Blueprint $table) {
$table->dropColumn('label');
});
}
};

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('jenis_legalitas_jaminan', function (Blueprint $table) {
$table->string('custom_fields')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) {
$table->dropColumn('custom_fields');
});
}
};

View File

@@ -302,7 +302,10 @@
"pemohon-ao",
"pemohon-eo",
"admin",
"surveyor"
"surveyor",
"senior-officer",
"EO Appraisal",
"DD Appraisal"
]
},
{
@@ -851,6 +854,17 @@
"administrator",
"admin"
]
},
{
"title": "Custom Field",
"path": "basicdata.custom-field",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
}
]
}

View File

@@ -4,35 +4,45 @@
{{ Breadcrumbs::render('activity') }}
@endsection
@section('content')
@push('styles')
<style>
.dropdown {
position: relative;
display: inline-block;
}
.dropdowns-content {
display: none;
position: absolute;
background-color: white;
min-width: 224px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown:hover .dropdowns-content {
display: block;
}
.dropdowns-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdowns-content a:hover {
background-color: #f1f1f1;
}
</style>
@push('styles')
<style>
.dropdown {
position: relative;
display: inline-block;
}
@endpush
.dropdowns-content {
display: none;
position: absolute;
background-color: white;
min-width: 224px;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
margin-top: 0;
/* Hilangkan jarak antara tombol dan dropdown */
}
.dropdown:hover .dropdowns-content {
display: block;
}
/* Tambahkan hover untuk elemen dropdown agar tidak hilang */
.dropdowns-content:hover {
display: block;
}
.dropdowns-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdowns-content a:hover {
background-color: #f1f1f1;
}
</style>
@endpush
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings">
@@ -219,7 +229,8 @@
tujuan_penilaian_id: {
title: 'Tujuan Penilaian',
render: (item, data) => {
return data.tujuan_penilaian && data.tujuan_penilaian.name ? `${data.tujuan_penilaian.name}` : '-';
return data.tujuan_penilaian && data.tujuan_penilaian.name ?
`${data.tujuan_penilaian.name}` : '-';
},
},
status: {
@@ -249,17 +260,34 @@
return `<span class="badge ${badgeClass}">${data.status}</span>`;
},
},
actions: {
title: 'Action',
render: (item, data) => `
<div class="flex flex-nowrap justify-center">
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="activity/${data.id}/show">
<i class="ki-outline ki-eye"></i>
</a>
</div>`,
title: 'Action',
render: (item, data) => {
const status = data.status; // Anggap status berada di dalam objek data
const dokumenjaminan = data.dokumenjaminan || [];
return `
<div class="flex flex-nowrap justify-center">
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="activity/${data.id}/show" title="Lihat Detail">
<i class="ki-outline ki-eye"></i>
</a>
${
['survey', 'done', 'proses-laporan', 'laporan', 'paparan'].includes(status) ?
dokumenjaminan.map(dokumen => {
return `
<a class="btn btn-sm btn-icon btn-clear btn-info" href="surveyor/print-out-inspeksi/${data.id}/${dokumen.id}/${dokumen.jenis_jaminan_id}" title="Print Inspeksi Permohonan">
<i class="ki-outline ki-printer"></i>
</a>
`;
}).join('') : ''
}
},
</div>
`;
},
},
}
};
let dataTable = new KTDataTable(element, dataTableOptions);
@@ -306,7 +334,5 @@
const allChecked = Array.from(statusCheckboxes).every(cb => cb.checked);
selectAllCheckbox.checked = allChecked;
}
</script>
@endpush

View File

@@ -185,13 +185,13 @@
</div>
@endif
<div data-accordion="true">
@foreach ($permohonan->debiture->documents as $dokumen)
<div class="accordion-item {{ count($permohonan->debiture->documents) == 1 ? 'active' : '' }} [&:not(:last-child)]:border-b border-b-gray-200"
@foreach ($permohonan->documents as $dokumen)
<div class="accordion-item {{ count($permohonan->documents) == 1 ? 'active' : '' }} [&:not(:last-child)]:border-b border-b-gray-200"
data-accordion-item="true" id="accordion_detail_jaminan">
<button @class(['accordion-toggle py-4 group', 'mx-8' => !isset($status)])"
data-accordion-toggle="#accordion_detail_jaminan_{{ $loop->index }}">
<span class="text-base text-gray-900 font-medium">
@if (count($permohonan->debiture->documents) > 1)
@if (count($permohonan->documents) > 1)
Jaminan {{ $loop->index + 1 }}
@else
Jaminan
@@ -202,7 +202,7 @@
<i class="ki-outline ki-minus text-gray-600 text-2sm accordion-active:block hidden">
</i>
</button>
<div class="accordion-content {{ count($permohonan->debiture->documents) > 1 ? 'hidden' : '' }}"
<div class="accordion-content {{ count($permohonan->documents) > 1 ? 'hidden' : '' }}"
id="accordion_detail_jaminan_{{ $loop->index }}">
@if (!isset($status))

View File

@@ -74,8 +74,8 @@
<label class="form-label max-w-56">Jenis Aset</label>
<div>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
<p class="text-2sm text-gray-700">{{ $item->jenisJaminan->name }}</p>
<input type="hidden" name="jenis_asset_name"
value="{{ $item->jenisJaminan->name }}">
@@ -218,7 +218,7 @@
<label class="form-label max-w-56">Pemilik Jaminan</label>
<div>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@php
$hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A';
@endphp
@@ -343,13 +343,19 @@
<h3 class="card-title">
{{ $title ?? 'Data Jaminan' }}
</h3>
@php
use Illuminate\Support\Facades\Route;
@endphp
<div class="flex items-center gap-2">
@if (isset($id))
<a href="{{ route($backLink, ['id' => $id]) }}" class="btn btn-xs btn-info">
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) &&
Route::currentRouteName('otorisator.show'))
<a href="{{ route('otorisator.show', ['id' => $permohonan->id, 'type' => 'Pelaporan']) }}"
class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@else
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
@elseif (Auth::user()->hasAnyRole(['administrator','surveyor']) && Route::currentRouteName('penilai.show'))
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@endif
@@ -367,7 +373,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat Object</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen->pemilik) }}
{{ formatAlamat($dokumen->pemilik) }}
@@ -545,7 +551,7 @@
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@@ -616,8 +622,8 @@
<label for="province" class="form-label max-w-56">
{{ $labelNilai[$item] }}
</label>
<input type="text" id="luas_{{ $item }}"
class="input w-full" name="luas_{{ $item }}"
<input type="text" id="luas_{{ $item }}" class="input w-full"
name="luas_{{ $item }}"
value="{{ old('luas_' . $item, $lpjData['luas_' . $item] ?? null) }}"
oninput="calculateTotal()">
</div>
@@ -670,18 +676,24 @@
Tambah NPW </button>
</div>
<div>
<label for="total_nilai_pasar_wajar" class="form-label uppercase">TOTAL NILAI
LIKUIDASI</label>
<div class="card-body grid gap-2.5 w-full">
<div class="flex grid-col-3 gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<input type="text" id="likuidasi" name="likuidasi"
class="input w-full currency-format"
value="{{ old('likuidasi', $lpjData['likuidasi'] ?? null) }}"
oninput="calculateTotal()">
<div class="w-full">
<label class="input">
<input type="text" id="likuidasi" name="likuidasi"
class=" w-full currency"
value="{{ old('likuidasi', $lpjData['likuidasi'] ?? null) }}"
oninput="calculateTotal()">
<i class="">%
</i>
</label>
<span class="text-xs"> <span class="text-xs text-danger">*</span> Masukkan Angka Saja </span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="province" class="">X</label>
@@ -795,6 +807,10 @@
</div>
<script type="text/javascript">
const datas = @json($forminspeksi);
console.log(datas);
document.addEventListener('DOMContentLoaded', function() {
@@ -971,11 +987,34 @@
});
function formatPercentage(value) {
// Hapus semua karakter kecuali angka dan koma
let numericValue = value.replace(/[^0-9,]/g, '');
// Pastikan hanya satu koma yang ada
let parts = numericValue.split(',');
if (parts.length > 2) {
numericValue = parts[0] + ',' + parts[1]; // Pertahankan hanya bagian pertama dan kedua
}
// Jika nilai melebihi 100, batasi menjadi 100
let numericFloat = parseFloat(numericValue.replace(',', '.')) || 0;
if (numericFloat > 100) {
numericFloat = 100;
numericValue = '100';
}
// Kembalikan nilai dengan simbol %
return numericValue;
}
function calculateTotal() {
const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0;
// Bagian Likuidasi
let persentaseLikuidasi = parseInput(document.getElementById('likuidasi').value);
let persentaseLikuidasiInput = document.getElementById('likuidasi');
let persentaseLikuidasi = parseInput(persentaseLikuidasiInput.value);
persentaseLikuidasiInput.value = formatPercentage(persentaseLikuidasiInput.value);
let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]');
let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]');
@@ -990,7 +1029,7 @@
let totalNilaiPasarWajar = 0;
// Perhitungan untuk input yang sudah ada
const jenisAsetData = @json($jenisAset);
const jenisAsetData = @json($jenisAset);
// Menentukan input yang akan dihitung berdasarkan jenis aset
let standardInputs = [];
@@ -1085,7 +1124,7 @@
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
// window.location.reload();
window.location.reload();
}
});
} else {
@@ -1114,16 +1153,18 @@
}
function formatCurrencyInput(input) {
const value = input.value.replace(/[^0-9]/g, ''); // Hapus karakter non-angka
if (!value) {
input.value = ''; // Kosongkan jika tidak ada angka
return;
const value = input.value.replace(/[^0-9]/g, ''); // Hapus karakter non-angka
if (!value) {
input.value = ''; // Kosongkan jika tidak ada angka
return;
}
// Format ke mata uang
const formattedValue = new Intl.NumberFormat('id-ID', {
style: 'currency',
currency: 'IDR'
}).format(value);
input.value = formattedValue;
}
// Format ke mata uang
const formattedValue = new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR' }).format(value);
input.value = formattedValue;
}
</script>

View File

@@ -1,6 +1,13 @@
<!-- resources/views/signatures/components/signature-pad.blade.php -->
<div class="text-center border">
<h3 class="signature-title">{{ ucfirst($type) }}</h3>
@if (($type === 'penilai' && Auth::user()->sign))
<img src="{{ $type === 'penilai'
? asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign)
: asset('storage/signatures/' . $user->id . '/' . $user->sign) }}"
alt="E-Sign" class="signature-pad" style="width: 400px; height: 220px;">
@else
<canvas id="signature-pad-{{ $type }}" class="signature-pad" width="400" height="200"></canvas>
<div class="button-container py-2">
<button type="button" id="save-{{ $type }}" class="btn btn-xs btn-primary">Save</button>
@@ -8,4 +15,5 @@
<button type="button" id="delete-{{$type}}" class="btn btn-xs btn-danger">Delete</button>
</div>
<div id="status-{{ $type }}" class="status-message"></div>
@endif
</div>

View File

@@ -0,0 +1,89 @@
@php
$route = explode('.', Route::currentRouteName());
@endphp
@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($customField->id))
<form action="{{ route('basicdata.custom-field.update', $customField->id) }}" method="POST">
<input type="hidden" name="id" value="{{ $customField->id }}">
@method('PUT')
@else
<form method="POST" action="{{ route('basicdata.custom-field.store') }}">
@endif
@csrf
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
{{ isset($customField->id) ? 'Edit' : 'Tambah' }} Custom Field
</h3>
<div class="flex items-center gap-2">
<a href="{{ route('basicdata.custom-field.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">
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="{{ $customField->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">
Label
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('label') border-danger bg-danger-light @enderror" type="text" name="label" value="{{ $customField->label ?? '' }}">
@error('label')
<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">
Type
</label>
<div class="flex flex-wrap items-baseline w-full">
<select class="input @error('type') border-danger bg-danger-light @enderror" name="type">
<option value="text" {{ (isset($customField->type) && $customField->type == 'text') ? 'selected' : '' }}>Text</option>
<option value="radio" {{ (isset($customField->type) && $customField->type == 'radio') ? 'selected' : '' }}>Radio</option>
<option value="number" {{ (isset($customField->type) && $customField->type == 'select') ? 'selected' : '' }}>Select</option>
<option value="option" {{ (isset($customField->type) && $customField->type == 'checkbox') ? 'selected' : '' }}>Checkbox</option>
</select>
@error('type')
<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">
Urutan Prioritas
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input @error('urutan_prioritas') border-danger bg-danger-light @enderror" type="number" name="urutan_prioritas" value="{{ $customField->urutan_prioritas ?? $urutan_prioritas }}">
@error('urutan_prioritas')
<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,153 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('basicdata.custom-field') }}
@endsection
@section('content')
<div class="grid">
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="custom-field-table" data-api-url="{{ route('basicdata.custom-field.datatables') }}">
<div class="card-header bg-agi-50 py-5 flex-wrap">
<h3 class="card-title">
Daftar Custom Field
</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 Custom Field" 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.custom-field.export') }}"> Export to Excel </a>
<a class="btn btn-sm btn-primary" href="{{ route('basicdata.custom-field.create') }}"> Tambah Custom Field </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="name">
<span class="sort"> <span class="sort-label"> Custom Field </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[250px]" data-datatable-column="type">
<span class="sort"> <span class="sort-label"> Type </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[250px]" data-datatable-column="urutan_prioritas">
<span class="sort"> <span class="sort-label"> Urutan Prioritas </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/custom-field/${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('#custom-field-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();
},
},
label: {
title: 'Custom Field',
},
type: {
title: 'Type',
},
urutan_prioritas: {
title: 'Urutan Prioritas',
},
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/custom-field/${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,16 +16,16 @@
</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nomor Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-base text-gray-700 font-bold">
{{ $permohonan->nomor_registrasi ?? "-" }}
</p>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nomor Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-base text-gray-700 font-bold">
{{ $permohonan->nomor_registrasi ?? "-" }}
</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Pemilik Jaminan
@@ -314,38 +314,30 @@
</div>
@if($detail->details)
@if($detail->jenisLegalitasJaminan->custom_field)
@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] ?? '' }}">
@if($detail->jenisLegalitasJaminan->custom_fields)
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ getCustomField($key)->label ?? "" }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" value="{{ json_decode($detail->details)->{getCustomField($key)->name} ?? '' }}">
</div>
</div>
</div>
@endforeach
@endif
@else
@if($detail->jenisLegalitasJaminan->custom_field)
<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">
@if($detail->jenisLegalitasJaminan->custom_field_type === "text")
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "number")
<input class="input" type="number" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "date")
<input class="input" type="date" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea")
<textarea class="textarea" rows="3" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2"></textarea>
@else
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
@endif
@if($detail->jenisLegalitasJaminan->custom_fields)
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ getCustomField($key)->label }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" placeholder="...">
</div>
</div>
</div>
@endforeach
@endif
@endif
@@ -393,25 +385,17 @@
</div>
</div>
@if($item->custom_field)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ str_replace('_',' ',$item->custom_field) }}
</label>
<div class="flex flex-wrap items-baseline w-full">
@if($item->custom_field_type === "text")
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
@elseif($item->custom_field_type === "number")
<input class="input" type="number" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
@elseif($item->custom_field_type === "date")
<input class="input" type="date" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
@elseif($item->custom_field_type === "textarea")
<textarea class="textarea" rows="3" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2"></textarea>
@else
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
@endif
@if($item->custom_fields)
@foreach($item->custom_fields as $field)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56 capitalize">
{{ getCustomField($field)->label }}
</label>
<div class="flex flex-wrap items-baseline w-full">
<input class="input" type="text" name="custom_field[{{$item->id}}][{{getCustomField($field)->name}}]" placeholder="...">
</div>
</div>
</div>
@endforeach
@endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -437,13 +421,13 @@
@push('scripts')
{{--Pemilik Jaminan--}}
<script>
document.addEventListener("DOMContentLoaded", function() {
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() {
button.addEventListener("click", function () {
this.closest(".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5").remove();
});
});
@@ -452,7 +436,7 @@
// Add delete listeners to existing buttons
addDeleteListeners();
document.getElementById("tambah_sertifikat").addEventListener("click", function() {
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 = `
@@ -547,16 +531,16 @@
</div>
</div>
${item.custom_field ? `
${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => `
<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, " ")}
${field.label}
</label>
<div class="flex flex-wrap items-baseline w-full">
${getCustomFieldInput(item.custom_field_type, item.custom_field, item.details)}
${getCustomFieldInput(field.type, field.name, item.details, item.id)}
</div>
</div>
` : ""}
`).join('') : ""}
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
@@ -637,19 +621,19 @@
return dokumenNomor;
}
function getCustomFieldInput(type, fieldName, value) {
function getCustomFieldInput(type, fieldName, value, itemId) {
value = value ? JSON.parse(value)[fieldName] || "" : "";
switch (type) {
case "text":
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
return `<input class="input" type="text" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "number":
return `<input class="input" type="number" name="custom_field[][${fieldName}]" value="${value}">`;
return `<input class="input" type="number" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "date":
return `<input class="input" type="date" name="custom_field[][${fieldName}]" value="${value}">`;
return `<input class="input" type="date" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
case "textarea":
return `<textarea class="textarea" rows="3" name="custom_field[][${fieldName}]">${value}</textarea>`;
return `<textarea class="textarea" rows="3" name="custom_field[${itemId}][${fieldName}]">${value}</textarea>`;
default:
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
return `<input class="input" type="text" name="custom_field[${itemId}][${fieldName}]" value="${value}">`;
}
}
</script>

View File

@@ -0,0 +1,118 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Jadwal Kunjungan</title>
<style>
body {
background-color: #f3f4f6;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
margin: 0;
padding: 20px;
}
.email-container {
max-width: 42rem;
margin: 0 auto;
background-color: white;
border-radius: 0.5rem;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
padding: 1.5rem;
}
.header {
border-bottom: 1px solid #e5e7eb;
padding-bottom: 1rem;
margin-bottom: 1.5rem;
}
.title {
font-size: 1.5rem;
font-weight: 700;
color: #1f2937;
margin: 0;
}
.subtitle {
color: #4b5563;
margin: 0.25rem 0 0 0;
}
.content-row {
display: flex;
align-items: center;
margin-bottom: 1rem;
}
.content-row:last-child {
margin-bottom: 0;
}
.label {
width: 8rem;
font-weight: 500;
color: #374151;
}
.value {
color: #111827;
flex-grow: 1;
}
.footer {
margin-top: 2rem;
padding-top: 1rem;
border-top: 1px solid #e5e7eb;
font-size: 0.875rem;
color: #6b7280;
}
@media (max-width: 640px) {
.content-row {
flex-direction: column;
align-items: flex-start;
}
.label {
margin-bottom: 0.5rem;
width: auto;
}
}
</style>
</head>
<body>
<div class="email-container">
<!-- Header -->
<div class="header">
<h1 class="title">Jadwal Kunjungan Penilaian</h1>
<p class="subtitle">Dikirim melalui Sistem Penilaian</p>
</div>
<!-- Content -->
<div class="content">
<div class="content-row">
<span class="label">ID Penilaian:</span>
<span class="value">{{ $id }}</span>
</div>
<div class="content-row">
<span class="label">Waktu Penilaian:</span>
<span class="value">{{ \Carbon\Carbon::parse($waktu_penilaian)->format('d F Y H:i') }}</span>
</div>
<div class="content-row">
<span class="label">Deskripsi:</span>
<p class="value">{{ $deskripsi_penilaian }}</p>
</div>
</div>
<!-- Footer -->
<div class="footer">
<p>Email ini dikirim secara otomatis, mohon tidak membalas email ini.</p>
<p style="margin-top: 0.5rem;">&copy; {{ date('Y') }} Sistem Penilaian. All rights reserved.</p>
</div>
</div>
</body>
</html>

View File

@@ -92,28 +92,28 @@
@enderror
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Jenis Legalitas Jaminan
</label>
<div class="grid grid-cols-3 lg:grid-cols-4 w-full gap-2.5">
@foreach ($jenisLegalitasJaminan as $row)
<label class="switch">
@if ( isset($jenisJaminan) && !empty(json_decode($jenisJaminan->jenis_legalitas_jaminan_id, true)))
<input type="checkbox" @if (in_array($row->code, json_decode($jenisJaminan->jenis_legalitas_jaminan_id, true))) {{ 'checked' }} @endif
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Jenis Legalitas Jaminan
</label>
<div class="grid grid-cols-3 lg:grid-cols-4 w-full gap-2.5">
@foreach ($jenisLegalitasJaminan as $row)
<label class="switch">
@if ( isset($jenisJaminan) && !empty(json_decode($jenisJaminan->jenis_legalitas_jaminan_id, true)))
<input type="checkbox" @if (in_array($row->code, json_decode($jenisJaminan->jenis_legalitas_jaminan_id, true))) {{ 'checked' }} @endif
value="{{ $row->code }}" name="jenis_legalitas_jaminan_id[]" />
@else
<input type="checkbox" value="{{ $row->code }}"
name="jenis_legalitas_jaminan_id[]" />
@endif
<span class="switch-label">
@else
<input type="checkbox" value="{{ $row->code }}"
name="jenis_legalitas_jaminan_id[]" />
@endif
<span class="switch-label">
{{ $row->name }}
</span>
</label>
@endforeach
</label>
@endforeach
</div>
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save

View File

@@ -10,83 +10,107 @@
<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 border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" 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>
@else
<form method="POST" action="{{ route('basicdata.jenis-legalitas-jaminan.store') }}">
@endif
@csrf
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" 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 -->
<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>
<!-- 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 items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Custom Fields
</label>
<div class="grid grid-cols-3 lg:grid-cols-4 w-full gap-2.5">
@foreach($customFields as $customField)
<label class="switch">
@if ( isset($jenisLegalitasJaminan) && !empty($jenisLegalitasJaminan->custom_fields))
<input type="checkbox" @if (in_array($customField->id, $jenisLegalitasJaminan->custom_fields))
{{ 'checked' }}
@endif
value="{{ $customField->id }}" name="custom_fields[]"/>
@else
<input type="checkbox" value="{{ $customField->id }}"
name="custom_fields[]"/>
@endif
<span class="switch-label">
{{ $customField->urutan_prioritas.'. '.$customField->label }}
</span>
</label>
@endforeach
</div>
</div>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
<div class="flex justify-end">
<button type="submit" class="btn btn-primary">
Save
</button>
</div>
</div>
</div>
</form>
</div>
@endsection

View File

@@ -189,6 +189,8 @@
const inspeksiId = data.debiture?.documents[0]?.inspeksi[0]?.id || '-';
const dokumenID = data.debiture?.documents[0]?.id || '-';
const jenisJaminanID = data.debiture?.documents[0]?.jenis_jaminan_id || '-';
const typePenilaian = data.penilai?.type_penilai || '';
const type = data.penilai?.type || '';
let laporanButton = '';
let resumeButton = '';
@@ -202,17 +204,23 @@
if(data.nilai_liquidasi==null) {
laporanButton = `
<a href="laporan/${data.id}" class="btn btn-sm btn-dark">
Laporn
Laporan
</a>`;
}
console.log(data.nilai_liquidasi);
if(data.status_bayar=="sudah_bayar" && data.nilai_liquidasi >0) {
laporanButton = `
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0" class="btn btn-sm btn-dark">
if(data.penilai.type_penilai=='resume' && !data.penilai.resume){
laporanButton = `
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0&type=${type}" class="btn btn-sm btn-dark">
Laporan
</a>`;
} else {
laporanButton = `
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0&type=${typePenilaian}" class="btn btn-sm btn-dark">
Laporan
</a>`;
}
}
return `${resumeButton} ${laporanButton}`;

View File

@@ -76,7 +76,7 @@
}
}
}
} catch (\Exception $e) {
} catch (Exception $e) {
// Handle invalid JSON silently
}
}
@@ -102,10 +102,10 @@
</div>
<div class="content-max">
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
Aset Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->address }}, Kel. @foreach ($villages as $village)
{{ $village->name }}
@endforeach, Kec. @foreach ($districts as $district)
@@ -118,47 +118,44 @@
@endforeach
</span>
Luas Tanah / Luas Bangunan:
<br> Dokumen Jaminan: <br>
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</div>
<div class="content">
@@ -169,10 +166,10 @@
<div class="signature">
Best Regards,<br />
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<img src="{{ asset('storage/signatures/' . $user->id . '/' . $user->sign) }}" alt="{{ $user->name }}"
width="200">
<p>
{{ $permohonan->user->name }}
{{ $user->name }}
</p>
</div>

View File

@@ -104,10 +104,10 @@
</div>
<div class="content-max">
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
Aset Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->address }}, Kel. @foreach ($villages as $village)
{{ $village->name }}
@endforeach, Kec. @foreach ($districts as $district)
@@ -120,47 +120,44 @@
@endforeach
</span>
Luas Tanah / Luas Bangunan:
<br> Dokumen Jaminan: <br>
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</div>
<div class="content">
@@ -171,10 +168,10 @@
<div class="signature">
Best Regards,<br />
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<img src="{{ asset('storage/signatures/' . $user->id . '/' . $user->sign) }}" alt="{{ $user->name }}"
width="200">
<p>
{{ $permohonan->user->name }}
{{ $user->name }}
</p>
</div>

View File

@@ -72,14 +72,14 @@
<ul>
<li>Aset Jaminan:
<span class="font-bold">
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
</span>
</li>
<li>Lokasi Jaminan:
<span class="font-bold">
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
{{ $document->address }}
@if (isset($document->jenisJaminan))
, Kel.
@@ -102,48 +102,45 @@
@endforeach
</span>
</li>
<li>Luas Tanah / Luas Bangunan:
<li>Dokumen Jaminan: <br>
<span class="font-bold">
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</span>
</li>
</ul>
@@ -153,10 +150,10 @@
</p>
<p>Best Regards,
<div class="font-bold">
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200" class="signature">
<img src="{{ asset('storage/signatures/' . auth()->user()->id . '/' . auth()->user()->sign) }}"
alt="{{ auth()->user()->name }}" width="200" class="signature">
<p>
{{ $permohonan->user->name }}
{{ auth()->user()->name }}
</p>
</div>
Sub Direktorat Appraisal

View File

@@ -102,10 +102,10 @@
</div>
<div class="content-max">
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
Aset Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->address }}, Kel. @foreach ($villages as $village)
{{ $village->name }}
@endforeach, Kec. @foreach ($districts as $district)
@@ -118,47 +118,44 @@
@endforeach
</span>
Luas Tanah / Luas Bangunan:
<br> Dokumen Jaminan: <br>
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</div>
<div class="content">
@@ -169,10 +166,10 @@
<div class="signature">
Best Regards,<br />
<img src="{{ public_path('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<img src="{{ public_path('storage/signatures/' . auth()->user()->id . '/' . auth()->user()->sign) }}"
alt="{{ auth()->user()->name }}" width="200">
<p>
{{ $permohonan->user->name }}
{{ auth()->user()->name }}
</p>
</div>

View File

@@ -42,7 +42,7 @@
}
}
}
} catch (\Exception $e) {
} catch (Exception $e) {
// Handle invalid JSON silently
}
}
@@ -70,14 +70,14 @@
<ul>
<li>Aset Jaminan:
<span class="font-bold">
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
</span>
</li>
<li>Lokasi Jaminan:
<span class="font-bold">
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
{{ $document->address }}
@if (isset($document->jenisJaminan))
, Kel.
@@ -100,48 +100,45 @@
@endforeach
</span>
</li>
<li>Luas Tanah / Luas Bangunan:
<li>Dokumen Jaminan: <br>
<span class="font-bold">
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</span>
</li>
</ul>
@@ -151,10 +148,10 @@
</p>
<p>Best Regards,
<div class="font-bold">
<img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200" class="signature">
<img src="{{ asset('storage/signatures/' . auth()->user()->id . '/' . auth()->user()->sign) }}"
alt="{{ auth()->user()->name }}" width="200" class="signature">
<p>
{{ $permohonan->user->name }}
{{ auth()->user()->name }}
</p>
</div>
Sub Direktorat Appraisal

View File

@@ -104,10 +104,10 @@
</div>
<div class="content-max">
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
Aset Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->documents as $document)
{{ $document->address }}, Kel. @foreach ($villages as $village)
{{ $village->name }}
@endforeach, Kec. @foreach ($districts as $district)
@@ -120,47 +120,44 @@
@endforeach
</span>
Luas Tanah / Luas Bangunan:
<br> Dokumen Jaminan: <br>
@php
$luas_tanah = null;
$luas_bangunan = null;
$n = 1;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' &&
isset($details->{'luas_tanah'}) &&
is_numeric($details->{'luas_tanah'}))
@php
$luas_tanah = $details->{'luas_tanah'};
@endphp
@endif
@if (
$detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' &&
isset($details->{'luas_bangunan'}) &&
is_numeric($details->{'luas_bangunan'}))
@php
$luas_bangunan = $details->{'luas_bangunan'};
@endphp
@endif
@if (isset($details->luas_tanah) && isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah / Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
/
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_tanah))
{{ $n }}. {{ $detail->name }}<br>
Luas Tanah :
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@elseif (isset($details->luas_bangunan))
{{ $n }}. {{ $detail->name }}<br>
Luas Bangunan:
{{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }}
m<sup>2</sup>
<br>
@php $n++; @endphp
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</div>
<div class="content">
@@ -171,10 +168,10 @@
<div class="signature">
Best Regards,<br />
<img src="{{ public_path('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<img src="{{ public_path('storage/signatures/' . auth()->user()->id . '/' . auth()->user()->sign) }}"
alt="{{ auth()->user()->name }}" width="200">
<p>
{{ $permohonan->user->name }}
{{ auth()->user()->name }}
</p>
</div>

View File

@@ -0,0 +1,596 @@
@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">
@php
$senior_officer = null;
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
}
@endphp
<form id="formInspeksi" method="POST" enctype="multipart/form-data" class="grid gap-5">
@csrf
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi ?? ''}}">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id ?? "" }}">
<input type="hidden" name="dokument_id" value="{{ request('documentId') }}">
<input type="hidden" name="action" value="callReport">
<input type="hidden" name="type" value="callReport">
@include('lpj::assetsku.includenya')
{{-- @include('lpj::surveyor.components.header')
@include('lpj::surveyor.components.callReport') --}}
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
CALL Report
</h3>
</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">Kepada</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="kepada" class="input w-full" placeholder="Masukkan..."
value=" {{ $callReport['kepada'] ?? '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Dari</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="dari" class="input w-full" placeholder="Masukkan..."
value="{{ $callReport['dari'] ?? '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Laporan</label>
<div class="flex flex-wrap items-base line w-full">
<input type="text" name="nomor_rap" class="input w-full" placeholder="Masukkan..."
value="{{ $nomorLaporan ?? '' }}" @readonly(true)>
</div>
</div>
{{-- 250109828129/ --}}
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tanggal" class="input w-full" placeholder="Masukkan..."
value="{{ $callReport['tanggal'] ?? '' }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Perihal</label>
<div class="flex flex-wrap items-base line w-full">
<input type="text" name="perihal" class="input w-full" placeholder="Masukkan..."
value="{{ $callReport['perihal'] ?? '' }}">
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md ">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Menindak lanjuti permintaan <b>
{{$permohonan->tujuanPenilaian->name ?? ''}}</b>, BAG CABang <b>{{ $permohonan->branch->name }}</b>
disampaikan hal sebagai berikut:
</h1>
</div>
<div class="card-body">
<div class="grid gap-5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="lokasi" class="form-label max-w-56">Nama Debitur</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="lokasi" name="lokasi" class="input w-full"
placeholder="Masukkan Jl."
value="{{ $memo->lokasi->lokasi ?? old('lokasi') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">KJPP</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Jenis Aset</label>
<div class="flex flex-wrap items-baseline w-full">
<select id="jenis_asset_tidak_sesuai" class="input w-full" name="jenis_asset_tidak_sesuai">
<option value="">Select Jenis asset</option>
@isset($basicData['jenisJaminan'] )
@foreach ($basicData['jenisJaminan'] as $item)
<option value="{{ $item->name }}"
{{ ($memo->jenis_asset_tidak_sesuai ?? '') == $item->name ? 'selected' : '' }}>
{{ $item->name }}
</option>
@endforeach
@endisset
</select>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Lokasi Objek Penilaian</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Dokumen </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Tanggal Penilaian </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Lelang ke </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $memo->lokasi->penilai ?? old('penilai') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Nilai Pasar Wajar (NPW)</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="likuidasi" name="likuidasi" class="input w-full"
placeholder="Masukkan likuidasi"
value="{{ old('likuidasi') }}">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Nilai Likuidasi (NL)</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="penilai" class="input w-full"
placeholder="Masukkan Penilai"
value="">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card border border-agi-100 w-full bg-white rounded-lg shadow-md ">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Penilaian ke lokasi objek telah dilakukan oleh :
</h1>
</div>
<div class="card-body">
<div class="grid gap-5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<div class="grid gap-2.5 w-full">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="staf" class="form-label max-w-56">Staf Subdit Appraisal </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="staf" name="staf" class="input w-full"
placeholder="Masukkan Nama Staff"
value="{{ $penilai->userPenilaiTeam->name ?? "" }}" @readonly(true)>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Pihak KJPP</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="penilai" name="pihak_kjjpp" class="input w-full"
placeholder="Masukkan Pihak KJPP"
value="">
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="pihak_bag" class="form-label max-w-56">Pihak BAGI Cab </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="pihak_bag" name="pihak_bag" class="input w-full"
placeholder="Masukkan Pihak Bag"
value="{{ $permohonan->user->name ?? '' }}" @readonly(true)>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="debitur_perwakilan" class="form-label max-w-56">Debitur/perwakilan debitur </label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" id="debitur_perwakilan" name="debitur_perwakilan" class="input w-full"
placeholder="Masukkan Penilai"
value="{{ $permohonan->debiture->name ?? '' }}" @readonly(true)>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Informasi yang didapatkan sebagai berikut :
</h3>
</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">Faktor Positif</label>
<div id="fakta-positif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($callReport['fakta']['fakta_positif']))
@foreach ($callReport['fakta']['fakta_positif'] as $index => $positif)
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old("fakta_positif.$index", $positif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="fakta_positif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_positif[]" rows="3">{{ old('fakta_positif.0', '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-positif-container', 'fakta_positif')">
<i class="ki-outline ki-plus"></i>
</button>
</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 id="fakta-negatif-container" class="flex flex-wrap items-baseline w-full">
@if (!empty($callReport['fakta']['fakta_negatif']))
@foreach ($callReport['fakta']['fakta_negatif'] as $index => $negatif)
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old("fakta_negatif.$index", $negatif) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@endforeach
@else
<div class="fakta_negatif flex items-center gap-2 mt-2 textarea-group w-full">
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="3">{{ old('fakta_negatif.0', $callReport['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-fakta_negatif" class="alert text-danger text-sm"></em>
</div>
@endif
<button type="button" class="btn btn-primary btn-sm mt-5"
onclick="addClonableItem('fakta-negatif-container', 'fakta_negatif')">
<i class="ki-outline ki-plus"></i>
</button>
</div>
</div>
</div>
</div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
<button type="button" class="btn btn-primary" id="saveButton" onclick="submitData()">
<i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Save</span>
</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>
@endif
</div>
</form>
</div>
@endsection
@push('scripts')
{{-- <script type="text/javascript">
const callReport = @json($forminspeksi ?? '');
console.log('callReport', callReport)
function updateAlamatFields(status) {
// Ambil elemen formulir
const addressForm = document.getElementById('alamat_form');
const inputs = addressForm.querySelectorAll('input, select');
const addressInput = document.getElementById('address');
if (status === 'sesuai') {
addressInput.value = "{{ $dokumen->address ?? '' }}";
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.setAttribute('readonly', true);
} else if (element.tagName === 'SELECT') {
element.setAttribute('disabled', true);
element.classList.add('disabled-input')
}
});
addressForm.style.display = 'grid';
addressForm.disabled = true;
addressForm.classList.add('disabled-input')
} else if (status === 'tidak sesuai') {
addressForm.style.display = 'grid';
addressForm.removeAttribute('disabled');
addressForm.classList.remove('disabled-input')
const formInspeksi = @json($forminspeksi);
const addressInput = document.getElementById('address');
if (formInspeksi && formInspeksi.asset && formInspeksi.asset.alamat) {
if (formInspeksi.asset.alamat['tidak sesuai'] && formInspeksi.asset.alamat['tidak sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['tidak sesuai'].address;
} else if (formInspeksi.asset.alamat['sesuai'] && formInspeksi.asset.alamat['sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['sesuai'].address;
} else {
addressInput.value = "";
}
}
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.removeAttribute('readonly');
} else if (element.tagName === 'SELECT') {
element.removeAttribute('disabled');
element.classList.remove('disabled-input')
}
});
}
}
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
const selectedValue = $(`[name="${fieldName}"]:checked`).val();
const inputField = $(`#${inputId}`);
if (visibleValues.includes(selectedValue)) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleCheckboxVisibility(fieldName, inputId, visibleValues = []) {
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
const inputField = $(`#${inputId}`);
// Cek apakah salah satu nilai yang dipilih cocok dengan visibleValues
const shouldShow = visibleValues.some(value => selectedValues.includes(value.toLowerCase()));
if (shouldShow) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleMultipleFields(fieldName, mappings) {
// Ambil semua nilai checkbox yang dicentang
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
// Iterasi melalui setiap mapping
for (const [key, inputId] of Object.entries(mappings)) {
const inputField = $(`#${inputId}`);
// Tampilkan input jika nilai yang relevan dipilih
if (selectedValues.includes(key.toLowerCase())) {
inputField.show();
} else {
inputField.hide().val(''); // Sembunyikan dan reset nilai
}
}
}
function toggleAlamatVisibility(idSesuai, idTidakSesuai, selectedValue) {
// Ambil elemen berdasarkan ID
const alamatSesuai = document.getElementById(idSesuai);
const alamatTidakSesuai = document.getElementById(idTidakSesuai);
// Periksa nilai yang dipilih dan tampilkan elemen yang sesuai
if (selectedValue === 'sesuai') {
alamatSesuai.style.display = 'grid'; // Tampilkan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'none'; // Sembunyikan "Alamat Tidak Sesuai"
} else if (selectedValue === 'tidak sesuai') {
alamatSesuai.style.display = 'none'; // Sembunyikan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'grid'; // Tampilkan "Alamat Tidak Sesuai"
}
}
function submitData() {
showLoadingSwal('Mengirim data ke server...');
const form = document.querySelector('form');
const formData = new FormData(form);
console.log('Form data entries:', Array.from(formData.entries()));
const urlParams = new URLSearchParams(window.location.search);
const permohonanId = {{ $permohonan->id }};
const documentId = urlParams.get('documentId');
const inspeksiId = urlParams.get('inspeksiId');
const requestUrl =
`{{ route('penilai.storeRap') }}?permohonanId=${permohonanId}&inspeksiId=${inspeksiId}&documentId=${documentId}`;
$.ajax({
url: requestUrl,
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
hideLoadingSwal();
if (response.success) {
Swal.fire({
title: 'Berhasil!',
text: response.message,
icon: 'success',
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
// window.location.reload();
}
});
} else {
Swal.fire({
title: 'Error!',
text: response.message || 'Terjadi kesalahan',
icon: 'error',
confirmButtonText: 'OK'
});
}
console.log(response);
},
error: function(xhr, status, error) {
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
toastrErrorBuild(value[0]);
});
// toastrErrorBuild(error);
}
hideLoadingSwal();
console.log(errors);
}
});
}
// Ensure existing remove buttons are functional
document.addEventListener('DOMContentLoaded', () => {
const removeButtons = document.querySelectorAll('.remove-btn');
removeButtons.forEach(button => {
button.addEventListener('click', function() {
this.closest('.perwakilan').remove();
});
});
document.querySelectorAll('.number-format').forEach(input => {
input.addEventListener('input', function() {
formatNumber(this);
});
});
});
function updateAnalisa(params) {
const inputMap = {
jenis_asset: 'jenis_asset_tidak_sesuai',
analisa_tanah: 'analisa_tanah_tidak_sesuai',
analisa_unit: 'analisa_luas_unit_tidak_sesuai',
analisa_bangunan: 'analisa_bangunan_tidak_sesuai',
};
// Pastikan elemen ID ada di inputMap
if (!inputMap[params]) {
console.error('Parameter tidak valid:', params);
return;
}
// Ambil nilai berdasarkan parameter
const inputValue = document.getElementById(inputMap[params]).value;
const data = {
[params === 'jenis_asset' ? 'jenis_asset' : params.replace('analisa_', 'luas_')]: inputValue,
types: params
};
$.ajax({
url: '{{ route('surveyor.update_analisa', ['id' => $permohonan->id]) }}',
type: 'POST',
data: data,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
console.log(response);
if (response.success) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.error('Terjadi error:', error);
console.log('Status:', status);
console.log('Response:', xhr.responseText);
if (xhr.responseJSON.message) {
toastrErrorBuild(xhr.responseJSON.message);
} else {
toastrErrorBuild('Terjadi kesalahan');
}
}
});
}
</script> --}}
@include('lpj::surveyor.js.utils')
@endpush

View File

@@ -58,7 +58,16 @@
page-break-inside: avoid;
}
width: 48%;
margin-right: 2%;
float: left;
padding: 5px;
box-sizing: border-box;
page-break-inside: avoid;
}
.photo-item img {
max-width: 100%;
max-width: 100%;
height: auto;
object-fit: contain;
@@ -107,6 +116,9 @@
@php
$imagePath = storage_path('app/public/' . $item['path']);
@endphp
@if ($counter % 2 == 0)
<div class="photo-row clearfix">
@endif
<div class="photo-item border">
<h4 class="text-gray-600 font-semibold text-sm">{{ $item['name'] }}</h4>
@if ($statusLpj || file_exists($imagePath))

View File

@@ -28,37 +28,39 @@
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Harga Penawara</label>
<label class="form-label max-w-56">Harga Penawaran</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga_diskon'] }}</span>
<span>Rp. {{ $item['harga'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Penjualan (HP)</label>
<label class="form-label max-w-56">Penjual (HP)</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
<span>{{ $item['telepon'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Ditawarkan sejak</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['harga'] }}</span>
<span>{{ $item['penawaran'] }}</span>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LT</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_tanah'] }}</span>
<span>{{ $item['luas_tanah'] }} </span>
<sup> m2</sup>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">LB</label>
<div class="flex flex-wrap items-baseline w-full">
<span>{{ $item['luas_bangunan'] }}</span>
<span>{{ $item['luas_bangunan'] }} </span>
<sup> m2</sup>
</div>
</div>

View File

@@ -5,22 +5,21 @@
@endsection
@section('content')
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
@include('lpj::assetsku.includenya')
<form id="form-lpj" method="post" class="w-full grid gap-5">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
@@ -34,25 +33,33 @@
<div class="input-group w-full flex gap-2">
<ol class="list-decimal pl-5 space-y-2">
<li>PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG BERLAKU DI SUBDIT APPRAISAL</li>
<li>LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN DOKUMEN ASLINYA</li>
<li>PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT PENILAIAN, ATAS INFORMASI YANG DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN DI ANTARA PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI</li>
<li>LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA</li>
<li>LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA
TERSEBUT SESUAI DENGAN DOKUMEN ASLINYA</li>
<li>PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT
PENILAIAN, ATAS INFORMASI YANG DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN
DI ANTARA PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI</li>
<li>LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA
</li>
</ol>
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" id="saveButton" onclick="saveLpjSederhanadanStandard()">
<button type="button" class="btn btn-primary" id="saveButton" onclick="saveLpjSederhanadanStandard()">
<i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Save</span>
</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}" class="btn btn-light"
>
<i class="ki-filled ki-printer"></i> Hasil Inspeksi
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
<i class="ki-filled ki-printer"></i> Print Laporan
</a>
@endif
</div>

View File

@@ -281,7 +281,8 @@
{{-- @include('lpj::penilai.components.foto-lampiran') --}}
<div class="flex card-footer justify-end gap-5">
<a class="btn btn-success" onclick="saveMemo()">
<a class="btn btn-primary" onclick="saveMemo()">
<i class="ki-filled ki-save-2"></i>
SAVE
</a>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
@@ -289,7 +290,11 @@
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}" class="btn btn-light"
>
<i class="ki-filled ki-printer"></i> Hasil Inspeksi
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>

View File

@@ -92,17 +92,7 @@
border: 1px solid #000;
}
.photo-item {
text-align: center;
margin-bottom: 20px;
}
.photo-image {
max-width: 80%;
height: auto;
display: block;
margin: 0 auto;
}
</style>
</head>
@@ -110,7 +100,7 @@
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
@@ -421,8 +411,8 @@
</main>
<footer>
<footer id="footer">
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
</footer>
<script>

View File

@@ -110,7 +110,7 @@
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();

View File

@@ -95,18 +95,6 @@
.border {
border: 1px solid #000;
}
.photo-item {
text-align: center;
margin-bottom: 20px;
}
.photo-image {
max-width: 80%;
height: auto;
display: block;
margin: 0 auto;
}
</style>
</head>
@@ -171,7 +159,7 @@
<h2 style="text-transform: uppercase;">DOKUMEN TERLAMPIR</h2>
<table style="width: 100%;">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@php
$senior_officer = null;
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
@@ -282,9 +270,14 @@
<h2 style="text-transform: uppercase;">DESKRIPSI DEVELOPER</h2>
<table style="width: 100%;">
<tr>
<td>{!! nl2br(e($forminspeksi['pengalaman_developer'] ?? 'Data tidak tersedia')) !!}</td>
<td style="vertical-align: top; width: 20%; padding: 2px;">Pengalaman Developer & Proyek Yang Pernah
Dibuat</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{!! nl2br(e($forminspeksi['pengalaman_developer'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>Apakah Developer Anggota REI</td>
<td>:</td>
<td>{!! nl2br(e($forminspeksi['developer_anggota'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@@ -292,6 +285,8 @@
@isset($forminspeksi['lainnya_developer'])
@foreach ($forminspeksi['lainnya_developer'] as $item)
<tr>
<td>Lainnya</td>
<td>:</td>
<td>
{!! nl2br(e($item)) !!}
</td>
@@ -302,27 +297,44 @@
<h2 style="text-transform: uppercase;">KONDISI, LINGKUNGAN DAN PROGRESS PEMBANGUNAN</h2>
<table style="width: 100%;">
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kapan Mulai Dibangun & Target Penyelesaian
</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kapan_mulai_dibangun'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kondisi Perumahan Saat Ini</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kondisi_perumahan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Progress Pembangunan</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['progres_pembangunan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Kontraktor (internal/eksternal)</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['kontraktor'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Lingkungan Sekitar</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['lingkungan_sekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Komplek Lain Disekitar Lokasi</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['komplek_disekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Pusat Keramaian Dekat Lokasi</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['pusat_keramaian'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Transportasi Umum Yang Tersedia</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>{!! nl2br(e($forminspeksi['transportasi_umum'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@@ -330,6 +342,8 @@
@isset($forminspeksi['lainnya_kondisi'])
@foreach ($forminspeksi['lainnya_kondisi'] as $item)
<tr>
<td style="vertical-align: top; width: 20%; padding: 2px;">Lainnya</td>
<td style="width: 1%; padding: 2px;">:</td>
<td>
{!! nl2br(e($item)) !!}
</td>
@@ -340,16 +354,15 @@
@isset($forminspeksi['partisi'])
<h2 style="text-transform: uppercase;">PARTISI BANGUNAN</h2>
<table>
<table style="width: 100%;">
@if (is_array($forminspeksi['partisi']))
@foreach ($forminspeksi['partisi'] as $key => $item)
@if (is_array($item))
<tr>
<td>
<td style="vertical-align: top; width: 20%; padding: 2px;">
{{ $item['nama'] ?? '' }}
</td>
</tr>
<tr>
<td style="width: 1%; padding: 2px;">:</td>
<td>
{{ $item['value'] ?? '' }}
</td>
@@ -588,6 +601,53 @@
</table>
<div class="page-break"></div>
<div class="section">
<div class="judul">
<h6 class="border" style="text-align: center;">
PETA
</h6>
</div>
<div class="photo-container">
@php
$fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
// Memindahkan foto_tempat ke depan jika ada
if (($key = array_search('foto_tempat', $fotoTypes)) !== false) {
unset($fotoTypes[$key]);
array_unshift($fotoTypes, 'foto_tempat');
}
@endphp
@if (isset($forminspeksi))
@php $counter = 0; @endphp
@foreach ($fotoTypes as $type)
@php
$imagePath = $forminspeksi[$type] ?? null;
@endphp
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
@if ($counter % 2 == 0)
<div class="photo-row clearfix"
>
@endif
<div class="photo-item border"
>
<img src="{{ storage_path('app/public/' . $imagePath) }}" alt="{{ $type }}"
class="photo-image">
<p style="margin: 0; font-size: 14px;">
{{ Str::title(str_replace('_', ' ', $type)) }}
</p>
</div>
@if ($counter % 2 == 1 || $loop->last)
</div>
@endif
@php $counter++; @endphp
@endif
@endforeach
@endif
</div>
</div>
<div class="page-break"></div>
<div class="section">
<div class="judul">

View File

@@ -119,7 +119,7 @@
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
}
$data = rtrim($data, ', ');
@@ -192,8 +192,8 @@
@php
$senior_officer = null;
if ($permohonan->debiture && $permohonan->debiture->documents) {
foreach ($permohonan->debiture->documents as $dokumen) {
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
$teams = $permohonan->region->teams;
@@ -420,7 +420,7 @@
</tr>
</table>
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@@ -862,9 +862,31 @@
D. ASURANSI
</td>
</tr>
@if (!empty($lpjData['asuransi_luas_bangunan']))
<tr>
<td><table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 10px;">
<tr>
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan</td>
<td style="border: 1px solid #000; padding: 4px;">Harga</td>
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
</tr>
<tr>
<td style="border: 1px solid #000; padding: 4px;">{{ $lpjData['asuransi_luas_bangunan'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ formatRupiah($lpjData['asuransi_nilai_1']) ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ formatRupiah($lpjData['asuransi_nilai_2']) ?? '' }}</td>
</tr>
</table>
</td>
</tr>
@else
<tr>
<td>Tidak Ada</td>
</tr>
@endif
</table>
<table style="width: 100%">
@@ -1035,7 +1057,7 @@
<table style="width: 100%;">
<tr>
<td style="border: 1px solid #000;">
G. CATATAN YANG PERLU DI PERHATIKAN
G. ANALISA FAKTA
</td>
</tr>
<tr>
@@ -1068,6 +1090,65 @@
@endisset
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Batas batas</strong></td>
<td>
@foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas)
@if ($batas)
<p> - {{ $arah }} : {{ $batas }}</p>
@endif
@endforeach
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Informasi Dinas Tata Ruang</strong>
</td>
<td>
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
<p> - {{ ucfirst(str_replace('_', ' ', $key)) }}:
{{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
</td>
</tr>
@if (!empty($forminspeksi['fakta']['keterangan']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Catatan yang Perlu Diperhatikan</strong></td>
<td>
@php
$keterangan = $forminspeksi['fakta']['keterangan'] ?? '';
if (is_array($keterangan)) {
$keterangan = implode(', ', array_filter($keterangan));
}
@endphp
@if (!empty($keterangan))
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td>{{ $keterangan }}</td>
</tr>
</table>
@endif
</td>
</tr>
@endif
</table>
</tr>
@@ -1214,12 +1295,11 @@
</table>
<div class="section">
<div class="judul">
<h6 class="border" style="text-align: center">
<h6 class="border" style="text-align: center;">
PETA
</h6>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px;">
<div class="photo-container">
@php
$fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
// Memindahkan foto_tempat ke depan jika ada
@@ -1230,26 +1310,36 @@
@endphp
@if (isset($forminspeksi))
@php $counter = 0; @endphp
@foreach ($fotoTypes as $type)
@php
$imagePath = $forminspeksi[$type] ?? null;
@endphp
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
<div style="border: 1px solid #ddd; padding: 10px; text-align: center;">
<img src="{{ storage_path('app/public/' . $imagePath) }}"
alt="{{ $type }}"
style="max-width: 100%; height: auto; margin-bottom: 10px;">
@if ($counter % 2 == 0)
<div class="photo-row clearfix"
>
@endif
<div class="photo-item border"
>
<img src="{{ storage_path('app/public/' . $imagePath) }}" alt="{{ $type }}"
class="photo-image">
<p style="margin: 0; font-size: 14px;">
{{ Str::title(str_replace('_', ' ', $type)) }}
</p>
</div>
@if ($counter % 2 == 1 || $loop->last)
</div>
@endif
@php $counter++; @endphp
@endif
@endforeach
@endif
</div>
</div>
<div class="page-break"></div>
<div class="section">
<div class="judul">
<h6 class="border" style="text-align: center">

View File

@@ -9,7 +9,7 @@
<title>Laporan Penilai jaminan</title>
<style>
body {
font-family: Arial, sans-serif;
font-family: Arial, Helvetica, sans-serif;
}
* {
@@ -201,7 +201,7 @@
@php
$data = '';
$dokument = null;
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$dokument = $dokumen;
}
@@ -210,8 +210,8 @@
<main class="content">
@php
$senior_officer = null;
if ($permohonan->debiture && $permohonan->debiture->documents) {
foreach ($permohonan->debiture->documents as $dokumen) {
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
@@ -497,15 +497,16 @@
@if (isset($detail->details))
@if (json_decode($detail->details))
@foreach (json_decode($detail->details) as $key => $value)
@if (!is_null($value) && $value !== '')
<td style=" padding: 2px;">{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
@if (!is_null($value) && $value !== '')
<td style=" padding: 2px;">
{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
<td style=" padding: 2px;">{{ $value }}
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
<sup>m2</sup>
<td style=" padding: 2px;">{{ $value }}
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
<sup>m2</sup>
@endif
</td>
@endif
</td>
@endif
@endforeach
@endif
@endif
@@ -521,16 +522,16 @@
<tr>
@php
// Ambil nilai hub_cadeb langsung
$hubCadeb = isset($forminspeksi['asset']['hub_cadeb'])
? $forminspeksi['asset']['hub_cadeb']
: null;
// Ambil nilai hub_cadeb langsung
$hubCadeb = isset($forminspeksi['asset']['hub_cadeb'])
? $forminspeksi['asset']['hub_cadeb']
: null;
// Jika nilai adalah array dengan key 'sesuai', ambil nilainya
if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) {
$hubCadeb = $hubCadeb['sesuai'];
}
@endphp
// Jika nilai adalah array dengan key 'sesuai', ambil nilainya
if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) {
$hubCadeb = $hubCadeb['sesuai'];
}
@endphp
<td style="vertical-align: top;"><strong>Hubungan Pemilik Jaminan dengan Debitur</strong>
</td>
<td>
@@ -549,19 +550,20 @@
@php $count++; @endphp
@if ($count % 3 === 0)
</tr><tr>
@endif
@endforeach
@if ($count % 3 !== 0)
@for ($i = 0; $i < 3 - ($count % 3); $i++)
<td></td>
@endfor
@endif
</tr>
</table>
<tr>
@endif
</td>
@endforeach
@if ($count % 3 !== 0)
@for ($i = 0; $i < 3 - ($count % 3); $i++)
<td></td>
@endfor
@endif
</tr>
</table>
@endif
</td>
</tr>
<tr>
@@ -604,7 +606,7 @@
</tr>
</table>
</div>
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@@ -1318,11 +1320,31 @@
</tr>
</table>
</div>
<table class="checkbox-table">
<tr>
<td><input type="checkbox" checked> Tidak Ada</td>
<td><input type="checkbox"> Ada</td>
</tr>
<table>
@if (!empty($lpjData['asuransi_luas_bangunan']))
<tr>
<td width="25%">Luas Bangunan</td>
<td style="">
{{ $lpjData['asuransi_luas_bangunan'] ?? '' }}</td>
</tr>
<tr>
<td style="">Harga</td>
<td style="">Rp.
{{ $lpjData['asuransi_nilai_1'] ?? '' }}</td>
</tr>
<tr>
<td style="">Nilai Pasar Wajar (Rp)</td>
<td style="">Rp.
{{$lpjData['asuransi_nilai_2'] ?? '' }}</td>
</tr>
@else
<tr>
<td>Tidak Ada</td>
</tr>
@endif
</table>
</div>
@@ -1386,33 +1408,54 @@
</td>
</tr>
{{-- Lain-lain --}}
@if (!empty($forminspeksi['fakta']['rute_menuju']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Lain - lain :</strong></td>
<td width="25%" style="vertical-align: top;"><strong>Rute Menuju</strong></td>
<td>
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
<p>{!! nl2br(e($keterangan)) !!}</p>
@endforeach
<p>{{ $forminspeksi['fakta']['rute_menuju'] ?? '' }}</p>
@foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi)
<p>{!! nl2br(e($informasi)) !!}</p>
@endforeach
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi)
<p>{!! nl2br(e($kondisi)) !!}</p>
@endforeach
{!! nl2br(e($forminspeksi['fakta']['rute_menuju'] ?? '')) !!}
</td>
</tr>
@endif
@if (!empty($forminspeksi['fakta']['batas_batas_input']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Batas batas</strong></td>
<td>
@foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas)
@if ($batas)
<p> - {{ $arah }} : {{ $batas }}</p>
@endif
@endforeach
</td>
</tr>
@endif
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] ?? [] as $kondisiLain)
<p>{!! nl2br(e($kondisiLain)) !!}</p>
@endforeach
@if (!empty($forminspeksi['fakta']['kondisi_lingkungan']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Kondisi Lingkungan</strong></td>
<td>
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi)
<p>{!! nl2br(e($kondisi)) !!}</p>
@endforeach
</td>
</tr>
@endif
@if (!empty($forminspeksi['fakta']['informasi_dokument']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Informasi Lain terkait Dokumen</strong></td>
<td>
@foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi)
<p>{!! nl2br(e($informasi)) !!}</p>
@endforeach
</td>
</tr>
@endif
<tr>
<td width="25%" style="vertical-align: top;"><strong>Informasi Dinas Tata Ruang</strong>
</td>
<td>
@php
$informasi = [
'peruntukan',
@@ -1434,10 +1477,32 @@
@endif
@endforeach
</td>
</tr>
@if (!empty($forminspeksi['fakta']['keterangan']))
<tr>
<td width="25%" style="vertical-align: top;"><strong>Catatan yang Perlu Diperhatikan</strong></td>
<td>
@php
$keterangan = $forminspeksi['fakta']['keterangan'] ?? '';
if (is_array($keterangan)) {
$keterangan = implode(', ', array_filter($keterangan));
}
@endphp
@if (!empty($keterangan))
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td>{{ $keterangan }}</td>
</tr>
</table>
@endif
</td>
</tr>
@endif
{{-- Lain-lain --}}
<tr>
<td>2. Informasi Harga:</td>
</tr>
@@ -1518,18 +1583,23 @@
'pesawat' => 'Luas Pesawat',
'kapal' => 'Luas Kapal',
];
// if (strcasecmp($jenisAset, 'RUKO/RUKAN') === 0) {
// $labelNilai['bangunan'] = 'Luas Unit';
// unset($labelNilai['tanah']);
// }
@endphp
@foreach ($labelNilai as $key => $label)
@if (isset($lpjData['luas_' . $key]))
<tr>
<td style="padding: 3px; text-align: right; width:10%; ">
<td style="padding: 3px; text-align: right; width:45%; ">
{{ $label }} {{ $lpjData['luas_' . $key] ?? '' }} m<sup>2</sup>
</td>
<td style="padding: 3px; width:10%;">
<td style="padding: 3px; width:5%;">
<span style="padding-left:20px; padding-right: 20px">X</span> Rp
{{ $lpjData['nilai_' . $key . '_1'] ?? '' }}
</td>
<td style="padding: 3px; text-align: left; width:70%;">
<td style="padding: 3px; text-align: left; width:60%;">
<span style="padding-left:20px; padding-right: 20px"> = </span> Rp
{{ $lpjData['nilai_' . $key . '_2'] ?? '' }}
</td>
@@ -1745,15 +1815,14 @@
</td>
</tr>
</table>
<div class="page-break"></div>
<div class="section">
<div class="judul">
<h6 class="border">
<h6 class="border" style="text-align: center;">
PETA
</h6>
</div>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px;">
<div class="photo-container">
@php
$fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
// Memindahkan foto_tempat ke depan jika ada
@@ -1764,26 +1833,34 @@
@endphp
@if (isset($forminspeksi))
@php $counter = 0; @endphp
@foreach ($fotoTypes as $type)
@php
$imagePath = $forminspeksi[$type] ?? null;
@endphp
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
<div style="border: 1px solid #ddd; padding: 10px; text-align: center;">
<img src="{{ storage_path('app/public/' . $imagePath) }}"
alt="{{ $type }}"
style="max-width: 100%; height: auto; margin-bottom: 10px;">
@if ($counter % 2 == 0)
<div class="photo-row clearfix"
>
@endif
<div class="photo-item border"
>
<img src="{{ storage_path('app/public/' . $imagePath) }}" alt="{{ $type }}"
class="photo-image">
<p style="margin: 0; font-size: 14px;">
{{ Str::title(str_replace('_', ' ', $type)) }}
</p>
</div>
@if ($counter % 2 == 1 || $loop->last)
</div>
@endif
@php $counter++; @endphp
@endif
@endforeach
@endif
</div>
</div>
<div class="page-break"></div>
<div class="section">
<div class="judul">
<h6 class="border">

View File

@@ -109,7 +109,7 @@
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
@@ -224,8 +224,8 @@
</tr>
<tr>
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $document)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $document)
@foreach ($document->detail as $detail)
@if (isset($detail->details))
@php
@@ -281,7 +281,7 @@
@isset($resumeData['fakta']['fakta_positif'])
@foreach ($resumeData['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{{ $item }}</td>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
@endisset
@@ -298,7 +298,7 @@
@isset($resumeData['fakta']['fakta_negatif'])
@foreach ($resumeData['fakta']['fakta_negatif'] as $key => $item)
<tr>
<td>{{ $item }}</td>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
@endisset
@@ -404,7 +404,7 @@
</td>
</tr>
<tr>
<td>{{ $resumeData['keterangan'] ?? '' }}</td>
<td>{!! nl2br(e($resumeData['keterangan'] ?? '' )) !!}</td>
</tr>
</table>

View File

@@ -65,21 +65,26 @@
</div>
</div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
<button type="button" class="btn btn-success" id="saveButton" onclick="submitData()">
<button type="button" class="btn btn-primary" id="saveButton" onclick="submitData()">
<i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Save</span>
<div class="spinner-border spinner-border-sm text-light" role="status" style="display: none;"
id="saveButtonSpinner">
</div>
</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}" class="btn btn-light"
>
<i class="ki-filled ki-printer"></i> Hasil Inspeksi
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
<i class="ki-filled ki-printer"></i> Print Laporan
</a>
@endif
</div>

View File

@@ -47,7 +47,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat Object</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen->pemilik) }}
</span>
@@ -213,8 +213,8 @@
class="input number-format">
</td>
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$luas_tanah = '';
$luas_bangunan = '';
@@ -428,13 +428,19 @@
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
<button type="button" class="btn btn-primary" onclick="saveResume()">
<i class="ki-filled ki-save-2"></i>
Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('documentId'), 'jenis_jaminan_id' => request('jaminanId')]) }}" class="btn btn-light"
>
<i class="ki-filled ki-printer"></i> Hasil Inspeksi
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>

View File

@@ -191,7 +191,7 @@
actions: {
title: 'Action',
render: (item, data) => {
if (data.status === 'done' || data.status === 'proses-laporan' || data.status === 'paparan') {
if (data.status === 'done' || data.status === 'proses-laporan' || data.status === 'paparan' || data.status === 'proses-paparan' || data.status === 'paparan') {
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">

View File

@@ -110,7 +110,7 @@
</div>
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<div class="card">
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -155,7 +155,7 @@
Jenis Jaminan
</label>
<p class="flex text-gray-600 font-medium text-sm w-full">
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
{{ $document->jenisjaminan->name }}
@endforeach
</p>
@@ -279,9 +279,37 @@
<span class="menu-title">LPJ</span>
</a>
</div>
<div class="menu-item">
<a class="menu-link"
onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon">
<i class="ki-outline ki-profile-circle">
</i>
</span>
<span class="menu-title">
CALL REPORT
</span>
</a>
</div>
@endif
@endif
@if ($permohonan->penilaian->jenis_penilaian_id == 2 && $permohonan->tujuanPenilaian->id == 4)
<div class="menu-item">
<a class="menu-link"
onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
<span class="menu-icon">
<i class="ki-outline ki-profile-circle">
</i>
</span>
<span class="menu-title">
CALL REPORT
</span>
</a>
</div>
@endif
</div>
</div>
</div>
@@ -331,14 +359,14 @@
$jenisJaminanId = null;
$inspeksiId = null;
$documentId = null;
foreach ($permohonan->debiture->documents as $item) {
foreach ($permohonan->documents as $item) {
$documentId = $item->id;
}
foreach ($dokumen->inspeksi as $item) {
$inspeksiId = $item->id;
}
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($permohonan->documents as $document)
@if ($document->jenisjaminan)
@php
$jenisJaminanId = $document->jenisjaminan->id;
@@ -566,6 +594,13 @@
});
}
function callReport(permohonanId, documentId, inspeksiId, jaminanId) {
showLoadingSwal('Tunggu ...');
window.location.href =
`{{ route('penilai.call-report') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}`;
}
function savePenilai() {
showLoadingSwal('Mengirim data keserver ...');
$.ajax({

View File

@@ -66,6 +66,11 @@
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="jenis_laporan">
<span class="sort"> <span class="sort-label"> Jenis Laporan </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"> Status Bayar </span>
<span class="sort-icon"> </span> </span>
@@ -211,6 +216,15 @@
return '';
},
},
jenis_laporan: {
title: 'Jenis laporan',
render: (item, data) => {
if(data.penilai.type_penilai){
return `<span class="text-md font-bold capitalize">${data.penilai.type_penilai}</span>`;
}
return '';
},
},
status_bayar: {
title: 'Status Bayar',
render: (item, data) => {

View File

@@ -13,7 +13,7 @@
@include('lpj::component.detail-jaminan', ['backLink' => 'otorisator.' . $dataHeader . '.index'])
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
@@ -115,7 +115,7 @@
$inspeksiId = null;
$documentId = null;
$jenisJaminanId = null;
foreach ($permohonan->debiture->documents as $item) {
foreach ($permohonan->documents as $item) {
foreach ($item->inspeksi as $key => $value) {
$inspeksiId = $value->id;
}
@@ -372,7 +372,7 @@
},
});
$.ajax({
url: `/otorisator/revisi/${dataId}/`,
url: `/otorisator/revisi/${dataId}`,
type: 'POST',
data: {
message: userMessage

View File

@@ -19,7 +19,7 @@
@include('lpj::component.detail-jaminan', ['backLink' => 'otorisator.' . $dataHeader . '.index'])
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<div class="card border border-agi-100 pb-2.5">
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
@@ -146,7 +146,7 @@
$inspeksiId = null;
$documentId = null;
$jenisJaminanId = null;
foreach ($permohonan->debiture->documents as $item) {
foreach ($permohonan->documents as $item) {
foreach ($item->inspeksi as $key => $value) {
$inspeksiId = $item->id;
}

View File

@@ -157,7 +157,7 @@
</h3>
</div>
<div class="card-table scrollable-x-auto pb-3">
@foreach($permohonan->debiture->documents as $dokumen)
@foreach($permohonan->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 }}

View File

@@ -10,8 +10,8 @@
<!-- Luas tanah -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Luas Unit</label>
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$luas_units = 'N/A';
if ($item->detail) {

View File

@@ -10,8 +10,8 @@
<label class="form-label max-w-56">Luas Bangunan</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$luas_bangunan = 'N/A';
if ($item->detail) {

View File

@@ -1,10 +1,9 @@
<div class="grid grid-cols-1 lg:grid-cols-2 gap-5 lg:gap-7.5">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@php
$jaminanId = $dokumen->id;
$currentInspeksi = $inspeksiData[$jaminanId] ?? null;
$tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT', 'MESIN'];
@@ -15,8 +14,7 @@
'url' =>
route('surveyor.inspeksi', [
'id' => $permohonan->id,
]) .
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['data_form']),
],
@@ -29,8 +27,7 @@
'url' =>
route('surveyor.denah', [
'id' => $permohonan->id,
]) .
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['denah_form']),
];
@@ -42,8 +39,7 @@
'url' =>
route('surveyor.foto', [
'id' => $permohonan->id,
]) .
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['foto_form']),
],
@@ -52,8 +48,7 @@
'url' =>
route('surveyor.data-pembanding', [
'id' => $permohonan->id,
]) .
"?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}",
'show' => true,
'icon' => !empty($currentInspeksi['data_pembanding']),
],
@@ -103,8 +98,10 @@
</div>
<div class="flex items-center gap-5">
<div class="flex gap-0.5">
<div class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['data_form']) ? '' : 'btn-light' }}">
<i class="ki-filled {{ !empty($currentInspeksi['data_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
<div
class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['data_form']) ? '' : 'btn-light' }}">
<i
class="ki-filled {{ !empty($currentInspeksi['data_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
</div>
</div>
</div>
@@ -125,8 +122,10 @@
</div>
<div class="flex items-center gap-5">
<div class="flex gap-0.5">
<div class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['foto_form']) ? '' : 'btn-light' }}">
<i class="ki-filled {{ !empty($currentInspeksi['foto_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
<div
class="btn btn-sm btn-icon btn-clear {{ !empty($currentInspeksi['foto_form']) ? '' : 'btn-light' }}">
<i
class="ki-filled {{ !empty($currentInspeksi['foto_form']) ? 'ki-check-circle' : 'ki-notepad-edit' }}"></i>
</div>
</div>
</div>

View File

@@ -22,7 +22,7 @@
<input type="hidden" name="type" value="tanah">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<div class="card">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$dokumentName = $dokumen->jenisJaminan->name;

View File

@@ -127,7 +127,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Alamat Object</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
<span class="text-2sm text-gray-700">
{{ formatAlamat($dokumen->pemilik) }}
</span>

View File

@@ -135,8 +135,8 @@
<label class="form-label max-w-56">Jenis Aset</label>
<div>
<div class="flex flex-wrap items-baseline w-full">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
<p class="text-2sm text-gray-700">{{ $item->jenisJaminan->name }}</p>
<input type="hidden" name="jenis_asset_name" value="{{ $item->jenisJaminan->name }}">
@endforeach
@@ -260,6 +260,7 @@
</div>
</div>
<div class="card">
<div class="card-header bg-agi-50">
<h1 class="text-md font-medium text-gray-900 uppercase">Status</h1>
@@ -267,14 +268,6 @@
<div class="card-body w-full">
@include('lpj::component.detail-jaminan', ['status' => true])
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label class="form-label font-medium max-w-56">Nomor NIB</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nomor_nib" class="input w-full" value="{{ $forminspeksi['asset']['nomor_nib'] ?? ''}}"
placeholder="Masukkan Nomor NIB">
</div>
</div>
<div class=" mx-auto rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan cadeb/debitur dengan Pemilik Jaminan</h1>
@@ -284,7 +277,7 @@
<label class="form-label max-w-56">Pemilik Jaminan</label>
<div>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@php
$hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A';
@endphp

View File

@@ -2,7 +2,11 @@
<div class="card border border-agi-100 w-full ">
<div class="card-header bg-agi-50">
<h3 class="card-title uppercase">
Informasi Dinas Tata Ruang
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
ATURAN TATA KOTA
@else
Informasi Dinas Tata Ruang
@endif
</h3>
</div>
<div class="card-body">
@@ -90,9 +94,7 @@
'index' => 8,
'value' => old(
'nama_petugas',
isset($forminspeksi['fakta']['nama_petugas'])
? $forminspeksi['fakta']['nama_petugas']
: '',
isset($forminspeksi['fakta']['nama_petugas']) ? $forminspeksi['fakta']['nama_petugas'] : '',
),
],
];
@@ -104,9 +106,9 @@
<label class="form-label max-w-56">{{ $item['label'] }}</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
placeholder="Masukkan {{ $item['label'] }}" value="{{ $item['value'] }}">
@error($item['name'])
<em class="alert text-danger text-sm"></em>
<em class="alert text-danger text-sm"></em>
@enderror
</div>
</div>
@@ -122,19 +124,19 @@
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full">
<input id="inputGistaru" type="file" name="foto_gistaru"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'gistaru-preview')">
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'gistaru-preview')">
<img id="gistaru-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_gistaru']) ? $forminspeksi['foto_gistaru'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 30rem;"/>
src="{{ asset('storage/' . (isset($forminspeksi['foto_gistaru']) ? $forminspeksi['foto_gistaru'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_gistaru']) ? '' : 'display: none;' }} max-width: 30rem;" />
</div>
<a href="https://gistaru.atrbpn.go.id/rtronline" type="button" class="btn btn-light"
target="_blank">
target="_blank">
<i class="ki-filled ki-map"></i> Gistaru
</a>
</div>
@@ -150,13 +152,13 @@
<input id="inputBhumi" type="file" name="foto_bhumi"
class="file-input file-input-bordered w-full "
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'bhumi-preview')">
class="file-input file-input-bordered w-full "
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'bhumi-preview')">
<img id="bhumi-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_bhumi']) ? $forminspeksi['foto_bhumi'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_bhumi']) ? ' ' : 'display: none;' }} max-width: 30rem;"/>
src="{{ asset('storage/' . (isset($forminspeksi['foto_bhumi']) ? $forminspeksi['foto_bhumi'] : '')) }}"
alt="Foto Bhumi" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_bhumi']) ? ' ' : 'display: none;' }} max-width: 30rem;" />
</div>
<a href="https://bhumi.atrbpn.go.id/peta" type="button" class="btn btn-light" target="_blank">
<i class="ki-filled ki-map"></i> Bhumi
@@ -173,16 +175,16 @@
<input class="name_rute" type="hidden" name="name_rute" value="rute">
<div class="w-full">
<input id="inputArgisRegion" type="file" name="foto_argis_region"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'argis-region-preview')">
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'argis-region-preview')">
<img id="argis-region-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_argis_region']) ? $forminspeksi['foto_argis_region'] : '')) }}"
alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_argis_region']) ? '' : 'display: none;' }} max-width: 30rem;">
src="{{ asset('storage/' . (isset($forminspeksi['foto_argis_region']) ? $forminspeksi['foto_argis_region'] : '')) }}"
alt="Foto Argis Region" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_argis_region']) ? '' : 'display: none;' }} max-width: 30rem;">
</div>
<a href="{{ $link_url_region->regions->url }}" type="button" class="btn btn-light"
target="_blank">
target="_blank">
<i class="ki-filled ki-map"></i>
{{ $link_url_region->regions->name_url }}
</a>
@@ -197,27 +199,29 @@
<div class="w-full grid gap-5">
<div class="input-group w-full flex gap-2">
<input id="foto_tempat" type="file" name="foto_tempat"
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'foto_tempat-preview')">
class="file-input file-input-bordered w-full"
accept=".jpg,.jpeg,.png,.gif,.bmp,.tiff,.tif,.webp,.svg"
onchange="previewImage(this, 'foto_tempat-preview')">
<button type="button" id="btnCamera" class="btn btn-light" data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
@if($forminspeksi)
@if(is_array($forminspeksi['foto_tempat']))
@if(count($forminspeksi['foto_tempat']) > 0)
<img id="foto_tempat-preview"
src="{{ isset($forminspeksi['foto_tempat']) ? asset('storage/' . (is_array($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'][0] : $forminspeksi['foto_tempat'])) : '' }}"
alt="Foto Tempat" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }} max-width: 30rem;">
@endif
@else
@if ($forminspeksi)
@php
$fotoTempat = $forminspeksi['foto_tempat'] ?? null;
@endphp
@if (is_array($fotoTempat) && count($fotoTempat) > 0)
<img id="foto_tempat-preview"
src="{{ asset('storage/'. (isset($forminspeksi['foto_tempat'])? $forminspeksi['foto_tempat'] : '')) }}"
alt="Foto Tempat" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }} max-width: 30rem;">
src="{{ isset($forminspeksi['foto_tempat']) ? asset('storage/' . (is_array($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'][0] : $forminspeksi['foto_tempat'])) : '' }}"
alt="Foto Tempat" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }}
@else
<img id="foto_tempat-preview"
src="{{ asset('storage/' . (isset($forminspeksi['foto_tempat']) ? $forminspeksi['foto_tempat'] : '')) }}"
alt="Foto Tempat" class="mt-2 max-w-full h-auto"
style="{{ isset($forminspeksi['foto_tempat']) ? '' : 'display: none;' }} max-width: 30rem;">
@endif
@endif
</div>
@@ -236,7 +240,7 @@
<div class="keterangan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea name="keterangan[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old("keterangan.$index", $item) }}</textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
</div>
@@ -244,8 +248,7 @@
@else
<div class="keterangan flex items-center gap-2 mt-2 textarea-group w-full">
<textarea name="keterangan[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3"></textarea>
<button class="btn btn-danger btn-sm remove-btn" type="button"
style="display: none;">
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
<i class="ki-outline ki-trash"></i>
</button>
<em id="error-keterangan" class="alert text-danger text-sm"></em>
@@ -253,7 +256,7 @@
@endif
</div>
<button type="button" onclick="addClonableItem('keterangan-container', 'keterangan')"
class="btn btn-primary btn-sm mt-5 ">
class="btn btn-primary btn-sm mt-5 ">
<i class="ki-outline ki-plus"></i>
</button>
</div>

View File

@@ -20,7 +20,7 @@
@include('lpj::surveyor.components.header')
@include('lpj::surveyor.components.rap')
@else
@foreach ($permohonan->debiture->documents as $dokumen)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@@ -67,6 +67,8 @@
<i class="ki-filled ki-save-2"></i>
<span id="saveButtonText">Save</span>
</button>
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('dokument'), 'jenis_jaminan_id' => request('jenis_jaminan')]) }}"
class="btn btn-info" id="saveButton">
<a href="{{ route('surveyor.print_out_inspeksi', ['permohonan_id' => $permohonan->id, 'dokument_id' => request('dokument'), 'jenis_jaminan_id' => request('jenis_jaminan')]) }}"
class="btn btn-info" id="saveButton">
<i class="ki-filled ki-printer"></i>
@@ -81,7 +83,7 @@
@push('scripts')
<script src="https://cdn.jsdelivr.net/npm/signature_pad@4.1.7/dist/signature_pad.umd.min.js"></script>
<script type="text/javascript">
const datas = @json($forminspeksi);
const datas = @json($forminspeksi ?? '');
console.log(datas);
document.addEventListener('DOMContentLoaded', function() {
@@ -304,125 +306,6 @@
});
function updateAlamatFields(status) {
// Ambil elemen formulir
const addressForm = document.getElementById('alamat_form');
const inputs = addressForm.querySelectorAll('input, select');
const addressInput = document.getElementById('address');
if (status === 'sesuai') {
addressInput.value = "{{ $dokumen->address ?? '' }}";
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.setAttribute('readonly', true);
} else if (element.tagName === 'SELECT') {
element.setAttribute('disabled', true);
element.classList.add('disabled-input')
}
});
addressForm.style.display = 'grid';
addressForm.disabled = true;
addressForm.classList.add('disabled-input')
} else if (status === 'tidak sesuai') {
addressForm.style.display = 'grid';
addressForm.removeAttribute('disabled');
addressForm.classList.remove('disabled-input')
const formInspeksi = @json($forminspeksi);
const addressInput = document.getElementById('address');
if (formInspeksi && formInspeksi.asset && formInspeksi.asset.alamat) {
if (formInspeksi.asset.alamat['tidak sesuai'] && formInspeksi.asset.alamat['tidak sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['tidak sesuai'].address;
} else if (formInspeksi.asset.alamat['sesuai'] && formInspeksi.asset.alamat['sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['sesuai'].address;
} else {
addressInput.value = "";
}
}
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.removeAttribute('readonly');
} else if (element.tagName === 'SELECT') {
element.removeAttribute('disabled');
element.classList.remove('disabled-input')
}
});
}
}
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
const selectedValue = $(`[name="${fieldName}"]:checked`).val();
const inputField = $(`#${inputId}`);
if (visibleValues.includes(selectedValue)) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleCheckboxVisibility(fieldName, inputId, visibleValues = []) {
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
const inputField = $(`#${inputId}`);
// Cek apakah salah satu nilai yang dipilih cocok dengan visibleValues
const shouldShow = visibleValues.some(value => selectedValues.includes(value.toLowerCase()));
if (shouldShow) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleMultipleFields(fieldName, mappings) {
// Ambil semua nilai checkbox yang dicentang
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
// Iterasi melalui setiap mapping
for (const [key, inputId] of Object.entries(mappings)) {
const inputField = $(`#${inputId}`);
// Tampilkan input jika nilai yang relevan dipilih
if (selectedValues.includes(key.toLowerCase())) {
inputField.show();
} else {
inputField.hide().val(''); // Sembunyikan dan reset nilai
}
}
}
function toggleAlamatVisibility(idSesuai, idTidakSesuai, selectedValue) {
// Ambil elemen berdasarkan ID
const alamatSesuai = document.getElementById(idSesuai);
const alamatTidakSesuai = document.getElementById(idTidakSesuai);
// Periksa nilai yang dipilih dan tampilkan elemen yang sesuai
if (selectedValue === 'sesuai') {
alamatSesuai.style.display = 'grid'; // Tampilkan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'none'; // Sembunyikan "Alamat Tidak Sesuai"
} else if (selectedValue === 'tidak sesuai') {
alamatSesuai.style.display = 'none'; // Sembunyikan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'grid'; // Tampilkan "Alamat Tidak Sesuai"
}
}
@@ -466,6 +349,17 @@
console.log(response);
},
error: function(xhr, status, error) {
hideLoadingSwal();
if (status === 'timeout') {
Swal.fire({
title: 'Timeout!',
text: 'Waktu permintaan habis. Silakan coba lagi.',
icon: 'warning',
confirmButtonText: 'OK'
});
return;
}
let errors = xhr.responseJSON?.errors;
$('.alert').text('');
@@ -474,11 +368,16 @@
$(`#error-${key}`).text(value[0]);
toastrErrorBuild(value[0]);
});
// toastrErrorBuild(error);
} else {
Swal.fire({
title: 'Error!',
text: xhr.responseJSON?.message || 'Terjadi kesalahan saat mengirim data.',
icon: 'error',
confirmButtonText: 'OK'
});
}
hideLoadingSwal();
console.log(errors);
}
},
timeout: 10000
});
}
@@ -499,57 +398,6 @@
});
});
});
function updateAnalisa(params) {
const inputMap = {
jenis_asset: 'jenis_asset_tidak_sesuai',
analisa_tanah: 'analisa_tanah_tidak_sesuai',
analisa_unit: 'analisa_luas_unit_tidak_sesuai',
analisa_bangunan: 'analisa_bangunan_tidak_sesuai',
};
// Pastikan elemen ID ada di inputMap
if (!inputMap[params]) {
console.error('Parameter tidak valid:', params);
return;
}
// Ambil nilai berdasarkan parameter
const inputValue = document.getElementById(inputMap[params]).value;
const data = {
[params === 'jenis_asset' ? 'jenis_asset' : params.replace('analisa_', 'luas_')]: inputValue,
types: params
};
$.ajax({
url: '{{ route('surveyor.update_analisa', ['id' => $permohonan->id]) }}',
type: 'POST',
data: data,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
console.log(response);
if (response.success) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.error('Terjadi error:', error);
console.log('Status:', status);
console.log('Response:', xhr.responseText);
if (xhr.responseJSON.message) {
toastrErrorBuild(xhr.responseJSON.message);
} else {
toastrErrorBuild('Terjadi kesalahan');
}
}
});
}
</script>
<script></script>

View File

@@ -201,8 +201,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor polisi</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomo_polisi = isset($details['nomo_polisi']) ? $details['nomo_polisi'] : 'N/A';
@@ -239,8 +239,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Merek</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$merek = isset($details['merek']) ? $details['merek'] : 'N/A';
@@ -278,8 +278,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Warna</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$warna = isset($details['warna']) ? $details['warna'] : 'N/A';
@@ -317,8 +317,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Rangka</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomor_rangka = isset($details['nomor_rangka']) ? $details['nomor_rangka'] : 'N/A';
@@ -355,8 +355,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Mesin</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$details = json_decode($item->detail);
$nomor_mesin = isset($details['nomor_mesin']) ? $details['nomor_mesin'] : 'N/A';

View File

@@ -2,13 +2,10 @@
<!-- Luas Tanah Bangunan -->
<tr>
@php
$cekLuasBangunan = isset(
$forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'],
)
$cekLuasBangunan = isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai'])
? 'tidak sesuai'
: 'sesuai';
$luasBangunan =
$forminspeksi['bangunan']['luas_tanah_bagunan'][$cekLuasBangunan] ?? null;
$luasBangunan = $forminspeksi['bangunan']['luas_tanah_bagunan'][$cekLuasBangunan] ?? null;
@endphp
<td width="25%"><strong>Luas Tanah Bangunan</strong></td>
<td>{{ $luasBangunan }}</td>
@@ -91,3 +88,65 @@
@endif
</td>
</tr>
@if (isset($forminspeksi['bangunan']['spesifikasi_bangunan']) && count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 0)
@foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $bangunanIndex => $bangunan)
<tr>
<td colspan="2"><strong>Spesifikasi Bangunan {{ $bangunanIndex + 1 }}</strong></td>
</tr>
@if (isset($basicData['spekKategoriBangunan']))
@foreach ($basicData['spekKategoriBangunan'] as $index => $spesifikasi)
<tr>
<td style="vertical-align: top;"><strong>{{ $spesifikasi->name }}</strong></td>
<td>
<table class="checkbox-list">
@if (isset($basicData['spekBangunan']))
@php $count = 0; @endphp
<tr>
@foreach ($basicData['spekBangunan'] as $kategori)
@if ($kategori->spek_kategori_bangunan_id == $spesifikasi->id)
@php
$selectedValues = [];
if (isset($bangunan['spek_kategori_bangunan'][$spesifikasi->name])) {
$selectedValues = array_values($bangunan['spek_kategori_bangunan'][$spesifikasi->name]);
}
$lainnyaValue = $bangunan['spek_kategori_bangunan'][$spesifikasi->name]['lainnya'] ?? '';
@endphp
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" class="checkbox-lainnya" style="margin-right: 3px;"
name="spesifikasi_bangunan[{{ $bangunanIndex }}][{{ $spesifikasi->name }}][]"
value="{{ $kategori->name }}"
@if (in_array($kategori->name, $selectedValues)) checked @endif>
{{ $kategori->name }}
@if ($kategori->name == 'Lainnya')
<span class="text-lainnya"
style="display: {{ in_array('Lainnya', $selectedValues) ? 'inline' : 'none' }};">
: {{ $lainnyaValue }}
</span>
@endif
</label>
</td>
@php $count++; @endphp
@if ($count % 3 == 0)
</tr>
<tr>
@endif
@endif
@endforeach
</tr>
@endif
</table>
</td>
</tr>
@endforeach
@endif
@endforeach
@endif
</table>

View File

@@ -0,0 +1,140 @@
<tr>
<td style="text-align: center; border: 1px solid #000;">
G
</td>
<td style="text-align: center; border: 1px solid #000;">
KESIMPULAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td>
<table>
<tr>
<td>
1 KESIMPULAN PENILAI
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Faktor Positif</strong></td>
<td width="100%">
@isset($forminspeksi['fakta']['fakta_positif'])
<table style="width: 100%; border-collapse: collapse;">
@foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@endisset
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Faktor Negatif</strong></td>
<td>
@php
$faktaNegatif = $forminspeksi['fakta']['fakta_negatif'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Lain - lain :</strong></td>
<td>
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
<p>{!! nl2br(e($keterangan)) !!}</p>
@endforeach
<p>{{ $forminspeksi['fakta']['rute_menuju'] ?? '' }}</p>
@foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi)
<p>{!! nl2br(e($informasi)) !!}</p>
@endforeach
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi)
<p>{!! nl2br(e($kondisi)) !!}</p>
@endforeach
@foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas)
@if ($batas)
<p> - {{ $arah }} : {{ $batas }}</p>
@endif
@endforeach
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] ?? [] as $kondisiLain)
<p>{!! nl2br(e($kondisiLain)) !!}</p>
@endforeach
</td>
</tr>
<tr>
<td>
2 CATATAN YANG PERLU DI PERHATIKAN
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"></td>
<td>
<table>
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
<tr>
<td>
<p>{!! nl2br(e($keterangan)) !!}</p>
</td>
</tr>
@endforeach
</table>
</td>
</tr>
<tr>
<td>
3 DINAS TATA KOTA
</td>
</tr>
<tr>
<td>
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
<p> - {{ ucfirst(str_replace('_', ' ', $key)) }}:
{{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
</td>
</tr>
</table>
</td>
</tr>

View File

@@ -0,0 +1,245 @@
<tr>
<td style="text-align: center; border: 1px solid #000;">
F
</td>
<td style="text-align: center; border: 1px solid #000;">
SARANA PELENGKAP DAN LINKUNGAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td>
<table>
<tr>
<td width="25%">Jarak Jalan Utama</td>
<td>{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Jalan Lingkungan</td>
<td>{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Jarak CBD Point</td>
<td>{{ $forminspeksi['lingkungan']['jarak_cbd_point'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Nama CBD Point</td>
<td>{{ $forminspeksi['lingkungan']['nama_cbd_point'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Lebar Perkerasan Jalan</td>
<td>{{ $forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Sarana Pelengkap</strong></td>
<td>
@if (isset($basicData['saranaPelengkap']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['saranaPelengkap'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" name="sarana_pelengkap[]" value="{{ $item->name }}"
{{ isset($forminspeksi['bangunan']['sarana_pelengkap']) && in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']) ? 'checked' : '' }}>
{{ $item->name }}
@if (isset($forminspeksi['bangunan']['sarana_pelengkap']) &&
in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']))
@php
$inputValues = isset($forminspeksi['bangunan']['sarana_pelengkap_input'][$index])
? $forminspeksi['bangunan']['sarana_pelengkap_input'][$index]
: null;
@endphp
@if ($inputValues)
<span class="label-checkbox"> - {{ $inputValues }}</span>
@endif
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Lapisan Perkerasan Jalan</strong></td>
<td>
@if (isset($basicData['perkerasanJalan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['perkerasanJalan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) && in_array($item->name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Lapisan Perkerasan Jalan</strong></td>
<td>
@if (isset($basicData['laluLintasLokasi']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['laluLintasLokasi'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, $forminspeksi['lingkungan']['lalu_lintas']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Golongan Masyarakat Sekitar</strong></td>
<td>
@if (isset($basicData['golMasySekitar']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['golMasySekitar'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, $forminspeksi['lingkungan']['gol_mas_sekitar']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Terletak di Daerah</strong></td>
<td>
@if (isset($basicData['terletakDiArea']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['terletakDiArea'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['terletak_diarea']) && in_array($item->name, $forminspeksi['lingkungan']['terletak_diarea']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Disekitar Lokasi</strong></td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya')
- Kondisi Bangunan:
{{ $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '' }}
, Sifat Bangunan:
{{ $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '' }}
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Merupakan Daerah</strong></td>
<td>
@if (isset($basicData['merupakanDaerah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['merupakanDaerah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['merupakan_daerah']) && in_array($item->name, $forminspeksi['lingkungan']['merupakan_daerah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Fasilitas Umum Dekat Lokasi</strong></td>
<td>
@if (isset($basicData['fasilitasObjek']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['fasilitasObjek'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['fasilitas_dekat_object']) && in_array($item->name, $forminspeksi['lingkungan']['fasilitas_dekat_object']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</table>
</td>
</tr>

View File

@@ -200,15 +200,15 @@
@php
$data = '';
$dokument = null;
foreach ($permohonan->debiture->documents as $dokumen) {
foreach ($permohonan->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$dokument = $dokumen;
}
$data = rtrim($data, ', ');
$senior_officer = null;
if ($permohonan->debiture && $permohonan->debiture->documents) {
foreach ($permohonan->debiture->documents as $dokumen) {
if ($permohonan->debiture && $permohonan->documents) {
foreach ($permohonan->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
@@ -554,290 +554,50 @@
</table>
</td>
</tr>
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
@include('lpj::surveyor.components.print-out.rap')
@else
<tr>
<td style="text-align: center; border: 1px solid #000;">
E
</td>
<td style="text-align: center; text-transform: uppercase; border: 1px solid #000;">
ANALISA {{ $data }}
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
E
</td>
<td style="text-align: center; text-transform: uppercase; border: 1px solid #000;">
ANALISA {{ $data }}
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style="">
</td>
<td style="">
@foreach ($permohonan->debiture->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
@if (isset($formKategori) && $formKategori)
@foreach ($permohonan->documents as $dokumen)
@if ($dokumen->jenisJaminan)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
@endphp
@endif
@foreach ($kategoriUnik as $kategori)
{{-- Tampilkan komponen sesuai kategori jika file komponen ada --}}
@includeIf('lpj::surveyor.components.print-out.' . str_replace('-', '-', $kategori), [
'dokumen' => $dokumen,
])
@endforeach
@endif
@endforeach
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
F
</td>
<td style="text-align: center; border: 1px solid #000;">
SARANA PELENGKAP DAN LINKUNGAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td>
<table>
<tr>
<td width="25%">Jarak Jalan Utama</td>
<td>{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Jalan Lingkungan</td>
<td>{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Jarak CBD Point</td>
<td>{{ $forminspeksi['lingkungan']['jarak_cbd_point'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Nama CBD Point</td>
<td>{{ $forminspeksi['lingkungan']['nama_cbd_point'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td>Lebar Perkerasan Jalan</td>
<td>{{ $forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? 'Tidak Diketahui' }}</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Sarana Pelengkap</strong></td>
<td>
@if (isset($basicData['saranaPelengkap']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['saranaPelengkap'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@if (isset($formKategori) && $formKategori)
@php
$kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori];
$kategoriUnik = array_unique($kategoriArray);
@endphp
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox" name="sarana_pelengkap[]" value="{{ $item->name }}"
{{ isset($forminspeksi['bangunan']['sarana_pelengkap']) && in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']) ? 'checked' : '' }}>
{{ $item->name }}
@if (isset($forminspeksi['bangunan']['sarana_pelengkap']) &&
in_array($item->name, $forminspeksi['bangunan']['sarana_pelengkap']))
@php
$inputValues = isset($forminspeksi['bangunan']['sarana_pelengkap_input'][$index])
? $forminspeksi['bangunan']['sarana_pelengkap_input'][$index]
: null;
@endphp
@if ($inputValues)
<span class="label-checkbox"> - {{ $inputValues }}</span>
@endif
@endif
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Lapisan Perkerasan Jalan</strong></td>
<td>
@if (isset($basicData['perkerasanJalan']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['perkerasanJalan'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) && in_array($item->name, $forminspeksi['lingkungan']['perkerasan_jalan']['perkerasan_jalan']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Lapisan Perkerasan Jalan</strong></td>
<td>
@if (isset($basicData['laluLintasLokasi']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['laluLintasLokasi'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['lalu_lintas']) && in_array($item->name, $forminspeksi['lingkungan']['lalu_lintas']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Golongan Masyarakat Sekitar</strong></td>
<td>
@if (isset($basicData['golMasySekitar']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['golMasySekitar'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['gol_mas_sekitar']) && in_array($item->name, $forminspeksi['lingkungan']['gol_mas_sekitar']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Terletak di Daerah</strong></td>
<td>
@if (isset($basicData['terletakDiArea']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['terletakDiArea'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['terletak_diarea']) && in_array($item->name, $forminspeksi['lingkungan']['terletak_diarea']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Disekitar Lokasi</strong></td>
<td>
<div class="checkbox-item">
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="ya"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya' ? 'checked' : '' }}>
Ya
@if (($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'ya')
- Kondisi Bangunan:
{{ $forminspeksi['lingkungan']['kondisi_bagunan_disekitar_lokasi'] ?? '' }}
, Sifat Bangunan:
{{ $forminspeksi['lingkungan']['sifat_bagunan_disekitar_lokasi'] ?? '' }}
@foreach ($kategoriUnik as $kategori)
{{-- Tampilkan komponen sesuai kategori jika file komponen ada --}}
@includeIf(
'lpj::surveyor.components.print-out.' . str_replace('-', '-', $kategori),
[
'dokumen' => $dokumen,
]
)
@endforeach
@endif
</label>
<label class="checkbox-label">
<input type="radio" name="disekitar_lokasi" value="tidak"
{{ ($forminspeksi['lingkungan']['disekitar_lokasi'] ?? '') == 'tidak' ? 'checked' : '' }}>
Tidak
</label>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Merupakan Daerah</strong></td>
<td>
@if (isset($basicData['merupakanDaerah']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['merupakanDaerah'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['merupakan_daerah']) && in_array($item->name, $forminspeksi['lingkungan']['merupakan_daerah']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td style="vertical-align: top;"><strong>Fasilitas Umum Dekat Lokasi</strong></td>
<td>
@if (isset($basicData['fasilitasObjek']))
<table class="checkbox-list">
<tr>
@foreach ($basicData['fasilitasObjek'] as $index => $item)
@if ($index % 3 == 0 && $index > 0)
</tr>
<tr>
@endif
<td class="checkbox-item">
<label class="checkbox-label">
<input type="checkbox"
{{ isset($forminspeksi['lingkungan']['fasilitas_dekat_object']) && in_array($item->name, $forminspeksi['lingkungan']['fasilitas_dekat_object']) ? 'checked' : '' }}>
{{ $item->name }}
</label>
</td>
@endforeach
</tr>
</table>
@endif
</td>
</tr>
</table>
</td>
</tr>
@endforeach
</td>
</tr>
@endIf
{{-- <tr>
<td style="text-align: center; border: 1px solid #000;">
@@ -848,128 +608,6 @@
</td>
</tr> --}}
<tr>
<td style="text-align: center; border: 1px solid #000;">
G
</td>
<td style="text-align: center; border: 1px solid #000;">
KESIMPULAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td>
<table>
<tr>
<td>
1 KESIMPULAN PENILAI
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Faktor Positif</strong></td>
<td width="100%">
@isset($forminspeksi['fakta']['fakta_positif'])
<table style="width: 100%; border-collapse: collapse;">
@foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@endisset
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"><strong>Faktor Negatif</strong></td>
<td>
@php
$faktaNegatif = $forminspeksi['fakta']['fakta_negatif'] ?? [];
$faktaNegatifFiltered = is_array($faktaNegatif)
? array_filter($faktaNegatif, function ($item) {
return !empty(trim($item));
})
: [];
@endphp
@if (!empty($faktaNegatifFiltered))
<table style="width: 100%; border-collapse: collapse;">
@foreach ($faktaNegatifFiltered as $key => $item)
<tr>
<td>{!! nl2br(e($item)) !!}</td>
</tr>
@endforeach
</table>
@else
<p>Tidak ada faktor negatif yang teridentifikasi.</p>
@endif
</td>
</tr>
<tr>
<td>
2 CATATAN YANG PERLU DI PERHATIKAN
</td>
</tr>
<tr>
<td width="25%" style="vertical-align: top;"></td>
<td>
@php
$keterangan = $forminspeksi['fakta']['keterangan'] ?? '';
if (is_array($keterangan)) {
$keterangan = implode(', ', array_filter($keterangan));
}
@endphp
@if (!empty($keterangan))
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td>{{ $keterangan }}</td>
</tr>
</table>
@endif
</td>
</tr>
<tr>
<td>
3 DINAS TATA KOTA
</td>
</tr>
<tr>
<td>
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
<p> - {{ ucfirst(str_replace('_', ' ', $key)) }}:
{{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="text-align: center;">
@@ -1062,6 +700,11 @@
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
</footer>
<script>
const datas = @json($forminspeksi)
console.log(datas);
</script>
</body>
</html>

View File

@@ -0,0 +1,448 @@
<tr>
<td style="text-align: center; border: 1px solid #000;">
E
</td>
<td style="text-align: center; text-transform: uppercase; border: 1px solid #000;">
PERIZINAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td>
<table>
@if (isset($forminspeksi['perizinan']) && is_array($forminspeksi['perizinan']) && count($forminspeksi['perizinan']) > 0)
@foreach ($forminspeksi['perizinan'] as $perizinan)
<tr>
<td style="width: 20%; padding: 2px;">Perizinan</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $perizinan['perizinan'] }}</td>
</tr>
@endforeach
@endif
@if (isset($forminspeksi['brosur_price_list']) && count($forminspeksi['brosur_price_list']) > 0)
@foreach ($forminspeksi['brosur_price_list'] as $perizinan)
<tr>
<td style="width: 20%; padding: 2px;">Brosur & Pricelist</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $perizinan['jenis'] }}</td>
</tr>
@endforeach
@endif
</table>
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
F
</td>
<td style="text-align: center; border: 1px solid #000;">
DESKRIPSI DEVELOPER
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table style="width: 100%;">
<tr>
<td>{!! nl2br(e($forminspeksi['pengalaman_developer'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['developer_anggota'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@isset($forminspeksi['lainnya_developer'])
@foreach ($forminspeksi['lainnya_developer'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
@endisset
</table>
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
G
</td>
<td style="text-align: center; border: 1px solid #000;">
KONDISI, LINGKUNGAN DAN PROGRESS PEMBANGUNAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table style="width: 100%;">
<tr>
<td>{!! nl2br(e($forminspeksi['kapan_mulai_dibangun'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['kondisi_perumahan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['progres_pembangunan'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['kontraktor'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['lingkungan_sekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['komplek_disekitar'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['pusat_keramaian'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
<tr>
<td>{!! nl2br(e($forminspeksi['transportasi_umum'] ?? 'Data tidak tersedia')) !!}</td>
</tr>
@isset($forminspeksi['lainnya_kondisi'])
@foreach ($forminspeksi['lainnya_kondisi'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
@endisset
</table>
</td>
</tr>
@isset($forminspeksi['partisi'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
H
</td>
<td style="text-align: center; border: 1px solid #000;">
PARTISI BANGUNAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@if (is_array($forminspeksi['partisi']))
@foreach ($forminspeksi['partisi'] as $key => $item)
@if (is_array($item))
<tr>
<td>
{{ $item['nama'] ?? '' }}
</td>
</tr>
<tr>
<td>
{{ $item['value'] ?? '' }}
</td>
</tr>
@endif
@endforeach
@endif
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['jumlah_unit'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
I
</td>
<td style="text-align: center; border: 1px solid #000;">
JUMLAH UNIT, BLOK, TYPE DAN LUAS BANGUNAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['jumlah_unit'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['batas_batas_perumahan'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
J
</td>
<td style="text-align: center; border: 1px solid #000;">
BATAS-BATAS PERUMAHAN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['batas_batas_perumahan'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['fasus_fasum'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
J
</td>
<td style="text-align: center; border: 1px solid #000;">
FASOS/FASUM
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['fasus_fasum'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['progres_penjualan'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
K
</td>
<td style="text-align: center; border: 1px solid #000;">
PROGRES PENJUALAN SAAT INI
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['progres_penjualan'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['harga_unit'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
L
</td>
<td style="text-align: center; border: 1px solid #000;">
HARGA UNIT
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['harga_unit'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['target_market'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
M
</td>
<td style="text-align: center; border: 1px solid #000;">
TARGET MARKET
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['target_market'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['kerjasama_dengan_bank'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
N
</td>
<td style="text-align: center; border: 1px solid #000;">
KERJASAMA DENGAN BANK LAIN
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
<tr>
<td>
{!! nl2br(e($item)) !!}
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset
@isset($forminspeksi['rute_menuju_lokasi'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
O
</td>
<td style="text-align: center; border: 1px solid #000;">
RUTE MENUJU LOKASI
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
<tr>
<td>
{{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}
</td>
</tr>
</table>
</td>
</tr>
@endisset
@if (isset($forminspeksi['fakta']) && is_array($forminspeksi['fakta']))
<tr>
<td style="text-align: center; border: 1px solid #000;">
P
</td>
<td style="text-align: center; border: 1px solid #000;">
ATURAN TATA KOTA
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@php
$informasi = [
'peruntukan',
'kdb',
'kdh',
'gsb',
'max_lantai',
'klb',
'gss',
'pelebaran_jalan',
'nama_petugas',
];
@endphp
@if (isset($forminspeksi['fakta']) && is_array($forminspeksi['fakta']))
@foreach ($informasi as $key)
@if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-')
<p> - {{ ucfirst(str_replace('_', ' ', $key)) }}:
{{ $forminspeksi['fakta'][$key] }}</p>
@endif
@endforeach
@endif
</table>
</td>
</tr>
@endif
@isset($forminspeksi['fakta']['keterangan'])
<tr>
<td style="text-align: center; border: 1px solid #000;">
P
</td>
<td style="text-align: center; border: 1px solid #000;">
CATATAN LAINNYA
</td>
</tr>
<tr>
<td style="text-align: center; border: 1px solid #000;">
</td>
<td style=" border: 1px solid #000;">
<table>
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
<tr>
<td>
<p>{!! nl2br(e($keterangan)) !!}</p>
</td>
</tr>
@endforeach
</table>
</td>
</tr>
@endisset

View File

@@ -10,8 +10,8 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Luas Tanah</label>
<div class="mt-2">
@if (isset($permohonan->debiture->documents))
@foreach ($permohonan->debiture->documents as $item)
@if (isset($permohonan->documents))
@foreach ($permohonan->documents as $item)
@php
$luas_tanah = 'N/A';
if ($item->detail) {

View File

@@ -146,11 +146,10 @@
@push('scripts')
<script>
function jadwal(id) {
function jadwal(id) {
document.getElementById('ids').value = id;
}
function surveyorFreeze(permohonanId, noReg, debitur) {
Swal.fire({
@@ -258,24 +257,40 @@
title: 'Action',
render: (item, data) => {
let actionHtml = '';
// if (data.documents.length > 0) {
if (data.penilaian.waktu_penilaian == null ||
(data.penilaian.waktu_penilaian && data.penilaian.authorized_status == null)) {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary"
data-modal-toggle="#modal_jadwal"
onclick="jadwal(${data.penilaian.id})"
title="Buat Jadwal Kunjungan">
<i class="ki-filled ki-calendar-edit"></i>
</a>
`;
} else {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-warning"
href="surveyor/${data.id}/show?form=inspeksi"
title="Lihat Form Inspeksi">
<i class="ki-outline ki-eye"></i>
</a>
<button type="button"
class="btn btn-sm btn-icon btn-clear btn-info"
onclick="surveyorFreeze('${data.id}', '${data.nomor_registrasi}', '${data.debiture?.name}')"
title="Freeze Survey">
<i class="ki-filled ki-arrow-circle-right"></i>
</button>
`;
}
// } else {
// actionHtml =
// `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`;
// }
if (data.penilaian.waktu_penilaian == null || data.penilaian.waktu_penilaian && data
.penilaian.authorized_status == null) {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-primary" data-modal-toggle="#modal_jadwal" onclick="jadwal(${data.penilaian.id})" title="Buat Jadwal Kunjungan">
<i class="ki-filled ki-calendar-edit"></i>
</a>
`;
} else {
actionHtml += `
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="surveyor/${data.id}/show?form=inspeksi" title="Lihat Form Inspeksi">
<i class="ki-outline ki-eye"></i>
</a>
<button type="button" class="btn btn-sm btn-icon btn-clear btn-info" onclick="surveyorFreeze('${data.id}', '${data.nomor_registrasi}', '${data.debiture?.name}')" title="Freeze Survey">
<i class="ki-filled ki-arrow-circle-right"></i>
</button>
`;
}
return actionHtml;
}
}

View File

@@ -336,4 +336,174 @@
});
});
}
function updateAnalisa(params) {
const inputMap = {
jenis_asset: 'jenis_asset_tidak_sesuai',
analisa_tanah: 'analisa_tanah_tidak_sesuai',
analisa_unit: 'analisa_luas_unit_tidak_sesuai',
analisa_bangunan: 'analisa_bangunan_tidak_sesuai',
};
// Pastikan elemen ID ada di inputMap
if (!inputMap[params]) {
console.error('Parameter tidak valid:', params);
return;
}
// Ambil nilai berdasarkan parameter
const inputValue = document.getElementById(inputMap[params]).value;
const data = {
[params === 'jenis_asset' ? 'jenis_asset' : params.replace('analisa_', 'luas_')]: inputValue,
types: params
};
$.ajax({
url: '{{ route('surveyor.update_analisa', ['id' => $permohonan->id]) }}',
type: 'POST',
data: data,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
console.log(response);
if (response.success) {
// window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
toastrSuccessBuild(response.message);
}
},
error: function(xhr, status, error) {
console.error('Terjadi error:', error);
console.log('Status:', status);
console.log('Response:', xhr.responseText);
if (xhr.responseJSON.message) {
toastrErrorBuild(xhr.responseJSON.message);
} else {
toastrErrorBuild('Terjadi kesalahan');
}
}
});
}
function updateAlamatFields(status) {
// Ambil elemen formulir
const addressForm = document.getElementById('alamat_form');
const inputs = addressForm.querySelectorAll('input, select');
const addressInput = document.getElementById('address');
if (status === 'sesuai') {
addressInput.value = "{{ $dokumen->address ?? '' }}";
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.setAttribute('readonly', true);
} else if (element.tagName === 'SELECT') {
element.setAttribute('disabled', true);
element.classList.add('disabled-input')
}
});
addressForm.style.display = 'grid';
addressForm.disabled = true;
addressForm.classList.add('disabled-input')
} else if (status === 'tidak sesuai') {
addressForm.style.display = 'grid';
addressForm.removeAttribute('disabled');
addressForm.classList.remove('disabled-input')
const formInspeksi = @json($forminspeksi ?? '');
const addressInput = document.getElementById('address');
if (formInspeksi && formInspeksi.asset && formInspeksi.asset.alamat) {
if (formInspeksi.asset.alamat['tidak sesuai'] && formInspeksi.asset.alamat['tidak sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['tidak sesuai'].address;
} else if (formInspeksi.asset.alamat['sesuai'] && formInspeksi.asset.alamat['sesuai'].address) {
addressInput.value = formInspeksi.asset.alamat['sesuai'].address;
} else {
addressInput.value = "";
}
}
inputs.forEach(element => {
if (element.tagName === 'INPUT') {
element.removeAttribute('readonly');
} else if (element.tagName === 'SELECT') {
element.removeAttribute('disabled');
element.classList.remove('disabled-input')
}
});
}
}
function toggleFieldVisibility(fieldName, inputId, visibleValues = []) {
const selectedValue = $(`[name="${fieldName}"]:checked`).val();
const inputField = $(`#${inputId}`);
if (visibleValues.includes(selectedValue)) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleCheckboxVisibility(fieldName, inputId, visibleValues = []) {
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
const inputField = $(`#${inputId}`);
// Cek apakah salah satu nilai yang dipilih cocok dengan visibleValues
const shouldShow = visibleValues.some(value => selectedValues.includes(value.toLowerCase()));
if (shouldShow) {
inputField.show();
} else {
inputField.hide().val('');
}
}
function toggleMultipleFields(fieldName, mappings) {
// Ambil semua nilai checkbox yang dicentang
const selectedValues = $(`[name="${fieldName}[]"]:checked`)
.map(function() {
return $(this).val().toLowerCase(); // Konversi nilai ke huruf kecil
})
.get();
// Iterasi melalui setiap mapping
for (const [key, inputId] of Object.entries(mappings)) {
const inputField = $(`#${inputId}`);
// Tampilkan input jika nilai yang relevan dipilih
if (selectedValues.includes(key.toLowerCase())) {
inputField.show();
} else {
inputField.hide().val(''); // Sembunyikan dan reset nilai
}
}
}
function toggleAlamatVisibility(idSesuai, idTidakSesuai, selectedValue) {
// Ambil elemen berdasarkan ID
const alamatSesuai = document.getElementById(idSesuai);
const alamatTidakSesuai = document.getElementById(idTidakSesuai);
// Periksa nilai yang dipilih dan tampilkan elemen yang sesuai
if (selectedValue === 'sesuai') {
alamatSesuai.style.display = 'grid'; // Tampilkan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'none'; // Sembunyikan "Alamat Tidak Sesuai"
} else if (selectedValue === 'tidak sesuai') {
alamatSesuai.style.display = 'none'; // Sembunyikan "Alamat Sesuai"
alamatTidakSesuai.style.display = 'grid'; // Tampilkan "Alamat Tidak Sesuai"
}
}
</script>

View File

@@ -9,6 +9,22 @@
});
}
Breadcrumbs::for('basicdata.custom-field', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Custom Field', route('basicdata.custom-field.index'));
});
Breadcrumbs::for('basicdata.custom-field.create', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.custom-field');
$trail->push('Tambah Custom Field', route('basicdata.custom-field.create'));
});
Breadcrumbs::for('basicdata.custom-field.edit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata.custom-field');
$trail->push('Edit Custom Field');
});
Breadcrumbs::for('basicdata.jenis-fasilitas-kredit', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');
$trail->push('Jenis Fasilitas Kredit', route('basicdata.jenis-fasilitas-kredit.index'));
@@ -627,6 +643,11 @@
$trail->push('RAP');
});
Breadcrumbs::for('penilai.call-report', function (BreadcrumbTrail $trail) {
$trail->parent('penilai.show');
$trail->push('Call Report');
});
Breadcrumbs::for('sla', function (BreadcrumbTrail $trail) {
$trail->parent('basicdata');

View File

@@ -3,7 +3,8 @@
use Illuminate\Support\Facades\Route;
use Modules\Lpj\Http\Controllers\ActivityController;
use Modules\Lpj\Http\Controllers\ArahMataAnginController;
use Modules\Lpj\Http\Controllers\DebitureController;
use Modules\Lpj\Http\Controllers\CustomFieldController;
use Modules\Lpj\Http\Controllers\DebitureController;
use Modules\Lpj\Http\Controllers\DokumenJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPemilikJaminanController;
use Modules\Lpj\Http\Controllers\HubunganPenghuniJaminanController;
@@ -51,6 +52,16 @@ Route::middleware(['auth'])->group(function () {
Route::get('api/check-penawaran/{nomor_registrasi}', [TenderController::class, 'checkPenawaranExistence']);
Route::name('basicdata.')->prefix('basic-data')->group(function () {
Route::name('custom-field.')->prefix('custom-field')->group(function () {
Route::get('restore/{id}', [CustomFieldController::class, 'restore'])->name('restore');
Route::get('datatables', [CustomFieldController::class, 'dataForDatatables'])->name(
'datatables',
);
Route::get('export', [CustomFieldController::class, 'export'])->name('export');
});
Route::resource('custom-field', CustomFieldController::class);
Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () {
Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore');
Route::get('datatables', [JenisFasilitasKreditController::class, 'dataForDatatables'])->name(
@@ -585,6 +596,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('resume', [PenilaiController::class, 'resume'])->name('resume');
Route::get('memo', [PenilaiController::class, 'memo'])->name('memo');
Route::get('paparan', [PenilaiController::class, 'paparan'])->name('paparan');
Route::get('call-report', [PenilaiController::class, 'call_report'])->name('call-report');
Route::post('storePaparan/{id}', [PenilaiController::class, 'storePaparan'])->name('storePaparan');
Route::get('rap', [PenilaiController::class, 'rap'])->name('rap');
Route::get('/check-status-lpj', [PenilaiController::class, 'checkStatusLpj'])->name('check.status.lpj');