Compare commits
144 Commits
ea4ecd26c5
...
d068593177
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d068593177 | ||
|
|
058fe71173 | ||
|
|
cb05fa3178 | ||
|
|
fb77198ca3 | ||
|
|
7e6482f095 | ||
|
|
42f4a27c54 | ||
|
|
e4cec2a9a2 | ||
|
|
7c6f50265c | ||
|
|
49d1b1ef75 | ||
|
|
410fd6c991 | ||
|
|
fbb8af6fc2 | ||
|
|
28295f5b85 | ||
|
|
61c5690e38 | ||
|
|
fa921add45 | ||
|
|
e19d5af09a | ||
|
|
21a3f560e9 | ||
|
|
d924454547 | ||
|
|
f626aeecfe | ||
|
|
f567e3da40 | ||
|
|
968adae26f | ||
| e328852ffe | |||
|
|
25a652621d | ||
|
|
a846c22479 | ||
|
|
3318e1c91a | ||
|
|
4c4f3dd70b | ||
|
|
8586745b82 | ||
| 64e615760c | |||
|
|
6a159a9015 | ||
|
|
2cb2b7981c | ||
| 05557433d0 | |||
|
|
d2805bdb2f | ||
|
|
7269d2e954 | ||
|
|
776bff338f | ||
|
|
27ef923c27 | ||
|
|
295b2fa183 | ||
|
|
259f63917e | ||
|
|
3b3765a53f | ||
|
|
5a4c8ab3a4 | ||
|
|
90249b83e1 | ||
| 571e19f11c | |||
|
|
51bc603fe7 | ||
|
|
c860daa1d5 | ||
| c6b9003429 | |||
|
|
c4ce75789d | ||
|
|
874d101b21 | ||
|
|
ffd8f72c74 | ||
|
|
2d99b6ab7a | ||
|
|
7ba4b4b2b4 | ||
|
|
30e41c1cab | ||
| ee5c6207bd | |||
|
|
b35a33587b | ||
|
|
05dfaf2c83 | ||
|
|
4ef7c01e29 | ||
| 30178c5179 | |||
|
|
50367edca4 | ||
|
|
5afcc52063 | ||
| 728dacf936 | |||
|
|
fc4d668e6f | ||
|
|
36a8b0bb15 | ||
| 7ad38849f2 | |||
|
|
7c6059d479 | ||
|
|
8fc5f6ec0b | ||
|
|
ac326c0a49 | ||
| 3ab59dfbdc | |||
| 23e117279f | |||
|
|
a5e9f5df0a | ||
|
|
441e2319b1 | ||
|
|
8f2555c0a0 | ||
|
|
e4ca3d7987 | ||
| 2cc70d9163 | |||
|
|
e650cda8fc | ||
|
|
821324e8a1 | ||
|
|
28d579d65d | ||
|
|
1b32105603 | ||
|
|
80c6c82ad1 | ||
|
|
7c4a2659dd | ||
|
|
97ad08bc56 | ||
|
|
ac431a3c3c | ||
|
|
165042db38 | ||
|
|
9e2a9b32d8 | ||
|
|
075567f84c | ||
|
|
c23a8f8c29 | ||
|
|
b260151f4c | ||
|
|
37959a9dae | ||
|
|
41cae8b8f4 | ||
|
|
c17541dbc8 | ||
|
|
a200c1ec52 | ||
|
|
d6e1586b4b | ||
|
|
a7cd063be9 | ||
|
|
9e6ae1f5ad | ||
|
|
108c30e4e1 | ||
|
|
7e5d336469 | ||
|
|
561bf7237e | ||
|
|
9bdbd77f73 | ||
|
|
d5311a944d | ||
|
|
d8f0996184 | ||
|
|
56bb085ed5 | ||
|
|
33cbf385e6 | ||
|
|
a7f2115b56 | ||
|
|
115baf7552 | ||
|
|
8da0880819 | ||
|
|
ad3d3e900d | ||
|
|
cae62db0df | ||
|
|
b9d6e5a95b | ||
|
|
92d0aff9f8 | ||
|
|
d746f53941 | ||
|
|
18cbb0bbc5 | ||
|
|
b8a84bb7e1 | ||
|
|
32de93ef9f | ||
|
|
541ea8e94c | ||
|
|
edb5a65fbf | ||
|
|
a43c65e4c2 | ||
|
|
44a1424349 | ||
|
|
99fb76c5bc | ||
|
|
76209b31b5 | ||
|
|
74701c092d | ||
|
|
81e4ccca3c | ||
|
|
201003e020 | ||
|
|
0c6a4d65dc | ||
|
|
152718526b | ||
|
|
dffaadda3b | ||
|
|
84932aa6f2 | ||
|
|
a1282fbdca | ||
|
|
ebcf0a9a5a | ||
|
|
ef76bb2654 | ||
|
|
09edabffdd | ||
|
|
c0b125b481 | ||
|
|
4c3d39a7ae | ||
|
|
91464d92fe | ||
|
|
0f6ce6ef4a | ||
|
|
348df64afc | ||
|
|
0fa1563cf3 | ||
|
|
c29f73cbce | ||
|
|
dbfbf126bb | ||
|
|
1bfa6e942d | ||
|
|
83778741a2 | ||
|
|
b18c25819e | ||
|
|
2d9cd4e1cb | ||
|
|
84a212a505 | ||
|
|
e00825320c | ||
|
|
c560a015b4 | ||
|
|
df6f7c7fd0 | ||
|
|
c0aafdd827 | ||
|
|
833af13491 |
63
app/Emails/SendJadwalKunjunganEmail.php
Normal file
63
app/Emails/SendJadwalKunjunganEmail.php
Normal 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');
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
49
app/Exports/CustomFieldExport.php
Normal file
49
app/Exports/CustomFieldExport.php
Normal 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,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Models\CustomField;
|
||||
use Modules\Lpj\Models\HolidayCalendar;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
@@ -10,6 +11,10 @@ use Modules\Lpj\Models\JenisDokumen;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Lpj\Models\Laporan;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Village;
|
||||
|
||||
function formatTanggalIndonesia($date, $time = false)
|
||||
{
|
||||
@@ -25,7 +30,7 @@ function formatTanggalIndonesia($date, $time = false)
|
||||
function formatRupiah($number)
|
||||
{
|
||||
$number = (float) $number;
|
||||
return 'Rp ' . number_format($number, 2, ',', '.');
|
||||
return 'Rp ' . number_format($number, 0, ',', '.');
|
||||
}
|
||||
|
||||
|
||||
@@ -352,10 +357,58 @@ function checkRegionUserName($userId)
|
||||
}
|
||||
}
|
||||
|
||||
function getNomorLaporan($permohonanId, $documentId){
|
||||
function getNomorLaporan($permohonanId, $documentId)
|
||||
{
|
||||
$laporan = Laporan::where([
|
||||
'permohonan_id' => $permohonanId,
|
||||
'dokumen_jaminan_id' => $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;
|
||||
}
|
||||
}
|
||||
function getWilayahName($code, $type)
|
||||
{
|
||||
try {
|
||||
$wilayah = null;
|
||||
|
||||
if (!$code) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch ($type) {
|
||||
case 'province':
|
||||
$wilayah = Province::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'city':
|
||||
$wilayah = City::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'district':
|
||||
$wilayah = District::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'village':
|
||||
$wilayah = Village::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,10 +98,10 @@ class ActivityController extends Controller
|
||||
$permohonan = Permohonan::findOrFail($permohonanId);
|
||||
|
||||
// Validasi status permohonan
|
||||
if ($permohonan->status !== 'assign') {
|
||||
if ($permohonan->status !== 'assign' && $permohonan->status !== 'proses-survey') {
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Tidak bisa ganti tim, permohonan ini sudah mengatur jadwal.',
|
||||
'message' => 'Tidak dapat mengganti tim, status permohonan tidak memungkinkan.',
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -366,7 +392,7 @@ class ActivityController extends Controller
|
||||
$q->where('user_id', $id);
|
||||
})
|
||||
->whereHas('permohonan', function ($q) {
|
||||
$q->whereIn('status', ['assign', 'proses-laporan', 'done']);
|
||||
$q->whereIn('status', ['assign', 'proses-laporan', 'done', 'proses-survey', 'request-reschedule', 'reschedule', 'rejected-reschedule', 'approved-reschedule', 'revisi-laporan', 'survey']);
|
||||
});
|
||||
|
||||
|
||||
|
||||
153
app/Http/Controllers/CustomFieldController.php
Normal file
153
app/Http/Controllers/CustomFieldController.php
Normal 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');
|
||||
}
|
||||
}
|
||||
@@ -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 = [];
|
||||
@@ -117,13 +118,13 @@
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||
return redirect()->route('debitur.jaminan.index',['id'=>$id,'pemrohonan_id' => $validate['permohonan_id'] ])->with(
|
||||
'success',
|
||||
'Dokumen Jaminan berhasil ditambahkan',
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return redirect()->route('debitur.jaminan.index', $id)->with('error', 'ggl' . $e->getMessage());
|
||||
return redirect()->route('debitur.jaminan.create',['id'=>$id,'pemrohonan_id' => $validate['permohonan_id'] ])->with('error', $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -5,14 +5,21 @@ namespace Modules\Lpj\Http\Controllers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Http\Controllers\PenilaiController;
|
||||
|
||||
class LaporanController extends Controller
|
||||
{
|
||||
public $user;
|
||||
public $penilaiController;
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
|
||||
|
||||
public function __construct(PenilaiController $penilaiController){
|
||||
$this->penilaiController = $penilaiController;
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
return view('lpj::laporan.index');
|
||||
@@ -33,7 +40,18 @@ class LaporanController extends Controller
|
||||
*/
|
||||
public function show($id) {
|
||||
$permohonan = Permohonan::with([
|
||||
'penilai'])->find($id);
|
||||
'penilai',
|
||||
'dokumenjaminan',
|
||||
])->find($id);
|
||||
|
||||
if ($permohonan->penilai->type_penilai == 'memo') {
|
||||
return $this->penilaiController->print_out($request = new Request(['documentId' => $permohonan->penilai->dokument_id, 'jaminanId' => $permohonan->dokumenjaminan[0]->jenis_jaminan_id, 'permohonanId' => $permohonan->id, 'statusLpj' => 1, 'type' => 'memo']));
|
||||
}
|
||||
|
||||
if ($permohonan->penilai->type_penilai == 'rap') {
|
||||
return $this->penilaiController->print_out($request = new Request(['documentId' => $permohonan->penilai->dokument_id, 'jaminanId' => $permohonan->dokumenjaminan[0]->jenis_jaminan_id, 'permohonanId' => $permohonan->id, 'statusLpj' => 1, 'type' => 'rap']));
|
||||
}
|
||||
|
||||
return view('lpj::laporan.show', compact('permohonan'));
|
||||
}
|
||||
/**
|
||||
@@ -105,7 +123,7 @@ class LaporanController extends Controller
|
||||
$filteredRecords = $query->count();
|
||||
|
||||
// Get the data for the current page
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'debiture.documents.inspeksi'])->get();
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai'])->get();
|
||||
|
||||
// Calculate the page count
|
||||
$pageCount = ceil($totalRecords / $size);
|
||||
|
||||
@@ -23,6 +23,7 @@ use Illuminate\Support\Facades\App;
|
||||
use App\Helpers\Lpj;
|
||||
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
||||
use Modules\Lpj\Models\Authorization;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
|
||||
class PenilaiController extends Controller
|
||||
{
|
||||
@@ -51,17 +52,19 @@ class PenilaiController extends Controller
|
||||
$permohonanId = $request->query('permohonanId');
|
||||
$documentId = $request->query('documentId');
|
||||
$jaminanId = $request->query('jaminanId');
|
||||
|
||||
$basicData = $this->surveyorController->getCommonData();
|
||||
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
|
||||
$penilai = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
|
||||
|
||||
$formFoto = null;
|
||||
if ($inpeksi) {
|
||||
$formFoto = json_decode($inpeksi->foto_form, true);
|
||||
$forminspeksi = json_decode($inpeksi->data_form, true);
|
||||
$formDenah = json_decode($inpeksi->denah_form, true);
|
||||
}
|
||||
|
||||
return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto', 'forminspeksi'));
|
||||
return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto', 'forminspeksi', 'basicData', 'penilai', 'formDenah'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
@@ -90,7 +93,7 @@ class PenilaiController extends Controller
|
||||
'inspeksi_id' => $inspeksiId,
|
||||
],
|
||||
[
|
||||
'type_penilai' => 'standard',
|
||||
'type_penilai' => 'sederhana',
|
||||
]
|
||||
);
|
||||
|
||||
@@ -189,7 +192,7 @@ class PenilaiController extends Controller
|
||||
$data = $this->getDataPermohonanWithPenilaiAndInspeksi($req['permohonanId'], $req['documentId'], $req['jaminanId']);
|
||||
$permohonan = $data['permohonan'];
|
||||
|
||||
$noLpmemo = $this->generateNoLaporan($permohonan, $req['documentId'], 'memo');
|
||||
$nomorLaporan = $this->generateNoLaporan($permohonan, $req['documentId'], 'memo');
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $req['permohonanId'])->where('dokument_id', $req['documentId'])->first();
|
||||
$penilai = Penilai::where('permohonan_id', $req['permohonanId'])->where('dokument_id', $req['documentId'])->first();
|
||||
$provinces = Province::all();
|
||||
@@ -225,7 +228,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'));
|
||||
}
|
||||
|
||||
|
||||
@@ -246,11 +249,13 @@ class PenilaiController extends Controller
|
||||
*/
|
||||
public function edit($id)
|
||||
{
|
||||
return view('lpj::edit');
|
||||
$permohonan = Permohonan::with('debiture')->find($id);
|
||||
return view('lpj::penilai.edit', compact('permohonan'));
|
||||
}
|
||||
|
||||
|
||||
public function storePaparan($id)
|
||||
|
||||
public function storePaparan(Request $request, $id)
|
||||
{
|
||||
try {
|
||||
$permohonan = Permohonan::findOrFail($id);
|
||||
@@ -269,17 +274,20 @@ class PenilaiController extends Controller
|
||||
]
|
||||
);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.'
|
||||
], 200);
|
||||
if ($request->hasFile('file_paparan')) {
|
||||
$file = $request->file('file_paparan');
|
||||
$path = $file->store('public/file_paparan');
|
||||
|
||||
$penilai = Penilai::where('permohonan_id', $id)->first();
|
||||
$penilai->file_paparan = $path;
|
||||
$penilai->save();
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('penilai.show', ['id' => $id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.');
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan saat memproses permohonan.',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
return redirect()->route('penilai.show', ['id' => $id])->with('error', 'Terjadi kesalahan saat memproses permohonan.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,7 +312,7 @@ class PenilaiController extends Controller
|
||||
$forminspeksi = json_decode($inspeksi->data_form, true);
|
||||
}
|
||||
|
||||
return view('lpj::penilai.components.paparan', compact('permohonan', 'formFoto', 'penilai', 'forminspeksi','inspeksi'));
|
||||
return view('lpj::penilai.components.paparan', compact('permohonan', 'formFoto', 'penilai', 'forminspeksi', 'inspeksi'));
|
||||
}
|
||||
|
||||
|
||||
@@ -317,7 +325,8 @@ class PenilaiController extends Controller
|
||||
$jaminanId = $request->query('jaminanId');
|
||||
$provinces = Province::all();
|
||||
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
|
||||
$noLpRAP = $this->generateNoLaporan($permohonan, $documentId, 'rap');
|
||||
$nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'rap');
|
||||
$basicData = $this->surveyorController->getCommonData();
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
|
||||
Penilai::updateOrCreate(
|
||||
[
|
||||
@@ -339,10 +348,123 @@ class PenilaiController extends Controller
|
||||
$forminspeksi = json_decode($inspeksi->data_form, true);
|
||||
$rap = json_decode($resume->rap, true);
|
||||
}
|
||||
// Default: gunakan data dari debitur
|
||||
$debitur = Debiture::find($permohonan->debiture_id);
|
||||
|
||||
return view('lpj::penilai.components.rap-penilai', compact('permohonan', 'rap', 'provinces', 'forminspeksi', 'noLpRAP'));
|
||||
$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.rap-penilai', compact(
|
||||
'permohonan',
|
||||
'rap',
|
||||
'provinces',
|
||||
'cities',
|
||||
'districts',
|
||||
'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, 'call-report');
|
||||
$basicData = $this->surveyorController->getCommonData();
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
|
||||
$call = Penilai::updateOrCreate(
|
||||
[
|
||||
'permohonan_id' => $permohonanId,
|
||||
'dokument_id' => $documentId,
|
||||
'inspeksi_id' => $inspeksiId,
|
||||
],
|
||||
[
|
||||
'type_penilai' => 'call-report',
|
||||
]
|
||||
);
|
||||
|
||||
// $lpjData = null;
|
||||
$callReport = null;
|
||||
if ($call && isset($call->call_report)) {
|
||||
$callReport = json_decode($call->call_report, true);
|
||||
}
|
||||
$forminspeksi = null;
|
||||
if ($forminspeksi) {
|
||||
|
||||
$forminspeksi = json_decode($inspeksi->data_form, 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', 'basicData', 'nomorLaporan', 'forminspeksi', 'cities', 'districts', 'villages', 'cekAlamat', 'callReport'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
@@ -374,7 +496,7 @@ class PenilaiController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
$query->whereRaw('LOWER(status) IN (?, ?, ?)', ['assign','done', 'proses-laporan']);
|
||||
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ?)', ['assign','survey-completed', 'proses-laporan', 'paparan', 'proses-paparan','paparan']);
|
||||
|
||||
if (!Auth::user()->hasRole('administrator')) {
|
||||
$query->whereHas('penilaian.userPenilai', function ($q) {
|
||||
@@ -389,6 +511,8 @@ class PenilaiController extends Controller
|
||||
$order = $request->get('sortOrder');
|
||||
$column = $request->get('sortField');
|
||||
$query->orderBy($column, $order);
|
||||
} else {
|
||||
$query->orderBy('updated_at', 'DESC');
|
||||
}
|
||||
|
||||
// Get the total count of records
|
||||
@@ -597,7 +721,21 @@ class PenilaiController extends Controller
|
||||
|
||||
$penilai = Penilai::where('permohonan_id', $id)->get();
|
||||
|
||||
$rap = $penilai->some(function ($item) {
|
||||
return strtolower($item->type_penilai) === 'rap';
|
||||
});
|
||||
$allComplete = $penilai->every(function ($item) {
|
||||
|
||||
if ($item->type_penilai === 'rap') {
|
||||
return !empty($item->type_penilai) && (
|
||||
!empty($item->memo) ||
|
||||
!empty($item->resume) ||
|
||||
!empty($item->lpj) ||
|
||||
!empty($item->rap)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
return !empty($item->type_penilai) && (
|
||||
!empty($item->memo) ||
|
||||
!empty($item->resume) ||
|
||||
@@ -622,8 +760,7 @@ class PenilaiController extends Controller
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Berhasil Megirim reported ke so',
|
||||
'data' => $penilai,
|
||||
'message' => 'Berhasil Megirim reported ke so'
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
@@ -796,7 +933,8 @@ class PenilaiController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function storeRap(Request $request){
|
||||
public function storeRap(Request $request)
|
||||
{
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$formRequest = new FormSurveyorRequest();
|
||||
@@ -814,7 +952,7 @@ class PenilaiController extends Controller
|
||||
$validated = $formRequest->validateResolved();
|
||||
$result = $this->surveyorController->store($formRequest);
|
||||
|
||||
$data =[
|
||||
$data = [
|
||||
'kepada' => $request->input('kepada'),
|
||||
'dari' => $request->input('dari'),
|
||||
'nomor_rap' => $request->input('nomor_rap'),
|
||||
@@ -850,6 +988,47 @@ class PenilaiController extends Controller
|
||||
|
||||
}
|
||||
|
||||
public function storeCallReport(Request $request)
|
||||
{
|
||||
try {
|
||||
|
||||
// DB::beginTransaction();
|
||||
$validated = $request->validate([
|
||||
'permohonan_id' => 'required|exists:permohonan,id',
|
||||
'dokument_id' => 'required',
|
||||
'inspeksi_id' => 'required',
|
||||
'data' => 'required'
|
||||
]);
|
||||
|
||||
$data = $request->input('data');
|
||||
|
||||
Penilai::updateOrCreate(
|
||||
[
|
||||
'permohonan_id' => $validated['permohonan_id'],
|
||||
'dokument_id' => $validated['dokument_id'],
|
||||
'inspeksi_id' => $validated['inspeksi_id'],
|
||||
],
|
||||
[
|
||||
'call_report' => json_encode($validated['data']),
|
||||
]
|
||||
);
|
||||
// DB::commit();
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Berhasil menyimpan data',
|
||||
'data' => $data
|
||||
], 200);
|
||||
} catch (\Throwable $e) {
|
||||
// DB::rollBack();
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan saat menyimpan data',
|
||||
'error' => $e->getMessage(),
|
||||
'trace' => $e->getTraceAsString()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function print_out(Request $request)
|
||||
@@ -889,22 +1068,24 @@ class PenilaiController extends Controller
|
||||
$memo = json_decode($lpj->memo, true);
|
||||
$resumeData = json_decode($lpj->resume, true);
|
||||
$rap = json_decode($lpj->rap, true);
|
||||
$report = json_decode($lpj->call_report, true);
|
||||
}
|
||||
|
||||
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'];
|
||||
$inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai'] ?? [];
|
||||
|
||||
$alamat = [
|
||||
'address' => $inputAddress['address'] ?? null,
|
||||
'village_code' => $this->getWilayahName($inputAddress['village_code'] ?? null, 'village'),
|
||||
'district_code' => $this->getWilayahName($inputAddress['district_code'] ?? null, 'district'),
|
||||
'city_code' => $this->getWilayahName($inputAddress['city_code'] ?? null, 'city'),
|
||||
'province_code' => $this->getWilayahName($inputAddress['province_code'] ?? null, 'province')
|
||||
'village_code' => getWilayahName($inputAddress['village_code'] ?? null, 'village'),
|
||||
'district_code' => getWilayahName($inputAddress['district_code'] ?? null, 'district'),
|
||||
'city_code' => getWilayahName($inputAddress['city_code'] ?? null, 'city'),
|
||||
'province_code' => getWilayahName($inputAddress['province_code'] ?? null, 'province')
|
||||
];
|
||||
|
||||
$viewLaporan = $this->getViewLaporan($tipeLaporan);
|
||||
try {
|
||||
|
||||
if ($statusLpj) {
|
||||
// $pdf = view('lpj::' . $viewLaporan, compact(
|
||||
$pdf = PDF::loadView('lpj::' . $viewLaporan, compact(
|
||||
'permohonan',
|
||||
'forminspeksi',
|
||||
@@ -920,11 +1101,16 @@ class PenilaiController extends Controller
|
||||
'memo',
|
||||
'resumeData',
|
||||
'tanggalLaporan',
|
||||
'rap'
|
||||
'rap',
|
||||
'report'
|
||||
));
|
||||
|
||||
// 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(
|
||||
@@ -942,7 +1128,8 @@ class PenilaiController extends Controller
|
||||
'memo',
|
||||
'resumeData',
|
||||
'tanggalLaporan',
|
||||
'rap'
|
||||
'rap',
|
||||
'report'
|
||||
));
|
||||
// return $pdf;
|
||||
$cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan);
|
||||
@@ -964,44 +1151,12 @@ 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';
|
||||
}
|
||||
|
||||
public function getWilayahName($code, $type)
|
||||
{
|
||||
try {
|
||||
$wilayah = null;
|
||||
|
||||
if (!$code) {
|
||||
return null;
|
||||
}
|
||||
|
||||
switch ($type) {
|
||||
case 'province':
|
||||
$wilayah = Province::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'city':
|
||||
$wilayah = City::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'district':
|
||||
$wilayah = District::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
case 'village':
|
||||
$wilayah = Village::where('code', $code)->first();
|
||||
return $wilayah ? $wilayah->name : null;
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// mengambil data dari fungsi permohonan di surveyor, dan table
|
||||
@@ -1047,14 +1202,33 @@ class PenilaiController extends Controller
|
||||
// Tentukan tipe berdasarkan kondisi
|
||||
$type = $statusLpj->type_penilai ?? null;
|
||||
|
||||
if ($type === 'memo') {
|
||||
return $this->checkDataMemo($type, $statusLpj);
|
||||
}
|
||||
|
||||
if ($type === 'resume') {
|
||||
return $this->checkDataResume($type, $statusLpj);
|
||||
}
|
||||
|
||||
|
||||
if ($type === 'standard' || $type === 'sederhana') {
|
||||
return $this->checkDataLpj($type, $statusLpj);
|
||||
}
|
||||
|
||||
if ($type === 'rap') {
|
||||
return $this->checkDataRap($type, $statusLpj);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Kembalikan respons dengan tipe yang sesuai
|
||||
return response()->json(['status' => $type]);
|
||||
}
|
||||
|
||||
|
||||
public function generateNoLaporan($permohonan, $documentId, $type)
|
||||
{
|
||||
$typeMapping = ['lpj' => 'LPJ', 'memo' => 'MAK', 'rap' => 'RAP'];
|
||||
{
|
||||
$typeMapping = ['lpj' => 'LPJ', 'memo' => 'MAK', 'rap' => 'RAP', 'call-report' => 'CR'];
|
||||
|
||||
// Cek apakah data sudah ada
|
||||
$laporan = Laporan::where([
|
||||
@@ -1086,7 +1260,242 @@ class PenilaiController extends Controller
|
||||
}
|
||||
|
||||
return $laporan->nomor_laporan;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function checkDataMemo($type, $statusLpj)
|
||||
{
|
||||
// Ambil data JSON dari statusLpj
|
||||
$data = json_decode($statusLpj->memo, true) ?? [];
|
||||
|
||||
$validationRules = [
|
||||
'memo' => [
|
||||
'kepada',
|
||||
'dari',
|
||||
'nomor_memo',
|
||||
'tanggal',
|
||||
'perihal',
|
||||
'jenis_asset_tidak_sesuai',
|
||||
'lokasi.lokasi',
|
||||
'lokasi.province_code',
|
||||
'lokasi.city_code',
|
||||
'lokasi.district_code',
|
||||
'lokasi.village_code',
|
||||
'lokasi.penilai',
|
||||
'terlampir',
|
||||
'hasil_survey',
|
||||
'kesimpulan_saran',
|
||||
],
|
||||
];
|
||||
|
||||
// Validasi data JSON
|
||||
if (isset($validationRules[$type])) {
|
||||
$missingFields = [];
|
||||
|
||||
foreach ($validationRules[$type] as $field) {
|
||||
$keys = explode('.', $field);
|
||||
$value = $data;
|
||||
|
||||
foreach ($keys as $key) {
|
||||
if (!isset($value[$key])) {
|
||||
$missingFields[] = $field;
|
||||
break;
|
||||
}
|
||||
$value = $value[$key];
|
||||
}
|
||||
}
|
||||
|
||||
// Jika ada field yang kosong, kembalikan error
|
||||
if (!empty($missingFields)) {
|
||||
return response()->json([
|
||||
'status' => null,
|
||||
'message' => "Silahkan lengkapi data memo terlebih dahulu.",
|
||||
'missing_fields' => $missingFields,
|
||||
], 400);
|
||||
}
|
||||
}
|
||||
|
||||
// Jika data valid
|
||||
return response()->json([
|
||||
'status' => $type,
|
||||
'message' => "Data memo valid.",
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function checkDataResume($type, $statusLpj)
|
||||
{
|
||||
// Ambil data JSON dari statusLpj
|
||||
$data = json_decode($statusLpj->resume, true) ?? [];
|
||||
|
||||
$validationRules = [
|
||||
'resume' => [
|
||||
'fakta.fakta_positif',
|
||||
'fakta.fakta_negatif',
|
||||
'fisik'
|
||||
],
|
||||
];
|
||||
|
||||
// Validasi data JSON
|
||||
if (isset($validationRules[$type])) {
|
||||
$missingFields = [];
|
||||
|
||||
foreach ($validationRules[$type] as $field) {
|
||||
$keys = explode('.', $field);
|
||||
$value = $data;
|
||||
|
||||
foreach ($keys as $key) {
|
||||
if (!isset($value[$key])) {
|
||||
$missingFields[] = $field;
|
||||
break;
|
||||
}
|
||||
$value = $value[$key];
|
||||
}
|
||||
|
||||
// Validasi khusus untuk array fisik dan sesuai_imb
|
||||
if ($field === 'fisik' || $field === 'sesuai_imb') {
|
||||
if (empty($value) || !is_array($value)) {
|
||||
$missingFields[] = $field;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Validasi struktur data di dalam array
|
||||
foreach ($value as $item) {
|
||||
$requiredKeys = ['sertifikat', 'luas_tanah', 'luas_bangunan', 'nilai'];
|
||||
foreach ($requiredKeys as $requiredKey) {
|
||||
if (!isset($item[$requiredKey])) {
|
||||
$missingFields[] = $field . '.' . $requiredKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Jika ada field yang kosong, kembalikan error
|
||||
if (!empty($missingFields)) {
|
||||
return response()->json([
|
||||
'status' => null,
|
||||
'message' => "Silahkan lengkapi data resume terlebih dahulu.",
|
||||
'missing_fields' => $missingFields,
|
||||
], 400);
|
||||
}
|
||||
}
|
||||
|
||||
// Jika data valid
|
||||
return response()->json([
|
||||
'status' => $type,
|
||||
'message' => "Data resume valid.",
|
||||
]);
|
||||
}
|
||||
|
||||
public function checkDataLpj($type, $statusLpj)
|
||||
{
|
||||
// Ambil data JSON dari statusLpj
|
||||
$data = json_decode($statusLpj->lpj, true) ?? [];
|
||||
|
||||
$validationRules = [
|
||||
'lpj' => [
|
||||
'luas_tanah',
|
||||
'nilai_tanah_1',
|
||||
'nilai_tanah_2',
|
||||
'luas_bangunan',
|
||||
'nilai_bangunan_1',
|
||||
'nilai_bangunan_2',
|
||||
'total_nilai_pasar_wajar',
|
||||
'likuidasi',
|
||||
'likuidasi_nilai_1',
|
||||
'likuidasi_nilai_2',
|
||||
'asuransi_luas_bangunan',
|
||||
'asuransi_nilai_1',
|
||||
'asuransi_nilai_2',
|
||||
'npw_tambahan'
|
||||
],
|
||||
];
|
||||
|
||||
// Validasi data JSON
|
||||
if (isset($validationRules[$type])) {
|
||||
$missingFields = [];
|
||||
|
||||
foreach ($validationRules[$type] as $field) {
|
||||
// Penanganan khusus untuk field yang boleh null
|
||||
if (in_array($field, ['sarana_pelengkap_penilai', 'nilai_sarana_pelengkap_1', 'nilai_sarana_pelengkap_2'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($data[$field])) {
|
||||
$missingFields[] = $field;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Validasi khusus untuk npw_tambahan
|
||||
if ($field === 'npw_tambahan' && is_array($data[$field])) {
|
||||
foreach ($data[$field] as $index => $item) {
|
||||
$requiredKeys = ['name', 'luas', 'nilai_1', 'nilai_2'];
|
||||
foreach ($requiredKeys as $key) {
|
||||
if (!isset($item[$key])) {
|
||||
$missingFields[] = "npw_tambahan[$index].$key";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Jika ada field yang kosong, kembalikan error
|
||||
if (!empty($missingFields)) {
|
||||
return response()->json([
|
||||
'status' => null,
|
||||
'message' => "Silahkan lengkapi data LPJ terlebih dahulu.",
|
||||
'missing_fields' => $missingFields,
|
||||
], 400);
|
||||
}
|
||||
}
|
||||
|
||||
// Jika data valid
|
||||
return response()->json([
|
||||
'status' => $type,
|
||||
'message' => "Data LPJ valid.",
|
||||
]);
|
||||
}
|
||||
|
||||
public function checkDataRap($type, $statusLpj)
|
||||
{
|
||||
// Ambil data JSON dari statusLpj
|
||||
$data = json_decode($statusLpj->rap, true) ?? [];
|
||||
|
||||
$requiredFields = [
|
||||
'dari',
|
||||
'kepada',
|
||||
'perihal',
|
||||
'tanggal',
|
||||
'nomor_rap'
|
||||
];
|
||||
|
||||
// Cek apakah ada field yang kosong
|
||||
$missingFields = [];
|
||||
foreach ($requiredFields as $field) {
|
||||
if (!isset($data[$field]) || empty($data[$field])) {
|
||||
$missingFields[] = $field;
|
||||
}
|
||||
}
|
||||
|
||||
// Jika ada field yang kosong, kembalikan error
|
||||
if (!empty($missingFields)) {
|
||||
return response()->json([
|
||||
'status' => null,
|
||||
'message' => "Silahkan lengkapi data RAP terlebih dahulu.",
|
||||
'missing_fields' => $missingFields
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Jika semua data terisi
|
||||
return response()->json([
|
||||
'status' => $type,
|
||||
'message' => "Data RAP valid."
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -84,12 +84,20 @@ class PenilaianController extends Controller
|
||||
$roles[] = 'surveyor';
|
||||
} else {
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
|
||||
if (isset($validatedData['penilai_surveyor_id'])) {
|
||||
if ($validatedData['penilai_surveyor_id'] == 'pilih_dari_region') {
|
||||
$teams_ids[] = $validatedData['surveyor_penilai_region_id'];
|
||||
$user_ids[] = null;
|
||||
|
||||
} else {
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
$user_ids[] = $validatedData['penilai_surveyor_id'];
|
||||
}
|
||||
|
||||
} else {
|
||||
$user_ids[] = $validatedData['surveyor_id'];
|
||||
|
||||
}
|
||||
|
||||
$roles[] = 'surveyor';
|
||||
@@ -111,10 +119,22 @@ class PenilaianController extends Controller
|
||||
$roles[] = 'penilai';
|
||||
} else {
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
|
||||
|
||||
if (isset($validatedData['penilai_surveyor_id'])) {
|
||||
if ($validatedData['penilai_surveyor_id'] == 'pilih_dari_region') {
|
||||
|
||||
|
||||
$permohonan->update([
|
||||
'region_id' => $validatedData['surveyor_penilai_region_id'],
|
||||
]);
|
||||
|
||||
$teams_ids[] = $validatedData['surveyor_penilai_region_id'];
|
||||
$user_ids[] = null;
|
||||
} else {
|
||||
$teams_ids[] = $validatedData['teams_id'];
|
||||
$user_ids[] = $validatedData['penilai_surveyor_id'];
|
||||
}
|
||||
} else {
|
||||
$user_ids[] = $validatedData['penilai_id'];
|
||||
}
|
||||
@@ -122,6 +142,7 @@ class PenilaianController extends Controller
|
||||
$roles[] = 'penilai';
|
||||
}
|
||||
|
||||
// dd($teams_ids, $user_ids);
|
||||
foreach ($teams_ids as $key => $teams_id) {
|
||||
PenilaianTeam::create([
|
||||
'penilaian_id' => $validatedData['penilaian_id'],
|
||||
@@ -131,12 +152,14 @@ class PenilaianController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') {
|
||||
if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region' || $validatedData['penilai_surveyor_id'] === 'pilih_dari_region') {
|
||||
$status = $permohonan->status;
|
||||
} else {
|
||||
}else {
|
||||
$status = 'assign';
|
||||
}
|
||||
|
||||
|
||||
|
||||
$permohonan->update([
|
||||
'status' => $status,
|
||||
]);
|
||||
@@ -144,6 +167,7 @@ class PenilaianController extends Controller
|
||||
DB::commit();
|
||||
return response()->json(['success' => true, 'message' => 'Data berhasil di-assign.'], 200);
|
||||
} catch (Exception $e) {
|
||||
dd($e);
|
||||
DB::rollBack();
|
||||
|
||||
return response()->json(['error' => $e->getMessage()]);
|
||||
@@ -483,7 +507,7 @@ class PenilaianController extends Controller
|
||||
]);
|
||||
} elseif (Auth::user()->roles[0]->name === 'DD Appraisal') {
|
||||
$permohonan->update([
|
||||
'status' => 'proses-laporan',
|
||||
'status' => 'done',
|
||||
'approval_dd' => Auth::user()->id,
|
||||
'approval_dd_at' => now(),
|
||||
'keterangan' => $request->message,
|
||||
@@ -539,6 +563,10 @@ class PenilaianController extends Controller
|
||||
'approve_so_at' => now(),
|
||||
'keterangan_so' => $request->message,
|
||||
]);
|
||||
|
||||
$permohonan->update([
|
||||
'tanggal_paparan' => $request->tanggalPaparan
|
||||
]);
|
||||
} elseif (Auth::user()->roles[0]->name === 'EO Appraisal') {
|
||||
$status = '2';
|
||||
if (!in_array($permohonan->nilai_plafond_id, [1, 4])) {
|
||||
@@ -564,8 +592,7 @@ class PenilaianController extends Controller
|
||||
]);
|
||||
|
||||
$permohonan->update([
|
||||
'status' => 'paparan',
|
||||
'tanggal_paparan' => $request->tanggalPaparan
|
||||
'status' => 'paparan'
|
||||
]);
|
||||
}
|
||||
break;
|
||||
@@ -677,9 +704,13 @@ class PenilaianController extends Controller
|
||||
'penilaian.userPenilai' => function ($q) {
|
||||
$q->where('role', 'penilai')->with(['user', 'team.regions'])->first();
|
||||
},
|
||||
'penilai',
|
||||
'approveSo',
|
||||
'approveEo',
|
||||
'approveDd'
|
||||
'approveDd',
|
||||
'authorization.approveSo',
|
||||
'authorization.approveEo',
|
||||
'authorization.approveDd'
|
||||
])->get();
|
||||
|
||||
|
||||
@@ -717,13 +748,16 @@ class PenilaianController extends Controller
|
||||
->where('dokument_id', $documentId)
|
||||
->where('inspeksi_id', $inspeksi->id)
|
||||
->first();
|
||||
$penilai = $lpj;
|
||||
|
||||
$forminspeksi = null;
|
||||
$lpjData = null;
|
||||
if ($inspeksi) {
|
||||
$forminspeksi = json_decode($inspeksi->data_form, true);
|
||||
}
|
||||
$noLpmemo = $this->penilaiController->generateNoLaporan($permohonan, $documentId, 'memo');
|
||||
$nomorLaporan = $this->penilaiController->generateNoLaporan($permohonan, $documentId, $lpj->type_penilai);
|
||||
|
||||
|
||||
$formFoto = $formPeta = $cities = $districts = $villages = $memo = null;
|
||||
|
||||
if ($lpj) {
|
||||
@@ -756,7 +790,7 @@ class PenilaianController extends Controller
|
||||
return redirect()->back()->with('error', 'Laporan belum dibuat');
|
||||
}
|
||||
|
||||
return view('lpj::' . $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'resumeData', 'rap', 'memo', 'cities', 'districts', 'villages','formFoto', 'formPeta','noLpmemo'));
|
||||
return view('lpj::' . $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'resumeData', 'rap', 'memo', 'cities', 'districts', 'villages', 'formFoto', 'formPeta', 'nomorLaporan', 'penilai'));
|
||||
}
|
||||
|
||||
private function getViewLaporan($tipe)
|
||||
@@ -825,11 +859,11 @@ class PenilaianController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function revisiLaporan($id, Request $request)
|
||||
public function revisiLaporan(Request $request, $id)
|
||||
{
|
||||
$permohonan = Permohonan::findOrFail($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
'status' => 'revisi-laporan',
|
||||
'keterangan' => $request->message,
|
||||
'submitted_at' => now()
|
||||
]);
|
||||
|
||||
@@ -1,32 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Models\PermohonanPembatalan;
|
||||
use Modules\Lpj\Exports\PermohonanExport;
|
||||
use Modules\Lpj\Http\Requests\PermohonanRequest;
|
||||
use Modules\Lpj\Models\Branch;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
use Modules\Lpj\Models\DokumenJaminan;
|
||||
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||
use Modules\Lpj\Models\NilaiPlafond;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\TujuanPenilaian;
|
||||
use Modules\Lpj\Services\PermohonanHistoryService;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Models\PermohonanPembatalan;
|
||||
use Modules\Lpj\Exports\PermohonanExport;
|
||||
use Modules\Lpj\Http\Requests\PermohonanRequest;
|
||||
use Modules\Lpj\Models\Branch;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
use Modules\Lpj\Models\DokumenJaminan;
|
||||
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||
use Modules\Lpj\Models\NilaiPlafond;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\TujuanPenilaian;
|
||||
use Modules\Lpj\Services\PermohonanHistoryService;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
|
||||
class PermohonanController extends Controller
|
||||
{
|
||||
class PermohonanController extends Controller
|
||||
{
|
||||
public $user;
|
||||
protected $historyService;
|
||||
|
||||
@@ -71,8 +74,8 @@
|
||||
);
|
||||
|
||||
$documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get();
|
||||
if(count($documents)<1){
|
||||
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id'=>$permohonan->id],['id'=> $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
|
||||
if (count($documents) < 1) {
|
||||
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
|
||||
}
|
||||
return redirect()
|
||||
->route('permohonan.index')->with('success', 'Permohonan created successfully');
|
||||
@@ -157,8 +160,8 @@
|
||||
$permohonan->update($validate);
|
||||
|
||||
$documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get();
|
||||
if(count($documents)<1){
|
||||
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id'=>$permohonan->id],['id'=> $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
|
||||
if (count($documents) < 1) {
|
||||
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
|
||||
}
|
||||
|
||||
return redirect()
|
||||
@@ -192,7 +195,7 @@
|
||||
// Retrieve data from the database
|
||||
$query = Permohonan::query();
|
||||
|
||||
if(!Auth::user()->hasAnyRole(['administrator'])) {
|
||||
if (!Auth::user()->hasAnyRole(['administrator'])) {
|
||||
$query = $query->where('branch_id', Auth::user()->branch_id);
|
||||
}
|
||||
|
||||
@@ -260,7 +263,7 @@
|
||||
|
||||
public function export()
|
||||
{
|
||||
return Excel::download(new PermohonanExport, 'permohonan.xlsx');
|
||||
return Excel::download(new PermohonanExport(), 'permohonan.xlsx');
|
||||
}
|
||||
|
||||
public function authorization()
|
||||
@@ -404,4 +407,75 @@
|
||||
return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval');
|
||||
}
|
||||
|
||||
public function storeAproved(Request $request, $id): JsonResponse
|
||||
{
|
||||
$data = [];
|
||||
if (request()->ajax()) {
|
||||
try {
|
||||
$penilaian = Penilaian::findOrFail($id);
|
||||
$penilaian->update([
|
||||
'authorized_status' => 1,
|
||||
]);
|
||||
|
||||
$permohonan = Permohonan::findOrFail($request->permohonan_id);
|
||||
|
||||
$permohonan->update([
|
||||
'status' => 'proses-survey'
|
||||
]);
|
||||
|
||||
$data['status'] = 'success';
|
||||
$data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove';
|
||||
} catch (\Exception $e) {
|
||||
$data['status'] = 'error';
|
||||
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
|
||||
}
|
||||
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message'] = "no ajax request";
|
||||
}
|
||||
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
|
||||
public function storeRescheduleSurvey(Request $request, $id)
|
||||
{
|
||||
try {
|
||||
$validatedData = $request->validate([
|
||||
'permohonan_id' => 'required|exists:permohonan,id',
|
||||
'penilaian_id' => 'nullable',
|
||||
'nomor_registrasi' => 'required',
|
||||
'reschedule_note' => 'required',
|
||||
'reschedule_date' => 'required',
|
||||
]);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$permohonan = Permohonan::findOrFail($request->permohonan_id);
|
||||
$permohonan->update([
|
||||
'status' => 'request-reschedule'
|
||||
]);
|
||||
|
||||
$penilaian = Penilaian::findOrFail($id);
|
||||
|
||||
$penilaian->update([
|
||||
'reschedule_date' => $request->reschedule_date,
|
||||
'reschedule_note' => $request->reschedule_note,
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Proses request reschedule permohonan Nomor registrasi '.$request->nomor_registrasi.' berhasil',
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json([
|
||||
'status' => 'error',
|
||||
'message' => 'Gagal membuat request reschedule: ' . $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Models\JenisPenilaian;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Regions;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Models\JenisPenilaian;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Regions;
|
||||
use Modules\Lpj\Models\DokumenJaminan;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
|
||||
class RegistrasiController extends Controller
|
||||
{
|
||||
class RegistrasiController extends Controller
|
||||
{
|
||||
public $user;
|
||||
|
||||
public function index()
|
||||
@@ -29,7 +31,9 @@
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = Permohonan::query()->where('status', '=', 'preregister');
|
||||
$query = Permohonan::query()
|
||||
->whereIn('status', ['preregister', 'revisi']);
|
||||
|
||||
|
||||
// Apply search filter if provided
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
@@ -93,8 +97,8 @@
|
||||
return view('lpj::registrasi.edit', compact('id'));
|
||||
}
|
||||
|
||||
public function setData(Request $request)
|
||||
: JsonResponse {
|
||||
public function setData(Request $request): JsonResponse
|
||||
{
|
||||
$data = [];
|
||||
$datas = [];
|
||||
|
||||
@@ -126,8 +130,8 @@
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
: JsonResponse {
|
||||
public function update(Request $request, $id): JsonResponse
|
||||
{
|
||||
// init
|
||||
$data = [];
|
||||
$dataku = [];
|
||||
@@ -205,9 +209,7 @@
|
||||
if (1 == $jenis_penilaian) {
|
||||
$validateIt['region'] = ['required'];
|
||||
$messageIt ['region.required'] = 'Silahkan pilih Region';
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$validateIt['sla'] = ['required'];
|
||||
$messageIt ['sla.required'] = 'Silahkan isi SLA';
|
||||
}
|
||||
@@ -228,7 +230,24 @@
|
||||
public function show($id)
|
||||
{
|
||||
$permohonan = Permohonan::find($id);
|
||||
return view('lpj::registrasi.show', compact('id', 'permohonan'));
|
||||
$debitur = Debiture::find($permohonan->debiture_id);
|
||||
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
|
||||
return view('lpj::registrasi.show', compact('id', 'permohonan', 'documents', 'debitur'));
|
||||
}
|
||||
|
||||
public function storeRevisi(Request $request, $id)
|
||||
{
|
||||
try {
|
||||
$permohonan = Permohonan::find($id);
|
||||
|
||||
$permohonan->update([
|
||||
'status' => 'registered'
|
||||
]);
|
||||
|
||||
return redirect()->route('registrasi.index')->with('success', 'Submit Revision successfully');
|
||||
} catch (Exception $e) {
|
||||
return redirect()->route('registrasi.index')->with('error', 'Failed to create permohonan' . $e->getMessage());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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,19 +742,21 @@ class TenderController extends Controller
|
||||
'villages' => $villages,
|
||||
'districts' => $districts,
|
||||
'cities' => $cities,
|
||||
'provinces' => $provinces
|
||||
'provinces' => $provinces,
|
||||
'user' => $user,
|
||||
])->render();
|
||||
|
||||
// Dispatch job untuk mengirim email
|
||||
SendPenawaranTenderJob::dispatch(
|
||||
$kjpps->pluck('emails')->flatten()->toArray(),
|
||||
$penawaran,
|
||||
$permohonan,
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces
|
||||
);
|
||||
// SendPenawaranTenderJob::dispatch(
|
||||
// $kjpps->pluck('emails')->flatten()->toArray(),
|
||||
// $penawaran,
|
||||
// $permohonan,
|
||||
// $villages,
|
||||
// $districts,
|
||||
// $cities,
|
||||
// $provinces,
|
||||
// $user
|
||||
// );
|
||||
|
||||
try {
|
||||
// Proses log email untuk setiap KJPP
|
||||
@@ -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,8 +928,9 @@ 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';
|
||||
$subject = 'Send Penawaran Email';
|
||||
|
||||
$body_pdf = view('lpj::penawaran.kirimEmailKJPP', [
|
||||
'dp1' => $dp1,
|
||||
@@ -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 {
|
||||
|
||||
58
app/Http/Requests/CustomFieldRequest.php
Normal file
58
app/Http/Requests/CustomFieldRequest.php
Normal 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.',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -567,6 +567,7 @@ class FormSurveyorRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'permohonan_id' => 'required',
|
||||
'dokument_id' => 'required',
|
||||
'type' => 'required',
|
||||
'nomor_registrasi' => 'required',
|
||||
'debitur_perwakilan' => 'required|array',
|
||||
@@ -632,10 +633,18 @@ class FormSurveyorRequest extends FormRequest
|
||||
private function getRapRules()
|
||||
{
|
||||
return [
|
||||
'perizinan.*' => 'required',
|
||||
'perizinan_file.*' => 'required',
|
||||
'brosur_price_list.*' => 'required',
|
||||
'brosur_price_file.*' => 'required',
|
||||
|
||||
|
||||
'perizinan' => 'nullable|array',
|
||||
'perizinan.*' => 'nullable|string',
|
||||
'perizinan_file' => 'nullable|array',
|
||||
'perizinan_file.*' => 'nullable|file|mimes:pdf,docx',
|
||||
|
||||
'brosur_price_list' => 'nullable|array',
|
||||
'brosur_price_list.*' => 'nullable|string',
|
||||
'brosur_price_list_file' => 'nullable|array',
|
||||
'brosur_price_list_file.*' => 'nullable|file|mimes:pdf,docx',
|
||||
|
||||
'pengalaman_developer' => 'nullable',
|
||||
'developer_anggota' => 'nullable',
|
||||
'lainnya_developer.*' => 'nullable',
|
||||
@@ -648,7 +657,13 @@ class FormSurveyorRequest extends FormRequest
|
||||
'pusat_keramaian' => 'nullable',
|
||||
'transportasi_umum' => 'nullable',
|
||||
'lainnya_kondisi.*' => 'nullable',
|
||||
'partisi_.*' => 'nullable',
|
||||
|
||||
// Validasi untuk partisi yang diperbarui
|
||||
'partisi' => 'nullable|array',
|
||||
'partisi.*' => 'nullable|array',
|
||||
'partisi.*.nama' => 'nullable|string',
|
||||
'partisi.*.value' => 'nullable|string|max:255',
|
||||
|
||||
'jumlah_unit.*' => 'nullable',
|
||||
'batas_batas_perumahan' => 'nullable',
|
||||
'fasus_fasum.*' => 'nullable',
|
||||
@@ -657,6 +672,7 @@ class FormSurveyorRequest extends FormRequest
|
||||
'target_market.*' => 'nullable',
|
||||
'kerjasama_dengan_bank' => 'nullable',
|
||||
'rute_menuju_lokasi' => 'nullable',
|
||||
'peruntukan' => 'nullable',
|
||||
'kdb' => 'nullable',
|
||||
'kdh' => 'nullable',
|
||||
'gsb' => 'nullable',
|
||||
|
||||
@@ -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' => []]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class PenilaianRequest extends FormRequest
|
||||
'penilai_surveyor_id' => 'nullable',
|
||||
'surveyor_region_id' => 'nullable|required_without_all:penilai_surveyor_id,penilai_region_id,penilai_id,surveyor_id',
|
||||
'penilai_region_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_id,surveyor_id',
|
||||
|
||||
'surveyor_penilai_region_id' => 'nullable',
|
||||
'keterangan' => 'nullable',
|
||||
];
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
26
app/Models/CustomField.php
Normal file
26
app/Models/CustomField.php
Normal 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();
|
||||
// }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,18 +14,7 @@ class Penilai extends Model
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [
|
||||
'dokument_id',
|
||||
'permohonan_id',
|
||||
'inspeksi_id',
|
||||
'kertas_kerja',
|
||||
'resume',
|
||||
'lpj',
|
||||
'type',
|
||||
'memo',
|
||||
'rap',
|
||||
'type_penilai'
|
||||
];
|
||||
protected $guarded = ['id'];
|
||||
|
||||
// protected static function newFactory(): PenilaiFactory
|
||||
// {
|
||||
@@ -41,4 +30,8 @@ class Penilai extends Model
|
||||
return $this->belongsTo(Inspeksi::class);
|
||||
}
|
||||
|
||||
public function penilai_nilai_likuidasi(){
|
||||
return $this->hasMany(PenilaiNilaiLikuidasi::class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class Penilaian extends Model
|
||||
protected $fillable = [
|
||||
'jenis_penilaian_id', 'penilaian_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi',
|
||||
'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at',
|
||||
'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by','waktu_penilaian', 'deskripsi_penilaian'
|
||||
'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by','waktu_penilaian', 'deskripsi_penilaian', 'reschedule_date','reschedule_note','rejected_note'
|
||||
];
|
||||
|
||||
public function jenis_penilaian()
|
||||
|
||||
@@ -217,4 +217,8 @@
|
||||
public function approveSo(){
|
||||
return $this->belongsTo(User::class, 'approval_so', 'id');
|
||||
}
|
||||
|
||||
public function authorization(){
|
||||
return $this->belongsTo(Authorization::class, 'id', 'permohonan_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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('penilai', function (Blueprint $table) {
|
||||
$table->string('file_paparan')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('penilai', function (Blueprint $table) {
|
||||
$table->dropColumn('file_paparan');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -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');
|
||||
}
|
||||
};
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -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');
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('penilaian', function (Blueprint $table) {
|
||||
$table->datetime('reschedule_date')->nullable()->after('waktu_penilaian');
|
||||
$table->text('reschedule_note')->nullable()->after('reschedule_date');
|
||||
$table->text('rejected_note')->nullable()->after('reschedule_note');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('penilaian', function (Blueprint $table) {
|
||||
$table->dropColumn(['reschedule_date', 'reschedule_note', 'rejected_note']);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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('penilai', function (Blueprint $table) {
|
||||
$table->enum('type_penilai', ['memo', 'resume', 'standard', 'sederhana', 'rap', 'call-report'])
|
||||
->nullable()
|
||||
->comment('Jenis penilai: memo, resume, standard, sederhana, rap, call-report')
|
||||
->change();
|
||||
$table->json('call_report')->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('penilai', function (Blueprint $table) {
|
||||
$table->enum('type_penilai', ['memo', 'resume', 'standard', 'sederhana', 'rap'])
|
||||
->nullable()
|
||||
->comment('Jenis penilai: memo, resume, standard, sederhana, rap')
|
||||
->change();
|
||||
|
||||
$table->dropColumn(['type_penilai', 'call_report']);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class () extends Migration {
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('sla_criteria', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name_criteria');
|
||||
$table->string('criteria');
|
||||
$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('sla_criteria');
|
||||
}
|
||||
};
|
||||
16
module.json
16
module.json
@@ -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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="advanced_settings_appearance">
|
||||
<h3 class="card-title">
|
||||
<h3 class="card-title uppercase">
|
||||
Activity Permohonan
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
@@ -54,6 +54,31 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@if ($permohonan->status === 'done')
|
||||
<div class="card border border-agi-100 grow" id="activity_2024">
|
||||
|
||||
<div class="card-header bg-agi-50">
|
||||
<h3 class="card-title uppercase">
|
||||
Hasil Laporan Penilaian
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
<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 {{-- 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 Laporan
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card border border-agi-100 grow" id="activity_2024">
|
||||
@include('lpj::component.history-permohonan')
|
||||
</div>
|
||||
|
||||
@@ -4,35 +4,45 @@
|
||||
{{ Breadcrumbs::render('activity') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
@push('styles')
|
||||
<style>
|
||||
@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);
|
||||
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
|
||||
</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) => `
|
||||
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">
|
||||
<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>
|
||||
</div>`,
|
||||
${
|
||||
['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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<div style="display: none">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
|
||||
<label class="form-label max-w-56">Debitur/Perwakilan</label>
|
||||
|
||||
@if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan']))
|
||||
@@ -73,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 }}">
|
||||
@@ -217,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
|
||||
@@ -342,13 +343,18 @@
|
||||
<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
|
||||
@@ -366,7 +372,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) }}
|
||||
@@ -537,7 +543,7 @@
|
||||
|
||||
|
||||
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
@foreach ($permohonan->documents as $dokumen)
|
||||
@if ($dokumen->jenisJaminan)
|
||||
@php
|
||||
$formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true);
|
||||
@@ -608,8 +614,8 @@
|
||||
<label for="province" class="form-label max-w-56">
|
||||
{{ $labelNilai[$item] }}
|
||||
</label>
|
||||
<input type="text" id="luas_{{ $item }}"
|
||||
class="input w-full currency-format" 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>
|
||||
@@ -618,7 +624,7 @@
|
||||
<label class="input">
|
||||
<i class="">Rp</i>
|
||||
<input type="text" id="nilai_{{ $item }}_1"
|
||||
class="w-full currency-format" name="nilai_{{ $item }}_1"
|
||||
class="w-full currency" name="nilai_{{ $item }}_1"
|
||||
value="{{ old('nilai_' . $item . '_1', $lpjData['nilai_' . $item . '_1'] ?? null) }}"
|
||||
oninput="calculateTotal()">
|
||||
</label>
|
||||
@@ -662,18 +668,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"
|
||||
<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>
|
||||
@@ -711,7 +723,7 @@
|
||||
@if (!empty($lpjData['keterangan_penilai']) && is_array($lpjData['keterangan_penilai']))
|
||||
@foreach ($lpjData['keterangan_penilai'] as $index => $item)
|
||||
<div class="keterangan_penilai flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3">{{ old("keterangan_penilai.$index", $item) }}</textarea>
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2 " placeholder="Masukkan catatan penting" rows="10" >{{ old("keterangan_penilai.$index", $item) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -720,7 +732,7 @@
|
||||
@endforeach
|
||||
@else
|
||||
<div class="keterangan_penilai flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2" placeholder="Masukkan catatan penting" rows="3"></textarea>
|
||||
<textarea name="keterangan_penilai[]" class="textarea mt-2 " placeholder="Masukkan catatan penting" rows="10"></textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -752,7 +764,7 @@
|
||||
<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">
|
||||
<label for="province" class="form-label">Luas Bangunan</label>
|
||||
<input type="text" class="input w-full currency-format" id="asuransi_luas_bangunan"
|
||||
<input type="text" class="input w-full" id="asuransi_luas_bangunan"
|
||||
name="asuransi_luas_bangunan"
|
||||
value="{{ old('asuransi_luas_bangunan', $lpjData['asuransi_luas_bangunan'] ?? null) }}"
|
||||
oninput="calculateTotal()">
|
||||
@@ -762,7 +774,7 @@
|
||||
<label class="input">
|
||||
<i class="">Rp
|
||||
</i>
|
||||
<input type="text" class="input w-full currency-format" id="asuransi_nilai_1"
|
||||
<input type="text" class="input w-full currency" id="asuransi_nilai_1"
|
||||
name="asuransi_nilai_1"
|
||||
value="{{ old('asuransi_nilai_1', $lpjData['asuransi_nilai_1'] ?? null) }}"
|
||||
oninput="calculateTotal()">
|
||||
@@ -787,7 +799,12 @@
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
const datas = @json($forminspeksi);
|
||||
console.log(datas);
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
|
||||
const tambahNPWButton = document.getElementById('tambah-npw');
|
||||
const addPasarWajarContainer = document.getElementById('add_pasar_wajar');
|
||||
let npwCounter = 0;
|
||||
@@ -807,7 +824,7 @@
|
||||
|
||||
<input type="text"
|
||||
id="luas_npw_${npwCounter}"
|
||||
class="input w-full currency-format"
|
||||
class="input w-full "
|
||||
name="luas_npw_${npwCounter}"
|
||||
placeholder="Luas NPW"
|
||||
oninput="calculateTotal()">
|
||||
@@ -819,7 +836,7 @@
|
||||
</i>
|
||||
<input type="text"
|
||||
id="nilai_npw_${npwCounter}_1"
|
||||
class=" w-full currency-format"
|
||||
class=" w-full currency"
|
||||
name="nilai_npw_${npwCounter}_1"
|
||||
placeholder="Harga per meter"
|
||||
oninput="calculateTotal()">
|
||||
@@ -899,7 +916,7 @@
|
||||
</i>
|
||||
<input type="text"
|
||||
id="nilai_npw_${npwCounter}_1"
|
||||
class=" w-full currency-format"
|
||||
class=" w-full currency"
|
||||
name="nilai_npw_${npwCounter}_1"
|
||||
placeholder="Harga per meter"
|
||||
value="${npw.nilai_1 || ''}"
|
||||
@@ -953,13 +970,43 @@
|
||||
|
||||
// Panggil fungsi load NPW saat halaman dimuat
|
||||
loadSavedNPW();
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
formatCurrency(this);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
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"]');
|
||||
|
||||
@@ -974,7 +1021,19 @@
|
||||
let totalNilaiPasarWajar = 0;
|
||||
|
||||
// Perhitungan untuk input yang sudah ada
|
||||
const standardInputs = [{
|
||||
const jenisAsetData = @json($jenisAset);
|
||||
|
||||
// Menentukan input yang akan dihitung berdasarkan jenis aset
|
||||
let standardInputs = [];
|
||||
|
||||
if (jenisAsetData.toUpperCase() === 'RUKO/RUKAN') {
|
||||
standardInputs = [{
|
||||
luas: 'luas_bangunan',
|
||||
nilai: 'nilai_bangunan_1',
|
||||
output: 'nilai_bangunan_2'
|
||||
}];
|
||||
} else {
|
||||
standardInputs = [{
|
||||
luas: 'luas_tanah',
|
||||
nilai: 'nilai_tanah_1',
|
||||
output: 'nilai_tanah_2'
|
||||
@@ -985,6 +1044,7 @@
|
||||
output: 'nilai_bangunan_2'
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
standardInputs.forEach(input => {
|
||||
let luas = parseInput(document.getElementById(input.luas).value);
|
||||
@@ -1056,7 +1116,7 @@
|
||||
confirmButtonText: 'OK'
|
||||
}).then((response) => {
|
||||
if (response.isConfirmed) {
|
||||
// window.location.reload();
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -1083,5 +1143,20 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// Format ke mata uang
|
||||
const formattedValue = new Intl.NumberFormat('id-ID', {
|
||||
style: 'currency',
|
||||
currency: 'IDR'
|
||||
}).format(value);
|
||||
|
||||
input.value = formattedValue;
|
||||
}
|
||||
</script>
|
||||
@include('lpj::surveyor.js.utils')
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<div class="bg-white rounded-lg overflow-hidden shadow-xl transform transition-all min-w-3xl w-[1280px] h-[768px]">
|
||||
<div class="p-4 h-full flex flex-col">
|
||||
<div class="flex justify-between items-center mb-4">
|
||||
<button id="downloadBtn" class="btn btn-primary btn-sm">
|
||||
<button type="button" id="downloadBtn" class="btn btn-primary btn-sm">
|
||||
<i class="ki-duotone ki-cloud-download me-1"><span class="path1"></span><span class="path2"></span></i>
|
||||
Download File
|
||||
</button>
|
||||
<button onclick="closePreviewModal()" class="text-2xl">
|
||||
<button type="button" onclick="closePreviewModal()" class="text-2xl">
|
||||
<i class="ki-filled ki-cross-square text-red-600"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
38
resources/views/component/signature-pad.blade.php
Normal file
38
resources/views/component/signature-pad.blade.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<div class="signature-pad-container mx-auto border p-4 max-w-md sm:max-w-lg lg:max-w-xl">
|
||||
<h3 class="signature-title text-lg sm:text-xl font-semibold mb-2">{{ ucfirst($type) }}</h3>
|
||||
<canvas
|
||||
id="signature-pad-{{ $type }}"
|
||||
class="signature-pad w-full h-48 sm:h-56 bg-white border rounded"
|
||||
></canvas>
|
||||
<input
|
||||
type="text"
|
||||
class="input w-full border p-2 mt-2 rounded"
|
||||
name="name-{{ $type }}"
|
||||
id="name-{{ $type }}"
|
||||
placeholder="Enter your name"
|
||||
/>
|
||||
<div class="button-container flex justify-between py-4">
|
||||
<button
|
||||
type="button"
|
||||
id="save-{{ $type }}"
|
||||
class="btn btn-primary px-4 py-2 rounded "
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
id="clear-{{ $type }}"
|
||||
class="btn btn-light px-4 py-2 rounded"
|
||||
>
|
||||
Clear
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
id="delete-{{ $type }}"
|
||||
class="btn btn-danger text-white px-4 py-2 rounded hover:bg-red-600"
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
<div id="status-{{ $type }}" class="status-message text-sm text-gray-600 mt-2"></div>
|
||||
</div>
|
||||
89
resources/views/custom_fields/create.blade.php
Normal file
89
resources/views/custom_fields/create.blade.php
Normal 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
|
||||
153
resources/views/custom_fields/index.blade.php
Normal file
153
resources/views/custom_fields/index.blade.php
Normal 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
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@method('PUT')
|
||||
@endif
|
||||
@csrf
|
||||
<input type="hidden" name="permohonan_id" value="{{ $document->id ?? request()->get('permohonan_id') }}">
|
||||
<input type="hidden" name="permohonan_id" value="{{ $document->permohonan_id ?? request()->get('permohonan_id') }}">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Debitur
|
||||
@@ -314,38 +314,30 @@
|
||||
</div>
|
||||
|
||||
@if($detail->details)
|
||||
@if($detail->jenisLegalitasJaminan->custom_field)
|
||||
@php $custom_field = json_decode($detail->details,true) @endphp
|
||||
@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">
|
||||
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
||||
{{ getCustomField($key)->label ?? "" }}
|
||||
</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] ?? '' }}">
|
||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" value="{{ json_decode($detail->details)->{getCustomField($key)->name} ?? '' }}">
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@else
|
||||
@if($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">
|
||||
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
||||
{{ getCustomField($key)->label }}
|
||||
</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
|
||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{getCustomField($key)->name}}]" placeholder="...">
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@@ -393,25 +385,17 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($item->custom_field)
|
||||
@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">
|
||||
{{ str_replace('_',' ',$item->custom_field) }}
|
||||
{{ getCustomField($field)->label }}
|
||||
</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
|
||||
<input class="input" type="text" name="custom_field[{{$item->id}}][{{getCustomField($field)->name}}]" placeholder="...">
|
||||
</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.jenis_legalitas_jaminan_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>
|
||||
|
||||
@@ -13,7 +13,13 @@
|
||||
{{ isset($document->id) ? 'Edit' : 'Tambah' }} Data Jaminan
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
@if (Auth::user()->roles[0]->name === 'admin')
|
||||
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
@else
|
||||
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
118
resources/views/emails/jadwal-kunjungan.blade.php
Normal file
118
resources/views/emails/jadwal-kunjungan.blade.php
Normal 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;">© {{ date('Y') }} Sistem Penilaian. All rights reserved.</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -92,7 +92,6 @@
|
||||
@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
|
||||
@@ -114,6 +113,7 @@
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Save
|
||||
|
||||
@@ -79,6 +79,30 @@
|
||||
@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">
|
||||
|
||||
@@ -186,29 +186,41 @@
|
||||
actions: {
|
||||
title: 'Actions',
|
||||
render: (item, data) => {
|
||||
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 inspeksiId = data.documents[0]?.inspeksi[0]?.id || '-';
|
||||
const dokumenID = data.documents[0]?.id || '-';
|
||||
const jenisJaminanID = data.documents[0]?.jenis_jaminan_id || '-';
|
||||
const typePenilaian = data.penilai?.type_penilai || '';
|
||||
const type = data.penilai?.type || '';
|
||||
let laporanButton = '';
|
||||
const resumeButton = `
|
||||
let resumeButton = '';
|
||||
|
||||
if(data.penilai.resume) {
|
||||
resumeButton = `
|
||||
<a href="{{ route('penilai.print-out') }}?permohonanId=${data.id}&documentId=${dokumenID}&inspeksiId=${inspeksiId}&jaminanId=${jenisJaminanID}&statusLpj=0" class="btn btn-sm btn-success">
|
||||
Resume
|
||||
</a>`;
|
||||
}
|
||||
|
||||
if(data.nilai_liquidasi==null) {
|
||||
laporanButton = `
|
||||
<a href="laporan/${data.id}" class="btn btn-sm btn-dark">
|
||||
Input NL
|
||||
Laporan
|
||||
</a>`;
|
||||
}
|
||||
|
||||
console.log(data.nilai_liquidasi);
|
||||
if(data.status_bayar=="sudah_bayar" && data.nilai_liquidasi >0) {
|
||||
|
||||
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" class="btn btn-sm btn-dark">
|
||||
<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}`;
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
Liquidasi (%)
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="liquidasi" max="100" min="0" id="liquidasi" class="persen input w-full @error('liquidasi') border-danger bg-danger-light @enderror" value="{{ old('liquidasi', $lpj->liquidasi ?? '') }}" placeholder="Masukkan Persentase Liquidasi">
|
||||
<input type="text" name="liquidasi" max="100" min="0" id="liquidasi" class="persen input w-full @error('liquidasi') border-danger bg-danger-light @enderror" value="{{ old('liquidasi', $lpj->likuidasi ?? '') }}" placeholder="Masukkan Persentase Liquidasi">
|
||||
@error('liquidasi')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
@@ -71,7 +71,7 @@
|
||||
Nilai Liquidasi
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" name="nilai_liquidasi" id="nilai_liquidasi" class="currency input w-full @error('nilai_liquidasi') border-danger bg-danger-light @enderror" placeholder="Nilai Liquidasi">
|
||||
<input type="text" name="nilai_liquidasi" id="nilai_liquidasi" class="currency input w-full @error('nilai_liquidasi') border-danger bg-danger-light @enderror" placeholder="Nilai Liquidasi" value="{{ old('nilai_liquidasi', $lpj->likuidasi_nilai_2 ?? '') }}">
|
||||
@error('nilai_liquidasi')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 100%; border: 1px solid #000; text-align: center;">
|
||||
ANALISA UNIT
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
@php
|
||||
$cekLuas = isset($forminspeksi['luas_unit']['tidak sesuai'])
|
||||
? 'tidak sesuai'
|
||||
: 'sesuai';
|
||||
|
||||
$luas = $forminspeksi['luas_unit'][$cekLuas] ?? null;
|
||||
@endphp
|
||||
<td style="width: 25%; padding: 2px; vertical-align: top;">Luas Unit</td>
|
||||
<td style="width: 1%; padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="width: 74%; padding: 2px; vertical-align: top;">{{ $luas ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 25%; padding: 2px; vertical-align: top;">Bentuk Unit</td>
|
||||
<td style="width: 1%; padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="width: 74%; padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$bentukUnit = $forminspeksi['bentuk_unit'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($bentukUnit))
|
||||
{{ implode(', ', $bentukUnit) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Kondisi Unit</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$bentukUnit = $forminspeksi['kondisi_unit'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($bentukUnit))
|
||||
{{ implode(', ', $bentukUnit) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Posisi Unit</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$bentukUnit = $forminspeksi['posisi_unit'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($bentukUnit))
|
||||
{{ implode(', ', $bentukUnit) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">View Unit</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$bentukUnit = $forminspeksi['view'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($bentukUnit))
|
||||
{{ implode(', ', $bentukUnit) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
145
resources/views/penilai/components/analisa/bangunan.blade.php
Normal file
145
resources/views/penilai/components/analisa/bangunan.blade.php
Normal file
@@ -0,0 +1,145 @@
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 100%; border: 1px solid #000; text-align: center;">
|
||||
ANALISA BANGUNAN
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style=" width: 25%; padding: 2px; vertical-align: top;">Luas Bangunan</td>
|
||||
<td style=" width:1%; padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$luasTanahBangunan =
|
||||
$forminspeksi['bangunan']['luas_tanah_bagunan'];
|
||||
|
||||
$output = !empty($luasTanahBangunan['sesuai'])
|
||||
? $luasTanahBangunan['sesuai']
|
||||
: (!empty($luasTanahBangunan['tidak sesuai'])
|
||||
? $luasTanahBangunan['tidak sesuai']
|
||||
: '-');
|
||||
@endphp
|
||||
|
||||
{{ $output }} <sup>m2</sup>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Jenis Bangunan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$jenisBangunan =
|
||||
$forminspeksi['bangunan']['jenis_bangunan'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($jenisBangunan))
|
||||
{{ implode(', ', $jenisBangunan) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Kondisi Bangunan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$kondisiBangunan =
|
||||
$forminspeksi['bangunan']['kondisi_bangunan'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($kondisiBangunan))
|
||||
{{ implode(', ', $kondisiBangunan) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Sifat Bangunan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$sifatBangunan =
|
||||
$forminspeksi['bangunan']['sifat_bangunan'][0] ?? '-';
|
||||
$sifatBangunanInput =
|
||||
$forminspeksi['bangunan']['sifat_bangunan_input'];
|
||||
|
||||
// Filter input yang tidak null
|
||||
$inputTambahan = array_filter($sifatBangunanInput, function (
|
||||
$value,
|
||||
) {
|
||||
return $value !== null && $value !== '';
|
||||
});
|
||||
|
||||
// Gabungkan sifat bangunan dengan input tambahan
|
||||
$output = $sifatBangunan;
|
||||
|
||||
if (!empty($inputTambahan)) {
|
||||
$output .= ' (' . implode(', ', $inputTambahan) . ')';
|
||||
}
|
||||
@endphp
|
||||
|
||||
{{ $output }}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@if (isset($forminspeksi['bangunan']['spesifikasi_bangunan']) && count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 0)
|
||||
@foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $bangunanIndex => $bangunan)
|
||||
@if (count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 1)
|
||||
<tr>
|
||||
<td colspan="2">Spesifikasi Bangunan {{ $bangunanIndex + 1 }}</td>
|
||||
</tr>
|
||||
@else
|
||||
<tr>
|
||||
<td colspan="2">Spesifikasi Bangunan</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if (isset($basicData['spekKategoriBangunan']))
|
||||
@foreach ($basicData['spekKategoriBangunan'] as $index => $spesifikasi)
|
||||
@if (!empty($spesifikasi->name)) <!-- Hanya tampilkan jika 'name' tidak kosong -->
|
||||
<tr>
|
||||
<td style="vertical-align: top;">{{ $spesifikasi->name }}</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
@php
|
||||
$selectedValue = null;
|
||||
$lainnyaValue = null;
|
||||
|
||||
if (isset($bangunan['spek_kategori_bangunan'][$spesifikasi->name])) {
|
||||
$selectedValues = $bangunan['spek_kategori_bangunan'][$spesifikasi->name];
|
||||
|
||||
// Ambil nilai pertama (bukan key) dari array
|
||||
$selectedValue = array_values(array_filter($selectedValues, function ($key) {
|
||||
return $key !== 'lainnya'; // Filter key lainnya
|
||||
}, ARRAY_FILTER_USE_KEY))[0] ?? null;
|
||||
|
||||
$lainnyaValue = $selectedValues['lainnya'] ?? null;
|
||||
}
|
||||
@endphp
|
||||
|
||||
@if ($selectedValue)
|
||||
<span>
|
||||
{{ $selectedValue }}
|
||||
@if ($selectedValue === 'Lainnya' && $lainnyaValue)
|
||||
: {{ $lainnyaValue }}
|
||||
@endif
|
||||
</span>
|
||||
@else
|
||||
<span>—</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
</table>
|
||||
104
resources/views/penilai/components/analisa/fakta.blade.php
Normal file
104
resources/views/penilai/components/analisa/fakta.blade.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<table class="judul" style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 100%; border: 1px solid #000; text-align: center;">
|
||||
ANALISA FAKTA
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%">
|
||||
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Faktor Positif</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@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>
|
||||
|
||||
{{-- Faktor Negatif --}}
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Faktor Negatif</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@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>
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['rute_menuju']))
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Rute Menuju</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
{!! nl2br(e($forminspeksi['fakta']['rute_menuju'] ?? '')) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['batas_batas_input']))
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Batas batas</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas)
|
||||
@if ($batas)
|
||||
<p> - {{ $arah }} : {{ $batas }}</p>
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if (!empty($forminspeksi['fakta']['kondisi_lingkungan']))
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Kondisi Lingkungan</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi)
|
||||
{!! nl2br(e($kondisi)) !!}
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if (!empty($forminspeksi['fakta']['informasi_dokument']))
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Informasi Lain terkait
|
||||
Dokumen</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi)
|
||||
{!! nl2br(e($informasi)) !!}
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
|
||||
</table>
|
||||
@@ -0,0 +1,55 @@
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td width="25%" style="vertical-align: top;">Informasi Dinas Tata Ruang
|
||||
</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@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;">Catatan yang Perlu
|
||||
Diperhatikan</td>
|
||||
<td width="1%" style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
@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>{!! nl2br(e($keterangan)) !!}</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
129
resources/views/penilai/components/analisa/lingkungan.blade.php
Normal file
129
resources/views/penilai/components/analisa/lingkungan.blade.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 100%; border: 1px solid #000; text-align: center;">
|
||||
ANALISA LINGKUNGAN
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%">
|
||||
@php
|
||||
$lingkungan = $forminspeksi['lingkungan'];
|
||||
$fasilitas = $lingkungan['fasilitas_dekat_object'] ?? [];
|
||||
$fasilitasInput = $lingkungan['fasilitas_dekat_object_input'] ?? [];
|
||||
@endphp
|
||||
|
||||
<tr>
|
||||
<td style=" width:25%; padding: 2px; vertical-align: top;">Jarak Jalan Utama</td>
|
||||
<td style=" width:1%; padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['jarak_jalan_utama'] ?? '-' }} m</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Jalan Lingkungan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['jalan_linkungan'] ?? '-' }} m</td>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Jarak CBD</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['jarak_cbd_point'] ?? '-' }} m
|
||||
({{ $lingkungan['nama_cbd_point'] ?? '-' }})</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Lebar Perkerasan Jalan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['lebar_perkerasan_jalan'] ?? '-' }} m</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Perkerasan Jalan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:
|
||||
</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
{{ implode(', ', $lingkungan['perkerasan_jalan']['perkerasan_jalan'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Lalu Lintas</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ implode(', ', $lingkungan['lalu_lintas'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Golongan Masyarakat Sekitar</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ implode(', ', $lingkungan['gol_mas_sekitar'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Tingkat Keramaian</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
{{ implode(', ', $lingkungan['tingkat_keramaian'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Terletak di Area</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
{{ implode(', ', $lingkungan['terletak_diarea']['terletak_diarea'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Kondisi Bangunan Sekitar</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['kondisi_bagunan_disekitar_lokasi'] ?? '-' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Sifat Bangunan Sekitar</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $lingkungan['sifat_bagunan_disekitar_lokasi'] ?? '-' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@if ($lingkungan['dekat_makam'] == 'ya')
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Dekat Makam</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">Ya, Jarak {{ $lingkungan['jarak_makam'] ?? '-' }} m
|
||||
({{ $lingkungan['nama_makam'] ?? '-' }})
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($lingkungan['dekat_tps'] == 'ya')
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Dekat TPS</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">Ya, Jarak {{ $lingkungan['jarak_tps'] ?? '-' }} m
|
||||
({{ $lingkungan['nama_tps'] ?? '-' }})</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Daerah</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
{{ implode(', ', $lingkungan['merupakan_daerah'] ?? ['-']) }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@if (!empty($fasilitas))
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Fasilitas Dekat Objek</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@foreach ($fasilitas as $fas)
|
||||
{{ $fas }}
|
||||
@if (isset($fasilitasInput[$fas]))
|
||||
({{ $fasilitasInput[$fas] }})
|
||||
@endif
|
||||
@if (!$loop->last)
|
||||
,
|
||||
@endif
|
||||
@endforeach
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
147
resources/views/penilai/components/analisa/tanah.blade.php
Normal file
147
resources/views/penilai/components/analisa/tanah.blade.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 100%; border: 1px solid #000; text-align: center;">
|
||||
ANALISA TANAH
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
@php
|
||||
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai';
|
||||
|
||||
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
|
||||
@endphp
|
||||
<td style="width: 25%; padding: 2px; vertical-align: top;">Luas Tanah</td>
|
||||
<td style=" width:1%; padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="width: 74%; padding: 2px; vertical-align: top;">{{ $luas ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@php
|
||||
$cekMataAngin = isset($forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'])
|
||||
? 'tidak sesuai'
|
||||
: 'sesuai';
|
||||
|
||||
$Arah = $forminspeksi['tanah']['hadap_mata_angin'][$cekMataAngin] ?? null;
|
||||
@endphp
|
||||
<td style="padding: 2px; vertical-align: top;">Hadap Mata Angin</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">{{ $Arah ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Bentuk Tanah</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$bentukTanah = isset($forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah'])
|
||||
? $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah']
|
||||
: [];
|
||||
$lainnya = isset($forminspeksi['tanah']['bentuk_tanah']['lainnya'])
|
||||
? $forminspeksi['tanah']['bentuk_tanah']['lainnya']
|
||||
: null;
|
||||
@endphp
|
||||
|
||||
{{ !empty($bentukTanah) ? implode(', ', $bentukTanah) : '' }}
|
||||
|
||||
@if (!empty($bentukTanah) && in_array('Lainnya', $bentukTanah) && !is_null($lainnya))
|
||||
({{ $lainnya }})
|
||||
@endif
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Kontur Tanah</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$konturTanah = $forminspeksi['tanah']['kontur_tanah'] ?? [];
|
||||
@endphp
|
||||
|
||||
@if (!empty($konturTanah))
|
||||
{{ implode(', ', $konturTanah) }}
|
||||
@else
|
||||
-
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Beda Ketinggian dengan Jalan</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$ketinggianTanah = $forminspeksi['tanah']['ketinggian_tanah'];
|
||||
$ketinggian = $ketinggianTanah['ketinggian'][0] ?? '-';
|
||||
$lebihTinggi = $ketinggianTanah['lebih_tinggi'];
|
||||
$lebihRendah = $ketinggianTanah['lebih_rendah'];
|
||||
@endphp
|
||||
|
||||
{{ $ketinggian }}
|
||||
@if ($ketinggian === 'Lebih Tinggi' && $lebihTinggi !== null)
|
||||
(Ketinggian: {{ $lebihTinggi }} cm)
|
||||
@elseif($ketinggian === 'Lebih Rendah' && $lebihRendah !== null)
|
||||
(Kerendahan: {{ $lebihRendah }} cm)
|
||||
@endif
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kontur Jalan Depan Objek</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
{{ $forminspeksi['tanah']['kontur_jalan'] == 'menurun' ? 'Menurun' : 'Rata' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Posisi Kavling</td>
|
||||
<td>:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$posisiKavling = $forminspeksi['tanah']['posisi_kavling']['posisi_kavling'] ?? [];
|
||||
$lainnya = $forminspeksi['tanah']['posisi_kavling']['lainnya'] ?? null;
|
||||
@endphp
|
||||
|
||||
{{ !empty($posisiKavling) ? implode(', ', $posisiKavling) : '' }}
|
||||
|
||||
@if (!empty($posisiKavling) && in_array('Lainnya', $posisiKavling) && !empty($lainnya))
|
||||
({{ $lainnya }})
|
||||
@endif
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tusuk Sate</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
{{ $forminspeksi['tanah']['tusuk_sate'] == 'yes' ? 'Ya' : 'Tidak' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lockland</td>
|
||||
<td>:</td>
|
||||
<td>
|
||||
{{ $forminspeksi['tanah']['lockland'] == 'yes' ? 'Ya' : 'Tidak' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 2px; vertical-align: top;">Kondisi Fisik Tanah</td>
|
||||
<td style="padding: 2px; vertical-align: top;">:</td>
|
||||
<td style="padding: 2px; vertical-align: top;">
|
||||
@php
|
||||
$kondisiFisikTanah = $forminspeksi['tanah']['kondisi_fisik_tanah']['kondisi_fisik_tanah'][0] ?? '-';
|
||||
$lainnya = $forminspeksi['tanah']['kondisi_fisik_tanah']['lainnya'] ?? null;
|
||||
@endphp
|
||||
|
||||
{{ $kondisiFisikTanah }}
|
||||
@if ($kondisiFisikTanah === 'Lainnya' && !empty($lainnya))
|
||||
({{ $lainnya }})
|
||||
@endif
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
574
resources/views/penilai/components/call-report.blade.php
Normal file
574
resources/views/penilai/components/call-report.blade.php
Normal file
@@ -0,0 +1,574 @@
|
||||
@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;
|
||||
$jenisJaminan = null;
|
||||
$tanggalPenilaian = null;
|
||||
if ($permohonan->debiture && $permohonan->documents) {
|
||||
foreach ($permohonan->documents as $dokumen) {
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
$teams = $permohonan->region->teams;
|
||||
|
||||
$tanggalPenilaian = $permohonan->penilaian->waktu_penilaian;
|
||||
$jenisJaminan = $dokumen->jenisJaminan->name;
|
||||
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'] ?? old('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'] ?? ($permohonan->branch->name ?? old('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_laporan" class="input w-full cursor-not-allowed"
|
||||
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="nama_debiture" class="form-label max-w-56">Nama Debitur</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="nama_debiture" name="nama_debiture"
|
||||
class="input w-full cursor-not-allowed" placeholder="Nama Debiture"
|
||||
value="{{ $permohonan->debiture->name ?? old('nama_debiture') }}"
|
||||
@readonly(true)>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="kjjp" class="form-label max-w-56">KJPP</label>
|
||||
<div class="flex flex-wrap items-baseline w-full ">
|
||||
<input type="text" id="kjjp" name="kjjp"
|
||||
class="input w-full cursor-not-allowed" placeholder="Masukkan kjjp"
|
||||
value="{{ preg_replace('/^K\\d+ - /', '', $permohonan->penawaran->nama_kjpp_sebelumnya ?? old('kjjp')) }}
|
||||
"
|
||||
@readonly(true)>
|
||||
</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">
|
||||
<input type="text" id="jenis_asset" name="jenis_asset"
|
||||
class="input w-full cursor-not-allowed" placeholder="Masukkan jenis_asset"
|
||||
value="{{ $jenisJaminan ?? old('jenis_asset') }}" @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">Tanggal Penilaian </label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="datetime" id="tanggal_penilaian" name="tanggal_penilaian"
|
||||
class="input w-full cursor-not-allowed" placeholder="Masukkan Tanggal Penilai"
|
||||
value="{{ $tanggalPenilaian ?? old('penilai') }}" @readonly(true)>
|
||||
</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">lokasi objek
|
||||
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="card-body grid gap-2.5 w-full">
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="province" class="form-label max-w-56">Provinsi</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="province" class="input w-full cursor-not-allowed" readonly
|
||||
value="{{ isset($permohonan->debiture->province) ? $permohonan->debiture->province->name : '' }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="city" class="form-label max-w-56">Kabupaten/Kota</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="city" class="input w-full cursor-not-allowed" readonly
|
||||
value="{{ isset($permohonan->debiture->city) ? $permohonan->debiture->city->name : '' }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="district" class="form-label max-w-56">Kecamatan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="district" class="input w-full cursor-not-allowed" readonly
|
||||
value="{{ isset($permohonan->debiture->district) ? $permohonan->debiture->district->name : '' }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="village" class="form-label max-w-56">Desa/Kelurahan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="village" class="input w-full cursor-not-allowed" readonly
|
||||
value="{{ isset($permohonan->debiture->village) ? $permohonan->debiture->village->name : '' }}">
|
||||
</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">Dokument</h1>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
@include('lpj::component.detail-jaminan', ['status' => true])
|
||||
</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">Nilai Likuidasi</h1>
|
||||
</div>
|
||||
|
||||
<div class="card-body grid gap-5 w-full">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="Lelang" class="form-label max-w-56">Lelang ke </label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="lelang" name="lelang" class="input w-full"
|
||||
placeholder="Masukkan Lelang" value="{{ $callReport['lelang'] ?? old('lelang') }}">
|
||||
</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="nilai-pasar" name="nilai_pasar"
|
||||
class="input w-full nilai-pasar currency-format" placeholder="Masukkan likuidasi"
|
||||
value="{{ $callReport['nilai_pasar'] ?? old('likuidasi') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="likuidasi_nilai_1" class="form-label max-w-56">Nilai Likuidasi(%)</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="likuidasi" name="likuidasi" class="input w-full likuidasi"
|
||||
placeholder="Masukkan likuidasi dalam bentuk persen" onkeyup="calculateTotal(this)" value="{{ $callReport['persentase_likuidasi'] ?? old('likuidasi') }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="total-likuidasi" class="form-label max-w-56">Total Nilai Likuidasi
|
||||
(NL)</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="total-likuidasi" name="likuidasi_nilai_1"
|
||||
class="input w-full total-likuidasi currency-format" placeholder="Masukkan likuidasi" value="{{ $callReport['hasil_nilai_likuidasi'] ?? old('likuidasi') }}">
|
||||
</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 cursor-not-allowed" 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 "
|
||||
value="{{ $forminspeksi['signature']['kjjp']['name'] ?? $callReport['pihak_kjjpp'] ?? '' }}"
|
||||
placeholder="Masukkan Nama KJPP">
|
||||
</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 cursor-not-allowed" placeholder="Masukkan Pihak Bag"
|
||||
value="{{ $permohonan->user->name ?? '' }} || {{ $permohonan->branch->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>
|
||||
|
||||
@if (isset($forminspeksi['asset']['debitur_perwakilan']))
|
||||
@foreach ($forminspeksi['asset']['debitur_perwakilan'] as $item)
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="debitur_perwakilan" name="debitur_perwakilan"
|
||||
class="input w-full cursor-not-allowed" placeholder="Masukkan Penilai"
|
||||
value="{{ $item ?? '' }}" @readonly(true)>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="text" id="debitur_perwakilan" name="debitur_perwakilan"
|
||||
class="input w-full cursor-not-allowed" placeholder="Masukkan Penilai"
|
||||
value="{{ $permohonan->debiture->name ?? '' }}" @readonly(true)>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</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 callReports = @json($callReport);
|
||||
console.log('callReport', callReports)
|
||||
|
||||
|
||||
function formatJson(formElement) {
|
||||
const formData = new FormData(formElement);
|
||||
const jsonData = {
|
||||
kepada: "",
|
||||
tanggal: "",
|
||||
nomor_laporan: "",
|
||||
perihal: "",
|
||||
pihak_kjjpp: "",
|
||||
dari: "",
|
||||
lelang: "",
|
||||
fakta: {
|
||||
fakta_positif: [],
|
||||
fakta_negatif: []
|
||||
},
|
||||
nilai_pasar: "",
|
||||
persentase_likuidasi: "",
|
||||
hasil_nilai_likuidasi: ""
|
||||
};
|
||||
|
||||
// Ambil fakta positif
|
||||
document.querySelectorAll('textarea[name="fakta_positif[]"]').forEach(textarea => {
|
||||
if (textarea.value.trim() !== "") {
|
||||
jsonData.fakta.fakta_positif.push(textarea.value.trim());
|
||||
}
|
||||
});
|
||||
|
||||
// Ambil fakta negatif
|
||||
document.querySelectorAll('textarea[name="fakta_negatif[]"]').forEach(textarea => {
|
||||
if (textarea.value.trim() !== "") {
|
||||
jsonData.fakta.fakta_negatif.push(textarea.value.trim());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
jsonData.perihal = document.querySelector('input[name="perihal"]')?.value.trim() || "";
|
||||
jsonData.dari = document.querySelector('input[name="dari"]')?.value.trim() || "";
|
||||
jsonData.tanggal = document.querySelector('input[name="tanggal"]')?.value.trim() || "";
|
||||
jsonData.kepada = document.querySelector('input[name="kepada"]')?.value.trim() || "";
|
||||
jsonData.nomor_laporan = document.querySelector('input[name="nomor_laporan"]')?.value.trim() || "";
|
||||
jsonData.lelang = document.querySelector('input[name="lelang"]')?.value.trim() || "";
|
||||
|
||||
// Ambil nilai lainnya
|
||||
jsonData.nilai_pasar = cleanCurrencyValue(document.querySelector('input[name="nilai_pasar"]')?.value.trim() || "");
|
||||
jsonData.persentase_likuidasi = cleanCurrencyValue(document.querySelector('input[name="likuidasi"]')?.value.trim() || "");
|
||||
jsonData.hasil_nilai_likuidasi = cleanCurrencyValue(document.querySelector('input[name="likuidasi_nilai_1"]')?.value.trim() || "");
|
||||
|
||||
return jsonData;
|
||||
}
|
||||
|
||||
function submitData() {
|
||||
showLoadingSwal('Mengirim data ke server...');
|
||||
const formElement = document.querySelector('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.storeCallReport') }}?permohonan_id=${permohonanId}&inspeksi_id=${inspeksiId}&dokument_id=${documentId}`;
|
||||
|
||||
|
||||
const jsonData = formatJson(formElement);
|
||||
$.ajax({
|
||||
url: requestUrl,
|
||||
type: 'POST',
|
||||
data: JSON.stringify({
|
||||
permohonan_id: permohonanId,
|
||||
dokument_id: documentId,
|
||||
inspeksi_id: inspeksiId,
|
||||
data: jsonData,
|
||||
}),
|
||||
contentType: 'application/json',
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function calculateTotal() {
|
||||
let nilaiPasarInput = document.getElementById('nilai-pasar');
|
||||
let nilaiLikuidasi = document.getElementById('likuidasi');
|
||||
let totalLikuidasi = document.getElementById('total-likuidasi');
|
||||
const cleanNilaiPasar = cleanCurrencyValue(nilaiPasarInput.value);
|
||||
let cleanLikuidasi = cleanCurrencyValue(nilaiLikuidasi.value);
|
||||
|
||||
// Batasi likuidasi maksimal hingga 100
|
||||
cleanLikuidasi = Math.min(parseFloat(cleanLikuidasi) || 0, 100);
|
||||
|
||||
// Format nilai likuidasi dengan simbol %
|
||||
nilaiLikuidasi.value = cleanLikuidasi;
|
||||
|
||||
// Konversi ke angka untuk perhitungan
|
||||
const nilaiPasar = parseFloat(cleanNilaiPasar) || 0;
|
||||
const likuidasi = cleanLikuidasi / 100; // Konversi persentase ke desimal
|
||||
|
||||
// Hitung total likuidasi
|
||||
const totalNilaiLikuidasi = nilaiPasar * likuidasi;
|
||||
|
||||
// Tampilkan hasil dengan format yang benar
|
||||
totalLikuidasi.value = formatCurrency(totalNilaiLikuidasi.toString());
|
||||
}
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Initialize currency format for existing inputs
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial values if they exist
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@include('lpj::surveyor.js.utils')
|
||||
@endpush
|
||||
34
resources/views/penilai/components/footer.blade.php
Normal file
34
resources/views/penilai/components/footer.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<footer id="footer">
|
||||
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
|
||||
</footer>
|
||||
<script>
|
||||
const datas = @json($forminspeksi);
|
||||
console.log(datas);
|
||||
const lpjData = @json($lpjData);
|
||||
console.log(lpjData);
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const checkboxes = document.querySelectorAll('.checkbox-lainnya');
|
||||
|
||||
checkboxes.forEach(checkbox => {
|
||||
checkbox.addEventListener('change', function() {
|
||||
const textLainnya = this.closest('label').querySelector('.text-lainnya');
|
||||
|
||||
if (this.checked && this.value === 'Lainnya') {
|
||||
textLainnya.style.display = 'inline';
|
||||
} else if (this.value === 'Lainnya') {
|
||||
textLainnya.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
// Atur visibilitas awal
|
||||
if (checkbox.checked && checkbox.value === 'Lainnya') {
|
||||
const textLainnya = checkbox.closest('label').querySelector('.text-lainnya');
|
||||
textLainnya.style.display = 'inline';
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,142 +1,241 @@
|
||||
<div>
|
||||
@php
|
||||
$photoSections = [
|
||||
'rute_menuju_lokasi' => [
|
||||
'key' => 'rute_menuju_lokasi',
|
||||
'name_prefix' => '',
|
||||
'nested' => true,
|
||||
],
|
||||
'foto_rute_lainnya' => [
|
||||
'key' => 'name_rute_lainnya',
|
||||
'name_prefix' => '',
|
||||
'nested' => false,
|
||||
],
|
||||
'foto_lingkungan' => [
|
||||
'key' => 'foto_lingkungan',
|
||||
'name_prefix' => '',
|
||||
'nested' => true,
|
||||
],
|
||||
'single_photos' => [
|
||||
'foto_basement' => 'Basement',
|
||||
'foto_gerbang' => 'Gerbang',
|
||||
'pendamping' => 'Pendamping',
|
||||
],
|
||||
'object_jaminan' => [
|
||||
'key' => 'name_objek',
|
||||
'name_prefix' => '',
|
||||
'nested' => false,
|
||||
],
|
||||
'foto_lantai_unit' => [
|
||||
'key' => 'name',
|
||||
'name_prefix' => 'Foto Lantai',
|
||||
'nested' => true,
|
||||
],
|
||||
];
|
||||
<style>
|
||||
/* General Styles */
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
$hasPhotos = false;
|
||||
@endphp
|
||||
|
||||
<style>
|
||||
.photo-container {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.photo-item {
|
||||
width: 100%; /* Adjust to fit two photos per row */
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.photo-row {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.photo-item {
|
||||
|
||||
box-sizing: border-box;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.photo-item:nth-child(2n) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* Image Styling */
|
||||
.photo-item img {
|
||||
width: 80%;
|
||||
height: auto;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
object-fit: contain;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@foreach ($photoSections as $sectionKey => $sectionConfig)
|
||||
@if ($sectionKey === 'single_photos')
|
||||
<div class="photo-container">
|
||||
@foreach ($sectionConfig as $photoKey => $photoName)
|
||||
@if (isset($formFoto[$photoKey]) && !empty($formFoto[$photoKey]))
|
||||
/* Clearfix */
|
||||
.clearfix::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
/* Media Print */
|
||||
@media print {
|
||||
.photo-item {
|
||||
width: 48%;
|
||||
margin-right: 2%;
|
||||
float: left;
|
||||
padding: 5px;
|
||||
box-sizing: border-box;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.photo-item img {
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
object-fit: contain;
|
||||
background-color: #f0f0f0;
|
||||
border-radius: 5px;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.photo-container {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
.photo-row {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@isset($basicData['foto'])
|
||||
@php
|
||||
$imagePath = storage_path('app/public/' . $formFoto[$photoKey]);
|
||||
$hasPhotos = true;
|
||||
$photos = $formFoto['upload_foto'] ?? [];
|
||||
if (!is_array($photos)) {
|
||||
$photos = [];
|
||||
}
|
||||
$groupedPhotos = collect($photos)->groupBy('category');
|
||||
|
||||
$mainPhotos = $groupedPhotos->filter(fn($_, $key) => strtolower($key) !== 'lainnya');
|
||||
$otherPhotos = $groupedPhotos->get('lainnya', collect());
|
||||
@endphp
|
||||
<div class="photo-item border">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $photoName }}
|
||||
</h2>
|
||||
@if ($statusLpj || file_exists($imagePath))
|
||||
<img src="{{ $imagePath }}" alt="{{ $photoName }}" class="photo-image">
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
@if ($groupedPhotos->isEmpty())
|
||||
<p class="text-gray-500">Tidak ada foto yang tersedia.</p>
|
||||
@else
|
||||
@foreach ($mainPhotos as $category => $photos)
|
||||
@php
|
||||
$sectionData = $formFoto[$sectionKey] ?? null;
|
||||
$groupedBySubcategory = $photos->groupBy('sub');
|
||||
@endphp
|
||||
|
||||
@if (!empty($sectionData))
|
||||
@if ($sectionConfig['nested'])
|
||||
@if (isset($sectionData[$sectionConfig['key']][0]))
|
||||
<div class="photo-container">
|
||||
@foreach ($sectionData[$sectionConfig['key']][0] as $index => $item)
|
||||
@foreach ($groupedBySubcategory as $subcategory => $subPhotos)
|
||||
@if (count($subPhotos) > 0)
|
||||
<table width="100%" border="0" style="align-content: center; text-align: center">
|
||||
<tr>
|
||||
@if (count($subPhotos) === 1)
|
||||
@php
|
||||
$item = $subPhotos->first();
|
||||
$imagePath = storage_path('app/public/' . $item['path']);
|
||||
@endphp
|
||||
<td style="width: 100%; vertical-align: top; text-align: center" colspan="2"
|
||||
class="photo-item border">
|
||||
<p style="font-weight: medium; font-size: 10px">{{ $category }} -
|
||||
|
||||
@isset($subcategory)
|
||||
@if (trim($subcategory) !== '')
|
||||
{{ $subcategory }} -
|
||||
@endif
|
||||
@endisset
|
||||
|
||||
{{ $item['name'] ?? '' }}
|
||||
</p>
|
||||
@if ($statusLpj || file_exists($imagePath))
|
||||
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image"
|
||||
style="width: 100%; max-width: 300px;">
|
||||
@endif
|
||||
@isset($item['description'])
|
||||
<p style="font-size:9px">{{ $item['description'] }}</p>
|
||||
@endisset
|
||||
</td>
|
||||
@else
|
||||
@foreach ($subPhotos as $index => $item)
|
||||
@php
|
||||
$imagePath = storage_path('app/public/' . $item['path']);
|
||||
$hasPhotos = true;
|
||||
@endphp
|
||||
<div class="photo-item border">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $sectionConfig['name_prefix']
|
||||
? $sectionConfig['name_prefix'] . ' ' . ($index + 1)
|
||||
: $item['name'] ?? 'Foto ' . ($index + 1) }}
|
||||
</h2>
|
||||
<td style="width: 50%; vertical-align: top; text-align: center"
|
||||
class="photo-item border">
|
||||
<p style="font-weight: medium; font-size: 10px">{{ $category }} -
|
||||
|
||||
@isset($subcategory)
|
||||
@if (trim($subcategory) !== '')
|
||||
{{ $subcategory }} -
|
||||
@endif
|
||||
@endisset
|
||||
|
||||
{{ $item['name'] ?? '' }}
|
||||
</p>
|
||||
@if ($statusLpj || file_exists($imagePath))
|
||||
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image">
|
||||
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image"
|
||||
style="width: 100%; max-width: 300px;">
|
||||
@endif
|
||||
@isset($item['description'])
|
||||
<p style="font-size:9px">{{ $item['description'] }}</p>
|
||||
@endisset
|
||||
</td>
|
||||
@if (($index + 1) % 2 == 0)
|
||||
</tr>
|
||||
<tr>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@if (count($subPhotos) % 2 != 0)
|
||||
<td style="width: 50%;"></td>
|
||||
@endif
|
||||
@else
|
||||
<div class="photo-container">
|
||||
@foreach ($sectionData as $index => $item)
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
@endif
|
||||
@endforeach
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<div class="page-break"></div>
|
||||
|
||||
@if (!$otherPhotos->isEmpty())
|
||||
@foreach ($otherPhotos->groupBy('sub') as $subcategory => $subPhotos)
|
||||
@if (count($subPhotos) > 0)
|
||||
<table width="100%" border="0" style="align-content: center; text-align: center">
|
||||
<tr>
|
||||
@if (count($subPhotos) === 1)
|
||||
@php
|
||||
$name = $item[$sectionConfig['key']] ?? '';
|
||||
$photoPath =
|
||||
$sectionKey === 'object_jaminan'
|
||||
? $item['foto_objek'] ?? ''
|
||||
: $item['foto_rute_lainnya'] ?? '';
|
||||
|
||||
$imagePath = storage_path('app/public/' . $photoPath);
|
||||
$item = $subPhotos->first();
|
||||
$imagePath = storage_path('app/public/' . $item['path']);
|
||||
@endphp
|
||||
<td style="width: 100%; vertical-align: top; text-align: center" colspan="2"
|
||||
class="photo-item border">
|
||||
<p style="font-weight: medium; font-size: 10px">Lainnya -
|
||||
|
||||
@if (!empty($name) || !empty($photoPath))
|
||||
@php $hasPhotos = true; @endphp
|
||||
<div class="photo-item border">
|
||||
@if (!empty($name))
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $name }}
|
||||
</h2>
|
||||
@isset($subcategory)
|
||||
@if (trim($subcategory) !== '')
|
||||
{{ $subcategory }} -
|
||||
@endif
|
||||
@if ($statusLpj || (file_exists($imagePath) && !empty($photoPath)))
|
||||
<img src="{{ $imagePath }}" alt="{{ $name ?: 'Foto' }}" class="photo-image">
|
||||
@endisset
|
||||
|
||||
{{ $item['name'] ?? '' }}
|
||||
</p>
|
||||
@if ($statusLpj || file_exists($imagePath))
|
||||
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image"
|
||||
style="width: 100%; max-width: 300px;">
|
||||
@endif
|
||||
</div>
|
||||
@isset($item['description'])
|
||||
<p style="font-size:9px">{{ $item['description'] }}</p>
|
||||
@endisset
|
||||
</td>
|
||||
@else
|
||||
@foreach ($subPhotos as $index => $item)
|
||||
@php
|
||||
$imagePath = storage_path('app/public/' . $item['path']);
|
||||
@endphp
|
||||
<td style="width: 50%; vertical-align: top; text-align: center" class="photo-item border">
|
||||
<p style="font-weight: medium; font-size: 10px">Lainnya -
|
||||
|
||||
@isset($subcategory)
|
||||
@if (trim($subcategory) !== '')
|
||||
{{ $subcategory }} -
|
||||
@endif
|
||||
@endisset
|
||||
|
||||
{{ $item['name'] ?? '' }}
|
||||
</p>
|
||||
@if ($statusLpj || file_exists($imagePath))
|
||||
<img src="{{ $imagePath }}" alt="{{ $item['path'] }}" class="photo-image"
|
||||
style="width: 100%; max-width: 300px;">
|
||||
@endif
|
||||
@isset($item['description'])
|
||||
<p style="font-size:9px">{{ $item['description'] }}</p>
|
||||
@endisset
|
||||
</td>
|
||||
@if (($index + 1) % 2 == 0)
|
||||
</tr>
|
||||
<tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@if (count($subPhotos) % 2 != 0)
|
||||
<td style="width: 50%;"></td>
|
||||
@endif
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
@if (!$hasPhotos)
|
||||
<div class="text-center py-6 bg-gray-100 rounded-lg">
|
||||
<p class="text-gray-500 italic">Tidak ada foto yang tersedia</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endisset
|
||||
|
||||
@@ -1,264 +1,89 @@
|
||||
@if (isset($formFoto['rute_menuju_lokasi']['rute_menuju_lokasi']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Rute Menuju Lokasi
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['rute_menuju_lokasi']['rute_menuju_lokasi']))
|
||||
@foreach ($formFoto['rute_menuju_lokasi']['rute_menuju_lokasi'][0] as $index => $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $item['name'] ?? 'Rute menuju lokasi - ' . ($index + 1) }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
<img src="{{ Storage::url($item['path']) }}" alt="Gambar {{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@isset($basicData['foto'])
|
||||
@php
|
||||
$photos = $formFoto['upload_foto'] ?? [];
|
||||
if (!is_array($photos)) {
|
||||
$photos = [];
|
||||
}
|
||||
$groupedPhotos = collect($photos)->groupBy('category');
|
||||
@endphp
|
||||
|
||||
@if (isset($formFoto['foto_rute_lainnya']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Rute Lainnya
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['foto_rute_lainnya']))
|
||||
@foreach ($formFoto['foto_rute_lainnya'] as $index => $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $item['name_rute_lainnya'] ?? 'Rute Lainnya - ' . ($index + 1) }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
<img src="{{ Storage::url($item['foto_rute_lainnya']) }}" alt="Gambar {{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['foto_gerbang']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Gerbang
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Gerbang
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['foto_gerbang']) }}" alt="" class="w-full h-auto object-cover">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Lingkungan </h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['foto_lingkungan']['foto_lingkungan']))
|
||||
@foreach ($formFoto['foto_lingkungan']['foto_lingkungan'][0] as $index => $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $item['name'] ?? 'Lingkungan - ' . ($index + 1) }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
<img src="{{ Storage::url($item['path']) }}" alt="Gambar {{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['object_jaminan']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Object Jaminan
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['object_jaminan']))
|
||||
@foreach ($formFoto['object_jaminan'] as $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
{{ $item['name_objek'] ?? "" }}
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
<img src="{{ Storage::url($item['foto_objek']) }}" alt=""
|
||||
class="w-full h-auto object-cover">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['foto_lantai_unit']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">Lantai</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['foto_lantai_unit']))
|
||||
@foreach ($formFoto['foto_lantai_unit'] as $floorIndex => $floorPhotos)
|
||||
@if ($groupedPhotos->isEmpty())
|
||||
<p class="text-gray-500">Tidak ada foto yang tersedia.</p>
|
||||
@else
|
||||
@foreach ($groupedPhotos as $category => $photos)
|
||||
<div class="mt-5">
|
||||
@foreach ($floorPhotos as $index => $item)
|
||||
@if (is_int($index) && isset($item['name'], $item['path']) && is_string($item['path']))
|
||||
<div class="flex items-center justify-between mt-3">
|
||||
<div class="grid gap-3">
|
||||
<h2 class="text-gray-800 font-bold text-xl mb-3">{{ $category ?? 'Tanpa Kategori' }}</h2>
|
||||
<div class="grid gap-5">
|
||||
@php
|
||||
$groupedBySubcategory = $photos->groupBy('sub');
|
||||
@endphp
|
||||
|
||||
@if ($groupedBySubcategory->isEmpty())
|
||||
|
||||
@foreach ($photos as $index => $item)
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="grid gap-5">
|
||||
<h3 class="text-gray-600 font-semibold text-lg">
|
||||
{{ $item['name'] ?? 'Foto Lantai ' . ($floorIndex + 1) . ' - ' . ($index + 1) }}
|
||||
{{ $item['name'] ?? 'Foto - ' . ($index + 1) }}
|
||||
</h3>
|
||||
<div class="flex items-center ">
|
||||
<img src="{{ Storage::url($item['path']) }}"
|
||||
alt="Gambar {{ $floorIndex + 1 }}-{{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<div class="flex items-center">
|
||||
@if (isset($item['path']))
|
||||
<img src="{{ asset('storage/' . $item['path']) }}" alt="Gambar {{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover rounded-md">
|
||||
@else
|
||||
<p class="text-gray-500">Gambar tidak tersedia</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@if (isset($formFoto['foto_basement']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Basement
|
||||
</h3>
|
||||
<p class="text-gray-500 text-sm">{{ $item['description'] ?? '-' }}</p>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<!-- Jika ada subkategori, tampilkan berdasarkan subkategori -->
|
||||
@foreach ($groupedBySubcategory as $subcategory => $subPhotos)
|
||||
<div class="mb-4">
|
||||
<!-- Judul Subkategori -->
|
||||
<h4 class="text-gray-700 font-semibold text-lg mb-2">
|
||||
@if ($subcategory)
|
||||
{{ $subcategory }}
|
||||
@endif
|
||||
</h4>
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Basemnt
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['foto_basement']) }}" alt="" class="w-full h-auto object-cover">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (isset($formFoto['foto_lantai_lainnya']))
|
||||
<div class="card">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Lantai Lainnya
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (isset($formFoto['foto_lantai_lainnya']))
|
||||
@foreach ($formFoto['foto_lantai_lainnya'] as $index => $item)
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
@foreach ($subPhotos as $index => $item)
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="grid gap-5">
|
||||
<h2 class="text-gray-600 font-semibold text-xl">
|
||||
{{ $item['name_lantai_lainnya'] ?? 'Lantai - ' . ($index + 1) }}
|
||||
</h2>
|
||||
<h3 class="text-gray-600 font-semibold text-lg">
|
||||
{{ $item['name'] ?? 'Foto - ' . ($index + 1) }}
|
||||
</h3>
|
||||
<div class="flex items-center">
|
||||
<img src="{{ Storage::url($item['foto_lantai_lainnya']) }}"
|
||||
alt="Gambar {{ $index + 1 }}" class="w-full h-auto object-cover">
|
||||
@if (isset($item['path']))
|
||||
<img src="{{ asset('storage/' . $item['path']) }}" alt="Gambar {{ $index + 1 }}"
|
||||
class="w-full h-auto object-cover rounded-md">
|
||||
@else
|
||||
<p class="text-gray-500">Gambar tidak tersedia</p>
|
||||
@endif
|
||||
</div>
|
||||
<p class="text-gray-500 text-sm">{{ $item['description'] ?? '-' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
|
||||
@if (isset($formFoto['pendamping']))
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Pendamping
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="flex items-center justify-between mt-5">
|
||||
<div class="grid gap-5">
|
||||
<h2 class=" font-semibold text-xl">
|
||||
Pendamping
|
||||
</h2>
|
||||
<div class="flex items-center">
|
||||
|
||||
|
||||
<img src="{{ Storage::url($formFoto['pendamping']) }}" alt="" class="w-full h-auto object-cover">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endisset
|
||||
|
||||
@php
|
||||
$fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
|
||||
if (($key = array_search('foto_tempat', $fotoTypes)) !== false) {
|
||||
$fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat'];
|
||||
if (($key = array_search('foto_tempat', $fotoTypes)) !== false) {
|
||||
unset($fotoTypes[$key]);
|
||||
array_unshift($fotoTypes, 'foto_tempat');
|
||||
}
|
||||
$adaFoto = false;
|
||||
}
|
||||
$adaFoto = false;
|
||||
if (isset($forminspeksi)) {
|
||||
foreach ($fotoTypes as $type) {
|
||||
$imagePath = $forminspeksi[$type] ?? null;
|
||||
@@ -271,7 +96,7 @@ $adaFoto = false;
|
||||
@endphp
|
||||
|
||||
@if ($adaFoto)
|
||||
<div class="card">
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Peta
|
||||
@@ -288,7 +113,7 @@ $adaFoto = false;
|
||||
@endphp
|
||||
|
||||
@if ($imagePath && file_exists(storage_path('app/public/' . $imagePath)))
|
||||
<img src="{{ Storage::url($imagePath) }}" alt="{{ $type }}"
|
||||
<img src="{{ asset('storage/' . $imagePath) }}" alt="{{ $type }}"
|
||||
class="w-full h-auto object-cover">
|
||||
@endif
|
||||
<p class="mt-2 text-sm">{{ Str::title(str_replace('_', ' ', $type)) }}</p>
|
||||
@@ -299,5 +124,5 @@ $adaFoto = false;
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
112
resources/views/penilai/components/header.blade.php
Normal file
112
resources/views/penilai/components/header.blade.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Laporan Penilai Jaminan</title>
|
||||
|
||||
<style>
|
||||
* {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
/** Define the header rules **/
|
||||
@page {
|
||||
margin-top: 100px;
|
||||
margin-bottom: 50px;
|
||||
|
||||
}
|
||||
|
||||
#header {
|
||||
position: fixed;
|
||||
top: -80px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-logo {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top: 10px;
|
||||
max-height: 80px;
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
bottom: -50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.page-number:after {
|
||||
content: counter(page) " dari " counter(pages);
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
bottom: -50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: left;
|
||||
border-top: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-top: 3cm;
|
||||
margin-bottom: 120px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.border {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body style="width: 90%; margin: auto;">
|
||||
<header id="header">
|
||||
<table style="width: 100%; border: none;">
|
||||
<tr>
|
||||
<td style="width: 20%; text-align: left;" class="header-left">
|
||||
@include('lpj::component.logo-bag')
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
<div style="">
|
||||
<p style="margin: 0; padding:0; font-size:10px;">Tanggal: {{ date('Y-m-d') }}</p>
|
||||
<p style="margin: 0; padding:0; font-size:10px;">Waktu: {{ date('H:i:s') }}</p>
|
||||
<p style="margin: 0; padding:0; font-size:10px;">User: {{ Auth::user()->name }}</p>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</header>
|
||||
|
||||
@@ -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>{{ isset($item['harga']) ? formatRupiah($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>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<style>
|
||||
<style>
|
||||
.list-decimal {
|
||||
list-style-type: decimal;
|
||||
margin: 0;
|
||||
@@ -14,17 +14,17 @@
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 16px;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
|
||||
.list-decimal li {
|
||||
.list-decimal li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
</style>
|
||||
}
|
||||
</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 }}">
|
||||
<input type="hidden" name="dokument_id" value="{{ request('documentId') }}">
|
||||
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
|
||||
<input type="hidden" id="lpj-data" value="{{ json_encode($lpjData ?? []) }}" />
|
||||
@include('lpj::component.form-penilai')
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
@@ -33,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>
|
||||
|
||||
@@ -14,9 +14,20 @@
|
||||
Memo Antar Kantor
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
|
||||
@php
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@endphp
|
||||
@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>
|
||||
@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
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body grid gap-5">
|
||||
@@ -38,7 +49,7 @@
|
||||
<label class="form-label max-w-56">Nomor Memo</label>
|
||||
<div class="flex flex-wrap items-base line w-full">
|
||||
<input type="text" name="nomor_memo" class="input w-full" placeholder="Masukkan..."
|
||||
value="{{ $noLpmemo ?? '' }}" @readonly(true)>
|
||||
value="{{ $nomorLaporan ?? '' }}" @readonly(true)>
|
||||
</div>
|
||||
</div>
|
||||
{{-- 250109828129/ --}}
|
||||
@@ -175,7 +186,7 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="date" id="tanggal_survey" name="tanggal_survey"
|
||||
class="input w-full" placeholder="Masukkan Tanggal Survey"
|
||||
value="{{ $memo->tanggal_survey ?? old('tanggal_survey') }}">
|
||||
value="{{ $memo->lokasi->tanggal_survey ?? old('tanggal_survey') }}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -281,7 +292,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 +301,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>
|
||||
|
||||
@@ -1,116 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Laporan Penilai Jaminan</title>
|
||||
|
||||
<style>
|
||||
* {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 12px
|
||||
}
|
||||
|
||||
/** Define the header rules **/
|
||||
@page {
|
||||
margin-top: 100px;
|
||||
/* Ruang untuk header */
|
||||
margin-bottom: 50px;
|
||||
/* Ruang untuk footer */
|
||||
}
|
||||
|
||||
#header {
|
||||
/* position: fixed; */
|
||||
/* top: -100px; */
|
||||
/* Posisi header di luar konten */
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 90px;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-logo {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top: 10px;
|
||||
max-height: 80px;
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
bottom: -50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.page-number:after {
|
||||
content: counter(page) " dari " counter(pages);
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0cm;
|
||||
left: 0cm;
|
||||
right: 0cm;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-top: 3cm;
|
||||
/* Tambahkan margin top sedikit lebih besar dari tinggi header */
|
||||
margin-bottom: 120px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
/* Pastikan konten berada di bawah header */
|
||||
}
|
||||
|
||||
.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>
|
||||
|
||||
<body style="width: 80%; margin: auto">
|
||||
@php
|
||||
@include('lpj::penilai.components.header')
|
||||
@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();
|
||||
@@ -135,22 +26,15 @@
|
||||
}
|
||||
}
|
||||
$data = rtrim($data, ', ');
|
||||
@endphp
|
||||
<header id="header">
|
||||
<table style="width: 100%; border: none;">
|
||||
<tr>
|
||||
<td style="width: 20%; text-align: left;" class="header-left">
|
||||
@include('lpj::component.logo-bag')
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</header>
|
||||
@endphp
|
||||
|
||||
<main class="content">
|
||||
|
||||
<main class="content">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="text-align: center; margin-top: 5px;">
|
||||
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">MEMO ANTAR KANTOR</h2>
|
||||
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">
|
||||
MEMO ANTAR KANTOR</h2>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -185,8 +69,9 @@
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Menindak lanjuti permintann penilaian jaminan dari {{ $permohonan->user->name }} AO Cabang {{ $permohonan->debiture->branch->name ?? '' }}
|
||||
tanggal {{formatTanggalIndonesia($memo['tanggal']) ?? ''}}, dapat di sampaikan sebagai berikut:
|
||||
Menindak lanjuti permintann penilaian jaminan dari {{ $permohonan->user->name }} AO Cabang
|
||||
{{ $permohonan->debiture->branch->name ?? '' }}
|
||||
tanggal {{ formatTanggalIndonesia($memo['tanggal']) ?? '' }}, dapat di sampaikan sebagai berikut:
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -212,31 +97,55 @@
|
||||
</tr>
|
||||
|
||||
@if (@isset($dokumen))
|
||||
@foreach ($dokumen->detail as $details)
|
||||
@foreach ($dokumen->detail as $detail)
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">{{ $details->jenisLegalitasJaminan->name ?? '' }}</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
<td style=" padding: 2px;">
|
||||
{{ $detail->name ?? '' }}
|
||||
</td>
|
||||
<td style=" padding: 2px;">:</td>
|
||||
<td style=" padding: 2px;">
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
@php
|
||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan))
|
||||
? json_decode($detail->dokumen_jaminan)
|
||||
: [$detail->dokumen_jaminan];
|
||||
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor))
|
||||
? json_decode($detail->dokumen_nomor)
|
||||
: ($detail->dokumen_nomor
|
||||
? [$detail->dokumen_nomor]
|
||||
: []);
|
||||
@endphp
|
||||
|
||||
@foreach ($dokumen_jaminan as $index => $dokumen)
|
||||
<div>
|
||||
@if (!empty($dokumen_nomor))
|
||||
<span>
|
||||
{{ $dokumen_nomor[$index] }}</span>
|
||||
@if (!empty($dokumen_nomor[$index]))
|
||||
<span>{{ $dokumen_nomor[$index] }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<br>
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
|
||||
@if (isset($detail->details))
|
||||
@if (json_decode($detail->details))
|
||||
@foreach (json_decode($detail->details) as $key => $value)
|
||||
@if (!is_null($value) && $value !== '')
|
||||
<tr>
|
||||
<td style="padding: 2px;">{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
|
||||
<td style=" padding: 2px;">:</td>
|
||||
<td style="">{{ $value }}
|
||||
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
|
||||
<sup>m2</sup>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@@ -247,23 +156,33 @@
|
||||
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
@if (!empty($memo['lokasi']['address']))
|
||||
<tr>
|
||||
@php
|
||||
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai';
|
||||
|
||||
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
|
||||
@endphp
|
||||
<td style="width: 20%; padding: 2px;">Luas Tanah</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $luas ?? '' }}</td>
|
||||
<td width="20%">Terletak di</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['address'] ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Lokasi Jaminan</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $memo['lokasi']['address'] ?? '' }}, {{ $alamat['village_code'] ?? '' }} {{ $alamat['district_code'] ?? '' }}, {{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }} </td>
|
||||
<td>Desa/Kelurahan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['village_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kecamatan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['district_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kabupaten/Kota</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['city_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Provinsi</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['province_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
</table>
|
||||
|
||||
|
||||
@@ -280,7 +199,8 @@
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Tanggal Kunjungan</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Surveyor</td>
|
||||
@@ -334,42 +254,90 @@
|
||||
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<table style="width: 100%; text-align: center;">
|
||||
|
||||
<tr>
|
||||
<td style="height: 50px"></td>
|
||||
<td style="height: 50px"></td>
|
||||
<td style="height: 50px"></td>
|
||||
<td style="height: 50px"></td>
|
||||
</tr>
|
||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
||||
@php
|
||||
|
||||
use Modules\Usermanagement\Models\User;
|
||||
|
||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
||||
$imagePathPenilai = storage_path('app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign);
|
||||
|
||||
$soUser = User::where('id', $senior_officer->id)->first();
|
||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
||||
|
||||
$imagePathEO = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('EO Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('EO Appraisal')->first()->sign,
|
||||
);
|
||||
|
||||
$imagePathDD = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('DD Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('DD Appraisal')->first()->sign,
|
||||
);
|
||||
@endphp
|
||||
<tr>
|
||||
<td >{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
<span style="text-transform: uppercase; margin: 0; ">
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathPenilai))
|
||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathSo))
|
||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathEO))
|
||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathDD))
|
||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('PENILAI')) }}
|
||||
</span>
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ $senior_officer->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
||||
</span>
|
||||
|
||||
PENILAI
|
||||
</span>
|
||||
</td>
|
||||
<td > {{ $senior_officer->name ?? '' }}</br>
|
||||
<span style="text-transform: uppercase; margin: 0; ">
|
||||
SENIOR OFFICER
|
||||
</span>
|
||||
</td>
|
||||
<td > {{ $senior_officer->name ?? '' }}</br>
|
||||
<span style="text-transform: uppercase; margin: 0; ">
|
||||
@endif
|
||||
|
||||
EXECUTIVE OFFICER
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
||||
</span>
|
||||
</td>
|
||||
<td > {{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||
<span style="text-transform: uppercase; margin: 0; ">
|
||||
Deputy Director
|
||||
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
@@ -386,16 +354,5 @@
|
||||
@include('lpj::penilai.components.foto-jaminan')
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
const data = @json($memo);
|
||||
console.log(data);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</main>
|
||||
@include('lpj::penilai.components.footer')
|
||||
|
||||
@@ -0,0 +1,384 @@
|
||||
@include('lpj::penilai.components.header')
|
||||
@php
|
||||
$data = '';
|
||||
foreach ($permohonan->documents as $dokumen) {
|
||||
$data .= $dokumen->jenisJaminan->name . ', ';
|
||||
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$data = rtrim($data, ', ');
|
||||
@endphp
|
||||
|
||||
|
||||
<main class="content">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="text-align: center; margin-top: 5px;">
|
||||
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">
|
||||
CALL Report</h2>
|
||||
<p style="font-size: 12px; margin: 0;">NO: {{ $nomorLaporan ?? '' }}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Kepada</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $report['kepada'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Dari</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $report['dari'] ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Tanggal</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($report['tanggal']) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Perihal</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $report['perihal'] ?? '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Menindak lanjuti permintan penilaian Tujuan Lelang, BAG Cab
|
||||
{{ $permohonan->debiture->branch->name ?? '' }}
|
||||
tanggal {{ formatTanggalIndonesia($report['tanggal']) ?? '' }}, dapat di sampaikan sebagai berikut:
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="width: 100%">
|
||||
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Nama Debitur</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">KJPP</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ preg_replace('/^K\\d+ - /', '', $permohonan->penawaran->nama_kjpp_sebelumnya ?? '-') }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Jenis Aset</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $data ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
@if (!empty($report['lokasi']['address']))
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Lokasi Objek Penilaian</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $report['lokasi']['address'] ?? '' }},
|
||||
{{ $alamat['village_code'] ?? '' }} {{ $alamat['district_code'] ?? '' }},
|
||||
{{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }} </td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if (@isset($dokumen))
|
||||
@foreach ($dokumen->detail as $detail)
|
||||
<tr>
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
<td style=" padding: 2px;">
|
||||
{{ $detail->name ?? '' }}
|
||||
</td>
|
||||
<td style=" padding: 2px;">:</td>
|
||||
<td style=" padding: 2px;">
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
@php
|
||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan))
|
||||
? json_decode($detail->dokumen_jaminan)
|
||||
: [$detail->dokumen_jaminan];
|
||||
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor))
|
||||
? json_decode($detail->dokumen_nomor)
|
||||
: ($detail->dokumen_nomor
|
||||
? [$detail->dokumen_nomor]
|
||||
: []);
|
||||
@endphp
|
||||
|
||||
@foreach ($dokumen_jaminan as $index => $dokumen)
|
||||
<div>
|
||||
@if (!empty($dokumen_nomor[$index]))
|
||||
<span>{{ $dokumen_nomor[$index] }}</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
|
||||
@if (isset($detail->details))
|
||||
@if (json_decode($detail->details))
|
||||
@foreach (json_decode($detail->details) as $key => $value)
|
||||
@if (!is_null($value) && $value !== '')
|
||||
<tr>
|
||||
<td style="padding: 2px;">{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
|
||||
<td style=" padding: 2px;">:</td>
|
||||
<td style="">{{ $value }}
|
||||
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
|
||||
<sup>m2</sup>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Tanggal Penilaian</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ isset($permohonan->penilaian->tanggal_kunjungan) ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Lelang ke</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $report['lelang'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Nilai Pasar Wajar (NPW)</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ isset($report['nilai_pasar']) ? formatRupiah($report['nilai_pasar']) : '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">
|
||||
Nilai Likuidasi
|
||||
{{ isset($report['persentase_likuidasi']) ? '(' . $report['persentase_likuidasi'] . '%)' : '-' }}
|
||||
</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
{{ isset($report['hasil_nilai_likuidasi']) ? formatRupiah($report['hasil_nilai_likuidasi']) : '-' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</table>
|
||||
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
<h6 style="text-transform: uppercase; margin: 0; ">Penilaian ke lokasi objek telah dilakukan oleh :
|
||||
</h6>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Staf Subdit Appraisal </td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Pihak KJPP</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $forminspeksi['signature']['kjjp']['name'] ?? $report['pihak_kjjpp'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Pihak BAGI Cab </td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $permohonan->user->name ?? '' }} -
|
||||
{{ $permohonan->debiture->branch->name ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Debitur/perwakilan debitur </td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
<h6 style="text-transform: uppercase; margin: 0; ">Informasi yang didapatkan sebagai berikut : </h6>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@isset($report['fakta']['fakta_positif'])
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
<h6 style="text-transform: uppercase; margin: 0; ">Faktor positif</h2>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@foreach ($report['fakta']['fakta_positif'] as $key => $item)
|
||||
<tr>
|
||||
<td>{{ $item }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tr>
|
||||
</table>
|
||||
@endisset
|
||||
@isset($report['fakta']['fakta_negatif'])
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
<h6 style="text-transform: uppercase; margin: 0; ">Faktor negatif</h2>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@foreach ($report['fakta']['fakta_negatif'] as $key => $item)
|
||||
<tr>
|
||||
<td>{{ $item }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tr>
|
||||
</table>
|
||||
@endisset
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
<h6 style="text-transform: uppercase; margin: 0; ">3. Catatan Yang Perlu Diperhatikan</h6>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@isset($report['kesimpulan_saran'])
|
||||
@foreach ($report['kesimpulan_saran'] as $key => $item)
|
||||
<tr>
|
||||
<td> {{ $item }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endisset
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
||||
@php
|
||||
use Modules\Usermanagement\Models\User;
|
||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
||||
$imagePathPenilai = storage_path(
|
||||
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
||||
);
|
||||
|
||||
$soUser = User::where('id', $senior_officer->id)->first();
|
||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
||||
|
||||
$imagePathEO = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('EO Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('EO Appraisal')->first()->sign,
|
||||
);
|
||||
|
||||
$imagePathDD = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('DD Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('DD Appraisal')->first()->sign,
|
||||
);
|
||||
@endphp
|
||||
<tr>
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathPenilai))
|
||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathSo))
|
||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathEO))
|
||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathDD))
|
||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('PENILAI')) }}
|
||||
</span>
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ $senior_officer->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
||||
</span>
|
||||
|
||||
</td>
|
||||
@endif
|
||||
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="page-break"></div>
|
||||
<div class="section">
|
||||
<div class="judul">
|
||||
<h6 class="border" style="text-align: center">
|
||||
FOTO JAMINAN
|
||||
</h6>
|
||||
</div>
|
||||
@include('lpj::penilai.components.foto-jaminan')
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
@include('lpj::penilai.components.footer')
|
||||
@@ -1,124 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
@include('lpj::penilai.components.header')
|
||||
@php
|
||||
$data = '';
|
||||
foreach ($permohonan->documents as $dokumen) {
|
||||
$data .= $dokumen->jenisJaminan->name . ', ';
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Laporan Penilai Jaminan</title>
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
|
||||
$teams = $permohonan->region->teams;
|
||||
|
||||
<style>
|
||||
* {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
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;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 12px
|
||||
}
|
||||
|
||||
/** Define the header rules **/
|
||||
@page {
|
||||
margin-top: 100px;
|
||||
/* Ruang untuk header */
|
||||
margin-bottom: 50px;
|
||||
/* Ruang untuk footer */
|
||||
}
|
||||
|
||||
#header {
|
||||
/* position: fixed; */
|
||||
/* top: -100px; */
|
||||
/* Posisi header di luar konten */
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-logo {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top: 10px;
|
||||
max-height: 80px;
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
bottom: -50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.page-number:after {
|
||||
content: counter(page) " dari " counter(pages);
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0cm;
|
||||
left: 0cm;
|
||||
right: 0cm;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-top: 3cm;
|
||||
/* Tambahkan margin top sedikit lebih besar dari tinggi header */
|
||||
margin-bottom: 120px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
/* Pastikan konten berada di bawah header */
|
||||
}
|
||||
|
||||
.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>
|
||||
|
||||
<body style="width: 80%; margin: auto;">
|
||||
<header id="header">
|
||||
<table style="width: 100%; border: none;">
|
||||
<tr>
|
||||
<td style="width: 20%; text-align: left;" class="header-left">
|
||||
@include('lpj::component.logo-bag')
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</header>
|
||||
|
||||
<main class="content">
|
||||
}
|
||||
$data = rtrim($data, ', ');
|
||||
@endphp
|
||||
<main class="content">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
@@ -129,9 +38,9 @@
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Kepada</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $rap['kepada'] ?? '' }}</td>
|
||||
<td style="width: 20%; padding: 2px; vertical-align: top;">Kepada</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td style="width: 79%; vertical-align: top;">{{ $rap['kepada'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Dari</td>
|
||||
@@ -144,188 +53,544 @@
|
||||
<td style="width: 79%; padding: 2px;">{{ $nomorLaporan ?? '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Tanggal</td>
|
||||
<td style="width: 20%; padding: 2px;">Tanggal Survey</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
{{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 25%; padding: 2px; vertical-align: top;">Cabang/Pemohon</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top; vertical-align: top;">
|
||||
{{ $permohonan->debiture->branch->name ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 25%; padding: 2px;">Ao</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="vertical-align: top; padding: 2px;">{{ $permohonan->user->name ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 25%; padding: 2px; vertical-align: top;">Perwakilan Developer</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">{{ $forminspeksi['asset']['pihak_bank'] ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Perihal</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $rap['perihal'] ?? '' }}</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%;">{{ $rap['perihal'] ?? '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div style="border-top: 1px solid black; width: 100%;"></div>
|
||||
|
||||
<h2 style="text-transform: uppercase;">Copy Dokumen yang Dilampirkan</h2>
|
||||
<table style="width: 100%;">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
@php
|
||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||
$teams = $permohonan->region->teams;
|
||||
|
||||
|
||||
|
||||
@endphp
|
||||
@if (isset($dokumen))
|
||||
@foreach ($dokumen->detail as $index => $details)
|
||||
<h2 style="text-transform: uppercase;">NAMA DEVELOPER</h2>
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td>
|
||||
{{ $index + 1 }}. {{ $details->jenisLegalitasJaminan->name ?? '' }}
|
||||
@if (isset($details->dokumen_jaminan))
|
||||
<td style="width: 20%; padding: 2px;">Nama</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%;">{{ $permohonan->debiture->name ?? '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2 style="text-transform: uppercase;">NAMA PROYEK</h2>
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td style="width: 20%; padding: 2px;">Proyek</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%;">{{ $data ?? '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 style="text-transform: uppercase;">ALAMAT</h2>
|
||||
<table style="width: 100%; ">
|
||||
<tr>
|
||||
<td width="20%">Terletak di</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['address'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Desa/Kelurahan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['village_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kecamatan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['district_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kabupaten/Kota</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['city_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Provinsi</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['province_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h2 style="text-transform: uppercase;">DOKUMEN TERLAMPIR</h2>
|
||||
<table style="width: 100%;">
|
||||
|
||||
@if (@isset($dokumen))
|
||||
@foreach ($dokumen->detail as $detail)
|
||||
<tr>
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
<td style="width: 20%; padding: 2px;">
|
||||
{{ $detail->name ?? '' }}
|
||||
</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
@php
|
||||
$dokumen_nomor = is_array(json_decode($details->dokumen_nomor))
|
||||
? json_decode($details->dokumen_nomor)
|
||||
: ($details->dokumen_nomor
|
||||
? [$details->dokumen_nomor]
|
||||
: []);
|
||||
$dokumen_jaminan = is_string($detail->dokumen_jaminan)
|
||||
? json_decode($detail->dokumen_jaminan, true)
|
||||
: [];
|
||||
$dokumen_jaminan = is_array($dokumen_jaminan)
|
||||
? $dokumen_jaminan
|
||||
: [$detail->dokumen_jaminan];
|
||||
|
||||
$dokumen_nomor = is_string($detail->dokumen_nomor)
|
||||
? json_decode($detail->dokumen_nomor, true)
|
||||
: [];
|
||||
$dokumen_nomor = is_array($dokumen_nomor)
|
||||
? $dokumen_nomor
|
||||
: [$detail->dokumen_nomor];
|
||||
@endphp
|
||||
@foreach ($dokumen_nomor as $nomor)
|
||||
<div>{{ $nomor }}</div>
|
||||
|
||||
@foreach ($dokumen_jaminan as $index => $dokumen)
|
||||
<div>
|
||||
@if (!empty($dokumen_nomor[$index]))
|
||||
<span>{{ $dokumen_nomor[$index] }}</span>
|
||||
@endif
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
@if (isset($detail->details))
|
||||
@if (json_decode($detail->details))
|
||||
@foreach (json_decode($detail->details) as $key => $value)
|
||||
@if (!is_null($value) && $value !== '')
|
||||
<td style="width: 20%; padding: 2px;">
|
||||
{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
|
||||
<td style="width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%; padding: 2px;">{{ $value }}
|
||||
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
|
||||
<sup>m2</sup>
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
@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>
|
||||
|
||||
<h2 style="text-transform: uppercase;">Informasi Perusahaan/Kondisi dan Lingkungan Sekitar</h2>
|
||||
<h2 style="text-transform: uppercase;">DESKRIPSI DEVELOPER</h2>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td>{{ $permohonan->debiture->name ?? '' }} {{ $forminspeksi['pengalaman_developer'] ?? '' }}
|
||||
{{ $forminspeksi['developer_anggota'] ?? '' }}
|
||||
<p style="padding-left: 15px;">
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">Pengalaman Developer & Proyek Yang Pernah
|
||||
Dibuat</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td style="width: 79%;">{!! nl2br(e($forminspeksi['pengalaman_developer'] ?? 'Data tidak tersedia')) !!}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">Apakah Developer Anggota REI</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td>{!! nl2br(e($forminspeksi['developer_anggota'] ?? 'Data tidak tersedia')) !!}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
@isset($forminspeksi['lainnya_developer'])
|
||||
@foreach ($forminspeksi['lainnya_developer'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $forminspeksi['kapan_mulai_dibangun'] ?? '' }}<br>
|
||||
<p style="padding-left: 15px;">
|
||||
{{ $forminspeksi['kondisi_perumahan'] ?? '' }}<br>
|
||||
{{ $forminspeksi['progres_pembangunan'] ?? '' }}<br>
|
||||
{{ $forminspeksi['kontraktor'] ?? '' }}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $forminspeksi['kontraktor'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@isset($forminspeksi['kerjasama_dengan_bank'])
|
||||
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
<p style="padding-left: 15px;">
|
||||
@isset($forminspeksi['batas_batas_perumahan'])
|
||||
@foreach ($forminspeksi['batas_batas_perumahan'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@isset($forminspeksi['harga_unit'])
|
||||
@foreach ($forminspeksi['harga_unit'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
<p style="padding-left: 15px;">
|
||||
@isset($forminspeksi['progres_penjualan'])
|
||||
@foreach ($forminspeksi['progres_penjualan'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@isset($forminspeksi['fasus_fasum'])
|
||||
@foreach ($forminspeksi['fasus_fasum'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>@isset($forminspeksi['target_market'])
|
||||
@foreach ($forminspeksi['target_market'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $forminspeksi['kontraktor'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $forminspeksi['lingkungan_sekitar'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">Lainnya</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td>
|
||||
<p style="padding-left: 15px;">
|
||||
|
||||
{{ $forminspeksi['fakta']['peruntukan'] ?? '' }}<br>
|
||||
{{ $forminspeksi['fakta']['gsb'] ?? '' }}<br>
|
||||
{{ $forminspeksi['fakta']['kdb'] ?? '' }}<br>
|
||||
{{ $forminspeksi['fakta']['klb'] ?? '' }}
|
||||
</p>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endisset
|
||||
</table>
|
||||
<h2 style="text-transform: uppercase;">KONDISI, LINGKUNGAN DAN PROGRESS PEMBANGUNAN</h2>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<td>13. {{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}</td>
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">Kapan Mulai Dibangun & Target Penyelesaian
|
||||
</td>
|
||||
<td style="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; 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="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td>{!! nl2br(e($forminspeksi['transportasi_umum'] ?? 'Data tidak tersedia')) !!}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
@isset($forminspeksi['lainnya_kondisi'])
|
||||
@foreach ($forminspeksi['lainnya_kondisi'] as $item)
|
||||
<tr>
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">Lainnya</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td>
|
||||
@isset($forminspeksi['keterangan'])
|
||||
@foreach ($forminspeksi['keterangan'] as $item)
|
||||
<div>{{ $item }}</div>
|
||||
@endforeach
|
||||
@endisset
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endisset
|
||||
</table>
|
||||
|
||||
@isset($forminspeksi['partisi'])
|
||||
<h2 style="text-transform: uppercase;">PARTISI BANGUNAN</h2>
|
||||
<table style="width: 100%;">
|
||||
@if (is_array($forminspeksi['partisi']))
|
||||
@foreach ($forminspeksi['partisi'] as $key => $item)
|
||||
@if (is_array($item))
|
||||
<tr>
|
||||
<td style="vertical-align: top; width: 20%; padding: 2px;">
|
||||
{{ $item['nama'] ?? '' }}
|
||||
</td>
|
||||
<td style="vertical-align: top; width: 1%; padding: 2px;">:</td>
|
||||
<td>
|
||||
{{ $item['value'] ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
@endisset
|
||||
|
||||
@isset($forminspeksi['jumlah_unit'])
|
||||
<h2 style="text-transform: uppercase;">JUMLAH UNIT, BLOK, TYPE DAN LUAS BANGUNAN</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['jumlah_unit'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['batas_batas_perumahan'])
|
||||
<h2 style="text-transform: uppercase;">BATAS-BATAS PERUMAHAN</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['batas_batas_perumahan'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['fasus_fasum'])
|
||||
<h2 style="text-transform: uppercase;">FASOS/FASUM</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['fasus_fasum'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['progres_penjualan'])
|
||||
<h2 style="text-transform: uppercase;">PROGRES PENJUALAN SAAT INI</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['progres_penjualan'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['harga_unit'])
|
||||
<h2 style="text-transform: uppercase;">HARGA UNIT</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['harga_unit'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['target_market'])
|
||||
<h2 style="text-transform: uppercase;">TARGET MARKET</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['target_market'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['kerjasama_dengan_bank'])
|
||||
<h2 style="text-transform: uppercase;">KERJASAMA DENGAN BANK LAIN</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['kerjasama_dengan_bank'] as $item)
|
||||
<tr>
|
||||
<td>
|
||||
{!! nl2br(e($item)) !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
@isset($forminspeksi['rute_menuju_lokasi'])
|
||||
<h2 style="text-transform: uppercase;">RUTE MENUJU LOKASI</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{{ $forminspeksi['rute_menuju_lokasi'] ?? '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
@endisset
|
||||
@if (isset($forminspeksi['fakta']) && is_array($forminspeksi['fakta']))
|
||||
<h2 style="text-transform: uppercase;">ATURAN TATA KOTA</h2>
|
||||
<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>
|
||||
@endif
|
||||
|
||||
@isset($forminspeksi['fakta']['keterangan'])
|
||||
|
||||
|
||||
<h2 style="text-transform: uppercase;">CATATAN LAINNYA</h2>
|
||||
<table>
|
||||
@foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan)
|
||||
<tr>
|
||||
<td>
|
||||
<p>{!! nl2br(e($keterangan)) !!}</p>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endisset
|
||||
<p>Demikian kami sampaikan, atas perhatiannya kami ucapkan terima kasih.</p>
|
||||
|
||||
<table style="width: 100%; text-align: center;">
|
||||
<tr>
|
||||
<td style="height: 50px;"></td>
|
||||
<td style="height: 50px;"></td>
|
||||
<td style="height: 50px;"></td>
|
||||
<td style="height: 50px;"></td>
|
||||
</tr>
|
||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
||||
@php
|
||||
use Modules\Usermanagement\Models\User;
|
||||
|
||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
||||
$imagePathPenilai = storage_path('app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign);
|
||||
|
||||
$soUser = User::where('id', $senior_officer->id)->first();
|
||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
||||
|
||||
$imagePathEO = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('EO Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('EO Appraisal')->first()->sign,
|
||||
);
|
||||
|
||||
$imagePathDD = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('DD Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('DD Appraisal')->first()->sign,
|
||||
);
|
||||
@endphp
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>{{ User::role('DD Appraisal')->first()->name ?? '' }}
|
||||
<br>Deputy Director
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathPenilai))
|
||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<br>SO Region
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathSo))
|
||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}
|
||||
<br>Appraisal
|
||||
@endif
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathEO))
|
||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathDD))
|
||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('PENILAI')) }}
|
||||
</span>
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ $senior_officer->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
||||
</span>
|
||||
|
||||
</td>
|
||||
@endif
|
||||
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
</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: 12px;">
|
||||
{{ 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">
|
||||
@@ -335,15 +600,5 @@
|
||||
</div>
|
||||
@include('lpj::penilai.components.foto-jaminan')
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer></footer>
|
||||
|
||||
<script>
|
||||
const data = @json($forminspeksi);
|
||||
console.log(data);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
</main>
|
||||
@include('lpj::penilai.components.footer')
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,115 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Laporan Penilai Jaminan</title>
|
||||
<style>
|
||||
* {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 14px
|
||||
}
|
||||
|
||||
/** Define the header rules **/
|
||||
@page {
|
||||
margin-top: 100px;
|
||||
/* Ruang untuk header */
|
||||
margin-bottom: 30px;
|
||||
/* Ruang untuk footer */
|
||||
}
|
||||
|
||||
#header {
|
||||
/* position: fixed; */
|
||||
/* top: -100px; */
|
||||
/* Posisi header di luar konten */
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.header-logo {
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top: 10px;
|
||||
max-height: 80px;
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: fixed;
|
||||
bottom: -50px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #ddd;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.page-number:after {
|
||||
content: counter(page) " dari " counter(pages);
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.page-break {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0cm;
|
||||
left: 0cm;
|
||||
right: 0cm;
|
||||
}
|
||||
|
||||
body {
|
||||
margin-top: 3cm;
|
||||
/* Tambahkan margin top sedikit lebih besar dari tinggi header */
|
||||
margin-bottom: 120px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
/* Pastikan konten berada di bawah header */
|
||||
}
|
||||
|
||||
.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>
|
||||
|
||||
<body style="width: 80%; margin: auto">
|
||||
@php
|
||||
@include('lpj::penilai.components.header')
|
||||
@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();
|
||||
@@ -134,22 +26,14 @@
|
||||
}
|
||||
}
|
||||
$data = rtrim($data, ', ');
|
||||
@endphp
|
||||
<header id="header">
|
||||
<table style="width: 100%; border: none;">
|
||||
<tr>
|
||||
<td style="width: 20%; text-align: left;" class="header-left">
|
||||
@include('lpj::component.logo-bag')
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</header>
|
||||
@endphp
|
||||
|
||||
<main class="content">
|
||||
<main class="content">
|
||||
<table style="width: 100%">
|
||||
<tr>
|
||||
<td style="text-align: center; margin-top: 5px;">
|
||||
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">Resume
|
||||
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">
|
||||
Resume
|
||||
Penilaian
|
||||
</h2>
|
||||
<p style="font-size: 12px; margin: 0;">NO: {{ $nomorLaporan }}</p>
|
||||
@@ -172,70 +56,117 @@
|
||||
<td>{{ $permohonan->debiture->name ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Aset</td>
|
||||
<td>:</td>
|
||||
<td idth="25%">Aset</td>
|
||||
<td width="1%">:</td>
|
||||
<td>{{ $data ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>Lokasi Objek</td>
|
||||
<td>:</td>
|
||||
<td>{{ $alamat['village_code'] ?? '' }}, {{ $alamat['district_code'] ?? '' }},
|
||||
{{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<td style="vertical-align: top;">Legalitas</td>
|
||||
<td style="vertical-align: top;">:</td>
|
||||
<td style="vertical-align: top;">
|
||||
<table style="margin: 0; padding: 0;">
|
||||
@if (isset($dokumen))
|
||||
@foreach ($dokumen->detail as $detail)
|
||||
<tr>
|
||||
<td style="vertical-align: top; padding:2px;">Dokumen</td>
|
||||
<td style="vertical-align: top; padding:2px;">:</td>
|
||||
<td style="vertical-align: top; padding:2px;">
|
||||
<table>
|
||||
@if (@isset($dokumen))
|
||||
@foreach ($dokumen->detail as $details)
|
||||
<tr>
|
||||
<td>{{ $details->jenisLegalitasJaminan->name ?? '' }}
|
||||
@if (isset($detail->dokumen_jaminan))
|
||||
<td style="padding: 0; margin: 0;">
|
||||
@php
|
||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan))
|
||||
? json_decode($detail->dokumen_jaminan)
|
||||
: [$detail->dokumen_jaminan];
|
||||
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor))
|
||||
? json_decode($detail->dokumen_nomor)
|
||||
: ($detail->dokumen_nomor
|
||||
? [$detail->dokumen_nomor]
|
||||
: []);
|
||||
@endphp
|
||||
|
||||
@foreach ($dokumen_jaminan as $index => $dokumen)
|
||||
<div>
|
||||
@if (!empty($dokumen_nomor))
|
||||
<span>
|
||||
{{ $dokumen_nomor[$index] }}</span>
|
||||
@if (!empty($dokumen_nomor[$index]))
|
||||
<span>{{ $dokumen_nomor[$index] }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<br>
|
||||
@endforeach
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@php
|
||||
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai';
|
||||
|
||||
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
|
||||
<tr>
|
||||
@if (isset($permohonan->documents))
|
||||
@foreach ($permohonan->documents as $document)
|
||||
@foreach ($document->detail as $detail)
|
||||
@if (isset($detail->details))
|
||||
@php
|
||||
$details = json_decode($detail->details, true);
|
||||
@endphp
|
||||
<td>Luas Tanah</td>
|
||||
<td>:</td>
|
||||
<td>{{ $luas ?? '' }}</td>
|
||||
@if ($details)
|
||||
@foreach ($details as $key => $value)
|
||||
@if (!is_null($value) && $value !== '')
|
||||
<tr>
|
||||
<td style="">{{ ucwords(str_replace('_', ' ', $key)) ?? '' }}</td>
|
||||
<td style=" padding: 2px;">:</td>
|
||||
<td style="">{{ $value }}
|
||||
@if ($key == 'luas_bangunan' || $key == 'luas_tanah')
|
||||
<sup>m2</sup>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
@endforeach
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="25%">Terletak di</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['address'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Desa/Kelurahan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['village_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kecamatan</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['district_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Kabupaten/Kota</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td> {{ $alamat['city_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Provinsi</td>
|
||||
<td style="width: 1%; vertical-align: top;">:</td>
|
||||
<td>{{ $alamat['province_code'] ?? '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tanggal Survey</td>
|
||||
<td>:</td>
|
||||
<td>{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
|
||||
<td>{{ isset($permohonan->penilaian->tanggal_kunjungan) ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '' }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Surveyor</td>
|
||||
<td>:</td>
|
||||
<td>{{ $surveyor->userPenilaiTeam->name ?? '' }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Tanggal Resume</td>
|
||||
<td>:</td>
|
||||
<td>{{ formatTanggalIndonesia($resumeData['tanggal_resume']) ?? '' }}</td>
|
||||
<td>{{ optional($resumeData)['tanggal_resume'] ? formatTanggalIndonesia($resumeData['tanggal_resume']) : '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
@@ -250,7 +181,7 @@
|
||||
@isset($resumeData['fakta']['fakta_positif'])
|
||||
@foreach ($resumeData['fakta']['fakta_positif'] as $key => $item)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }} . {{ $item }}</td>
|
||||
<td>{!! nl2br(e($item)) !!}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endisset
|
||||
@@ -267,7 +198,7 @@
|
||||
@isset($resumeData['fakta']['fakta_negatif'])
|
||||
@foreach ($resumeData['fakta']['fakta_negatif'] as $key => $item)
|
||||
<tr>
|
||||
<td>{{ $key + 1 }} . {{ $item }}</td>
|
||||
<td>{!! nl2br(e($item)) !!}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endisset
|
||||
@@ -293,22 +224,31 @@
|
||||
</table>
|
||||
|
||||
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 10px;">
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
|
||||
</tr>
|
||||
|
||||
@foreach ($resumeData['fisik'] as $item)
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Tanah</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Bangunan</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Pasar Wajar</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Likuidasi {{ isset($item['likuidasi']) ? '('. $item['likuidasi'] . ' %)' : '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">{{ $item['sertifikat'] ?? '' }}
|
||||
</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_tanah']) ? $item['luas_tanah'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_bangunan']) ? $item['luas_bangunan'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['nilai']) ? formatRupiah($item['nilai']) : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['total_likuidasi']) ? formatRupiah($item['total_likuidasi']) : '-' }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
|
||||
@if (!empty($resumeData['sesuai_imb']))
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
<tr>
|
||||
<td style="">
|
||||
@@ -318,22 +258,31 @@
|
||||
</table>
|
||||
|
||||
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 10px;">
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
|
||||
</tr>
|
||||
|
||||
@foreach ($resumeData['sesuai_imb'] as $item)
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Tanah</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Bangunan</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Pasar Wajar</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Likuidasi {{ isset($item['likuidasi']) ? '('. $item['likuidasi'] . ' %)' : '-' }}</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ $item['sertifikat'] ?? '' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_tanah']) ? $item['luas_tanah'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_bangunan']) ? $item['luas_bangunan'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['nilai']) ? formatRupiah($item['nilai']) : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['total_likuidasi']) ? formatRupiah($item['total_likuidasi']) : '-' }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
|
||||
@endif
|
||||
@if (!empty($resumeData['tambahan']))
|
||||
@foreach ($resumeData['tambahan'] as $index => $item)
|
||||
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
|
||||
@@ -348,16 +297,23 @@
|
||||
|
||||
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 1px;">
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan (m²)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Sertifikat</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Tanah</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Luas Bangunan</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Pasar Wajar</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">Nilai Likuidasi {{ isset($item['likuidasi']) ? '('. $item['likuidasi'] . ' %)' : '' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ $item['sertifikat'] ?? '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_tanah']) ? $item['luas_tanah'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['luas_bangunan']) ? $item['luas_bangunan'] . ' m²' : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['nilai']) ? formatRupiah($item['nilai']) : '-' }}</td>
|
||||
<td style="border: 1px solid #000; padding: 4px; text-align: center">
|
||||
{{ isset($item['total_likuidasi']) ? formatRupiah($item['total_likuidasi']) : '-' }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
@endforeach
|
||||
@@ -371,12 +327,11 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $resumeData['keterangan'] ?? '' }}</td>
|
||||
<td>{!! nl2br(e($resumeData['keterangan'] ?? '')) !!}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table style="width: 100%">
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<table>
|
||||
@@ -384,7 +339,7 @@
|
||||
<label style="font-weight: bold;">DISCLAIMER</label>
|
||||
<div>
|
||||
<ol style="padding-left: 20px; list-style-type: decimal; margin-top: 0;">
|
||||
<li style="margin-bottom: 5px;">LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM
|
||||
<li style="margin-bottom: 5px; ">LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM
|
||||
DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN JAMINAN</li>
|
||||
<li style="margin-bottom: 5px;">LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI
|
||||
DASAR PENGAJUAN DAN ATAU PENCAIRAN KREDIT, LAPORAN YANG DIGUNAKAN TETAP WAJIB
|
||||
@@ -393,10 +348,12 @@
|
||||
PELENGKAP DLL AKAN TERCATAT DI LAPORAN PENILAIAN JAMINAN (LPJ) NANTI</li>
|
||||
<li style="margin-bottom: 5px;">LAPORAN RESUME INI HANYA DIGUNAKAN UNTUK KEPENTINGAN
|
||||
INTERNAL BAGI</li>
|
||||
<li style="margin-bottom: 5px;">LAPORAN RESUME INI HANYA BERLAKU <span style="color:red;">14 HARI KALENDER </span>
|
||||
<li style="margin-bottom: 5px;">LAPORAN RESUME INI HANYA BERLAKU <span
|
||||
style="color:red;">14 HARI KALENDER </span>
|
||||
TERHITUNG DARI TANGGAL RESUME INI DIBUAT SESUAI ATURAN YANG BERLAKU, APABILA
|
||||
LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG BERLAKU</li>
|
||||
<li style="margin-bottom: 5px;">Apabila sudah melewati 6 bulan, maka harus penilaian
|
||||
<li style="margin-bottom: 5px; text-transform: uppercase;">Apabila sudah melewati 6
|
||||
bulan, maka harus penilaian
|
||||
ulang kembali</li>
|
||||
</ol>
|
||||
</div>
|
||||
@@ -408,33 +365,99 @@
|
||||
<tr>
|
||||
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
||||
</tr>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<table style="width: 100%; text-align: center;">
|
||||
<tr>
|
||||
<td style="height: 50px"></td>
|
||||
<td style="height: 50px"></td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
PENILAI
|
||||
</td>
|
||||
<td> {{ $senior_officer->name ?? '' }}</br>
|
||||
SENIOR OFFICER
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
||||
@php
|
||||
use Modules\Usermanagement\Models\User;
|
||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
||||
$imagePathPenilai = storage_path(
|
||||
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
||||
);
|
||||
|
||||
$soUser = User::where('id', $senior_officer->id)->first();
|
||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
||||
|
||||
$imagePathEO = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('EO Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('EO Appraisal')->first()->sign,
|
||||
);
|
||||
|
||||
$imagePathDD = storage_path(
|
||||
'app/public/signatures/' .
|
||||
User::role('DD Appraisal')->first()->id .
|
||||
'/' .
|
||||
User::role('DD Appraisal')->first()->sign,
|
||||
);
|
||||
@endphp
|
||||
<td> {{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||
EXECUTIVE OFFICER
|
||||
<tr>
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathPenilai))
|
||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
<td> {{ $surveyor->userPenilaiTeam->name ?? '' }}</br>
|
||||
SURVEYOR
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathSo))
|
||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathEO))
|
||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;height: 50px">
|
||||
@if (file_exists($imagePathDD))
|
||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
||||
@endif
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('PENILAI')) }}
|
||||
</span>
|
||||
</td>
|
||||
@if ($permohonan->approval_so != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ $senior_officer->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
||||
</span>
|
||||
|
||||
</td>
|
||||
@endif
|
||||
|
||||
@if ($permohonan->approval_eo != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
@if ($permohonan->approval_dd != null)
|
||||
<td style=" padding: 4px;">
|
||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||
<span>
|
||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
||||
</span>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="page-break"></div>
|
||||
@@ -446,11 +469,6 @@
|
||||
</div>
|
||||
@include('lpj::penilai.components.foto-jaminan')
|
||||
</div>
|
||||
</main>
|
||||
</main>
|
||||
|
||||
<footer id="footer">
|
||||
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@include('lpj::penilai.components.footer')
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<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="rap">
|
||||
@@ -41,7 +42,7 @@
|
||||
<label class="form-label max-w-56">Nomor RAP</label>
|
||||
<div class="flex flex-wrap items-base line w-full">
|
||||
<input type="text" name="nomor_rap" class="input w-full" placeholder="Masukkan..."
|
||||
value="{{ $noLpRAP ?? '' }}" @readonly(true)>
|
||||
value="{{ $nomorLaporan ?? '' }}" @readonly(true)>
|
||||
</div>
|
||||
</div>
|
||||
{{-- 250109828129/ --}}
|
||||
@@ -64,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>
|
||||
@@ -87,7 +93,7 @@
|
||||
@endsection
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
const rap = @json($rap);
|
||||
const rap = @json($forminspeksi);
|
||||
console.log('rap', rap)
|
||||
|
||||
function updateAlamatFields(status) {
|
||||
|
||||
@@ -29,10 +29,23 @@
|
||||
<h3 class="card-title uppercase">
|
||||
Data Jaminan
|
||||
</h3>
|
||||
@php
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@endphp
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ url()->previous() }}" 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>
|
||||
@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
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body grid gap-5 grid-cols-2">
|
||||
@@ -47,7 +60,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>
|
||||
@@ -181,7 +194,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center">Nilai Likuidasi(%)</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
@@ -202,7 +216,18 @@
|
||||
class="input number-format"></td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="fisik_nilai[]"
|
||||
class="input number-format" value="{{ $item['nilai'] }}">
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="likuidasi[]" class="input likuidasi"
|
||||
value="{{ $item['likuidasi'] ?? 0 }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="total_nilai_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@@ -212,14 +237,55 @@
|
||||
<input type="text" name="fisik_sertifikat[]"
|
||||
class="input number-format">
|
||||
</td>
|
||||
|
||||
@if (isset($permohonan->documents))
|
||||
@foreach ($permohonan->documents as $item)
|
||||
@php
|
||||
$luas_tanah = '';
|
||||
$luas_bangunan = '';
|
||||
if ($item->detail) {
|
||||
foreach ($item->detail as $luas) {
|
||||
if (
|
||||
isset($luas->name) &&
|
||||
$luas->name === 'Sertifikat'
|
||||
) {
|
||||
$details = json_decode($luas->details, true);
|
||||
$luas_tanah = isset($details['luas_tanah'])
|
||||
? $details['luas_tanah']
|
||||
: '';
|
||||
break;
|
||||
}
|
||||
|
||||
if (isset($luas->name) && $luas->name === 'IMB') {
|
||||
$details = json_decode($luas->details, true);
|
||||
$luas_bangunan = isset($details['luas_bangunan'])
|
||||
? $details['luas_bangunan']
|
||||
: '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
@endforeach
|
||||
@endif
|
||||
<td class="text-center">
|
||||
<input type="text" name="fisik_luas_tanah[]"
|
||||
class="input number-format">
|
||||
class="input number-format" value="{{ $luas_tanah }}">
|
||||
</td>
|
||||
<td class="text-center"> <input type="text" name="fisik_luas_bangunan[]"
|
||||
class="input number-format"></td>
|
||||
class="input number-format" value="{{ $luas_bangunan }}"></td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="fisik_nilai[]" class="input number-format">
|
||||
<input type="text" name="fisik_nilai[]"
|
||||
class="input currency-format nilai-pasar"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="likuidasi[]" class="input likuidasi"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="total_nilai_likuidasi[]"
|
||||
class="input currency-format total-likuidasi" readonly>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@@ -240,7 +306,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center">Nilai Likuidasi (%)</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
@@ -262,7 +329,18 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_nilai[]"
|
||||
class="input number-format" value="{{ $item['nilai'] }}">
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_likuidasi[]"
|
||||
class="input likuidasi" value="{{ $item['likuidasi'] ?? '' }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@@ -281,7 +359,17 @@
|
||||
class="input number-format">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_nilai[]" class="input number-format">
|
||||
<input type="text" name="sesuai_nilai[]" class="input currency-format"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_likuidasi[]" class="input likuidasi"
|
||||
value="{{ $item['likuidasi'] ?? 0 }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="sesuai_total_likuidasi[]"
|
||||
class="input currency-format total-likudasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@@ -291,7 +379,7 @@
|
||||
</div>
|
||||
|
||||
@if (!empty($resumeData['tambahan']))
|
||||
@foreach ($resumeData['tambahan'] as $item)
|
||||
@foreach ($resumeData['tambahan'] as $counter => $item)
|
||||
<div id="kesimpulan" class="gird gap-5">
|
||||
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@@ -299,7 +387,8 @@
|
||||
<table
|
||||
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
|
||||
<input class="input" name="tambahan_nama_kesimpulan[]"
|
||||
placeholder="Masukkan Nama Kesimpulan" type="text" value="{{ $item['tambahan_nama_kesimpulan'] ?? ''}}">
|
||||
placeholder="Masukkan Nama Kesimpulan" type="text"
|
||||
value="{{ $item['tambahan_nama_kesimpulan'] ?? '' }}">
|
||||
|
||||
|
||||
<thead>
|
||||
@@ -309,43 +398,50 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
|
||||
<th class="text-center">Nilai Likuidasi (%)</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (!empty($resumeData['tambahan']))
|
||||
{{-- @foreach ($resumeData['tambahan'] as $item) --}}
|
||||
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_sertifikat[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['sertifikat'] }}">
|
||||
class="input number-format" value="{{ $item['sertifikat'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_tanah[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['luas_tanah'] }}">
|
||||
class="input number-format" value="{{ $item['luas_tanah'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_luas_bangunan[]"
|
||||
class="input number-format"
|
||||
value="{{ $item['luas_bangunan'] }}">
|
||||
class="input number-format" value="{{ $item['luas_bangunan'] }}">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai[]"
|
||||
class="input number-format" value="{{ $item['nilai'] }}">
|
||||
class="input currency-format nilai-pasar"
|
||||
value="{{ $item['nilai'] }}" onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai_likuidasi[]"
|
||||
class="input likuidasi " value="{{ $item['likuidasi'] ?? 0 }}"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi"
|
||||
value="{{ $item['total_likuidasi'] ?? 0 }}">
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
<div id="kesimpulans" class="grid gap-5 w-full"></div>
|
||||
<div>
|
||||
<button type="button" class="btn btn-primary btn-sm mt-5" onclick="tambahKesimpulanNilai()">
|
||||
<i class="ki-outline ki-plus"></i>
|
||||
@@ -353,7 +449,7 @@
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="kesimpulan" class="grid gap-5 w-full"></div>
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5" style="margin-top: 20px">
|
||||
|
||||
@@ -393,13 +489,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>
|
||||
@@ -412,13 +514,15 @@
|
||||
@endsection
|
||||
@include('lpj::surveyor.js.utils')
|
||||
<script type="text/javascript">
|
||||
let data = @json($resumeData ?? 0);
|
||||
console.log(data);
|
||||
let counter = 3;
|
||||
|
||||
function tambahKesimpulanNilai() {
|
||||
const kesimpulan = document.getElementById('kesimpulan');
|
||||
const kesimpulan = document.getElementById('kesimpulans');
|
||||
|
||||
kesimpulan.innerHTML += `
|
||||
<div class="grid gap-5 w-full" id="kesimpulan-${counter}">
|
||||
<div class="grid gap-5 w-full mt-5" id="kesimpulan-${counter}">
|
||||
|
||||
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@@ -426,7 +530,9 @@
|
||||
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
|
||||
|
||||
<input type="text" name="tambahan_nama_kesimpulan[]"
|
||||
class="input number-format">
|
||||
class="input number-format"
|
||||
placeholder="Masukkan Nama Kesimpulan.."
|
||||
>
|
||||
|
||||
<thead>
|
||||
|
||||
@@ -435,6 +541,8 @@
|
||||
<th class="text-center">Luas Tanah</th>
|
||||
<th class="text-center">Luas Bangunan</th>
|
||||
<th class="text-center">Nilai Pasar Wajar</th>
|
||||
<th class="text-center">Nilai Likuidasi (%)</th>
|
||||
<th class="text-center">Total Nilai Likuidasi</th>
|
||||
<th class="text-center">Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -454,7 +562,16 @@
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai[]"
|
||||
class="input number-format">
|
||||
class="input currency-format nilai-pasar">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_nilai_likuidasi[]"
|
||||
class="input likuidasi"
|
||||
onkeyup="calculateTotal(this)">
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<input type="text" name="tambahan_total_likuidasi[]"
|
||||
class="input currency-format total-likuidasi" >
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<button type="button" class="btn btn-danger" onclick="deleteRow(this)">Delete</button>
|
||||
@@ -466,6 +583,18 @@
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const newCurrencyInputs = kesimpulan.querySelectorAll(`#kesimpulan-${counter} .currency-format`);
|
||||
newCurrencyInputs.forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial value jika ada
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
counter++;
|
||||
}
|
||||
|
||||
@@ -488,7 +617,7 @@
|
||||
|
||||
const formElement = document.querySelector('form');
|
||||
const jsonData = formToJson(formElement);
|
||||
console.log('Data dalam format JSON:', JSON.stringify(jsonData, null, 2));
|
||||
console.log('Data dalam format JSON:', JSON.stringify(formElement, null, 2));
|
||||
|
||||
const urlParams = new URLSearchParams(window.location.search); // Mengambil query parameters dari URL
|
||||
const permohonanId = urlParams.get('permohonanId');
|
||||
@@ -585,7 +714,10 @@
|
||||
sertifikat: row.querySelector('input[name="fisik_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="fisik_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="fisik_luas_bangunan[]"]')?.value || "",
|
||||
nilai: row.querySelector('input[name="fisik_nilai[]"]')?.value || ""
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="fisik_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="total_nilai_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
if (fisikData.sertifikat) {
|
||||
jsonData.fisik.push(fisikData);
|
||||
@@ -598,7 +730,10 @@
|
||||
sertifikat: row.querySelector('input[name="sesuai_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="sesuai_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="sesuai_luas_bangunan[]"]')?.value || "",
|
||||
nilai: row.querySelector('input[name="sesuai_nilai[]"]')?.value || ""
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="sesuai_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="sesuai_likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="sesuai_total_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
if (imbData.sertifikat) {
|
||||
jsonData.sesuai_imb.push(imbData);
|
||||
@@ -612,7 +747,10 @@
|
||||
sertifikat: row.querySelector('input[name="tambahan_sertifikat[]"]')?.value || "",
|
||||
luas_tanah: row.querySelector('input[name="tambahan_luas_tanah[]"]')?.value || "",
|
||||
luas_bangunan: row.querySelector('input[name="tambahan_luas_bangunan[]"]')?.value || "",
|
||||
nilai: row.querySelector('input[name="tambahan_nilai[]"]')?.value || ""
|
||||
nilai: cleanCurrencyValue(row.querySelector('input[name="tambahan_nilai[]"]')?.value || ""),
|
||||
likuidasi: row.querySelector('input[name="tambahan_nilai_likuidasi[]"]')?.value || "",
|
||||
total_likuidasi: cleanCurrencyValue(row.querySelector(
|
||||
'input[name="tambahan_total_likuidasi[]"]')?.value || "")
|
||||
};
|
||||
console.log(imbData);
|
||||
if (imbData.sertifikat) {
|
||||
@@ -630,5 +768,53 @@
|
||||
return jsonData;
|
||||
}
|
||||
|
||||
// Cara Penggunaan
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Initialize currency format for existing inputs
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial values if they exist
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
function calculateTotal(element) {
|
||||
|
||||
|
||||
const row = element.closest('tr');
|
||||
|
||||
const nilaiPasarInput = row.querySelector('.nilai-pasar');
|
||||
let likuidasiInput = row.querySelector('.likuidasi');
|
||||
|
||||
const totalLikuidasiInput = row.querySelector('.total-likuidasi');
|
||||
|
||||
const cleanNilaiPasar = cleanCurrencyValue(nilaiPasarInput.value);
|
||||
let cleanLikuidasi = cleanCurrencyValue(likuidasiInput.value);
|
||||
|
||||
// Batasi likuidasi maksimal hingga 100
|
||||
cleanLikuidasi = Math.min(parseFloat(cleanLikuidasi) || 0, 100);
|
||||
|
||||
// Format nilai likuidasi dengan simbol %
|
||||
likuidasiInput.value = cleanLikuidasi;
|
||||
|
||||
// Konversi ke angka untuk perhitungan
|
||||
const nilaiPasar = parseFloat(cleanNilaiPasar) || 0;
|
||||
const likuidasi = cleanLikuidasi / 100; // Konversi persentase ke desimal
|
||||
|
||||
// Hitung total likuidasi
|
||||
const totalLikuidasi = nilaiPasar * likuidasi;
|
||||
|
||||
// Tampilkan hasil dengan format yang benar
|
||||
totalLikuidasiInput.value = formatCurrency(totalLikuidasi.toString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
72
resources/views/penilai/edit.blade.php
Normal file
72
resources/views/penilai/edit.blade.php
Normal file
@@ -0,0 +1,72 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('breadcrumbs')
|
||||
{{ Breadcrumbs::render('penilai.edit') }}
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<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">
|
||||
<div class="card-title flex flex-row gap-1.5">
|
||||
Upload File Paparan
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('pembayaran.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('penilai.storePaparan',['id'=> $permohonan->id]) }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Nomor Registrasi
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input readonly type="text" name="nomor_registrasi" id="nomor_registrasi" class="input w-full @error('nomor_registrasi') border-danger bg-danger-light @enderror" value="{{ old('nomor_registrasi', $permohonan->nomor_registrasi ?? '') }}" placeholder="Nomor Registrasi">
|
||||
@error('nomor_registrasi')
|
||||
<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">
|
||||
Debitur
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input readonly type="text" name="debitur" id="debitur" class="input w-full @error('debitur') border-danger bg-danger-light @enderror" value="{{ old('debitur', $permohonan->debiture->name ?? '') }}" placeholder="Debitur">
|
||||
@error('debitur')
|
||||
<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">
|
||||
File Paparan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input type="file" name="file_paparan" id="file_paparan" class="file-input w-full @error('file_paparan') border-danger bg-danger-light @enderror" accept=".pdf,.jpg,.jpeg,.png">
|
||||
@error('file_paparan')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
Proses
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
@push('scripts')
|
||||
|
||||
@endpush
|
||||
@@ -68,6 +68,10 @@
|
||||
<span class="sort"> <span class="sort-label"> Due Date SLA </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="status">
|
||||
<span class="sort"> <span class="sort-label"> Status</span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -178,10 +182,16 @@
|
||||
return `${formatDate(new Date(data.created_at))}`;
|
||||
},
|
||||
},
|
||||
status: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
return `<span class="badge badge-sm badge-default uppercase flex justify-center">${data.status.replace(/-/g, ' ')}</span>`;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
title: 'Action',
|
||||
render: (item, data) => {
|
||||
if (data.status === 'done' || data.status === 'proses-laporan') {
|
||||
if (data.status === 'survey-completed' || 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">
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
],
|
||||
'title' => 'Paparan dokument',
|
||||
])
|
||||
|
||||
|
||||
@else
|
||||
@include('lpj::component.detail-jaminan', [
|
||||
'backLink' => 'penilai.show',
|
||||
@@ -29,5 +27,86 @@
|
||||
@endif
|
||||
|
||||
@include('lpj::penilai.components.foto-lampiran')
|
||||
|
||||
|
||||
@if (isset($formDenah['denahs']) && is_array($formDenah['denahs']) && count($formDenah['denahs']) > 0)
|
||||
<div class="card ">
|
||||
<div class="card-header bg-agi-50 uppercase">
|
||||
Denah
|
||||
</div>
|
||||
@foreach ($formDenah['denahs'] as $index => $denah)
|
||||
<div class="card-body ">
|
||||
<div class="w-full grid gap-5 ">
|
||||
<!-- Preview Container -->
|
||||
<div class="preview-container-{{ $index }}">
|
||||
@if (isset($denah['foto_denah']))
|
||||
@php
|
||||
$fileExtension = pathinfo($denah['foto_denah'], PATHINFO_EXTENSION);
|
||||
@endphp
|
||||
|
||||
@if (in_array($fileExtension, ['jpg', 'jpeg', 'png']))
|
||||
<img src="{{ asset('storage/' . $denah['foto_denah']) }}" style="max-width: 30rem;">
|
||||
@elseif($fileExtension === 'pdf')
|
||||
<embed src="{{ asset('storage/' . $denah['foto_denah']) }}" type="application/pdf"
|
||||
width="100%" height="500px">
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
<div class="flex flex-wrap lg:flex-nowrap w-full gap-4 text-start">
|
||||
<div class="w-full">
|
||||
<div class="flex flex-wrap gap-4">
|
||||
<div class="flex w-full items-center justify-start gap-4">
|
||||
<label class="form-label max-w-56">
|
||||
<span class="form-label">Nama Denah</span>
|
||||
</label>
|
||||
<p class="text-md text-gray-700">
|
||||
{{ isset($denah['nama_denah']) ? $denah['nama_denah'] : '' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-4">
|
||||
<div class="flex w-full items-center justify-start gap-4">
|
||||
<label class="form-label max-w-56">
|
||||
<span class="form-label">Total Luas</span>
|
||||
</label>
|
||||
<p class="text-md text-gray-700">
|
||||
{{ isset($denah['luas_denah']) ? $denah['luas_denah'] . ' m²' : '' }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-b border-b-gray-200 mt-5"></div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50 uppercase">
|
||||
Kertas Kerja
|
||||
</div>
|
||||
<div class="card-body flex items-center justify-between">
|
||||
|
||||
@php
|
||||
$url = '';
|
||||
$fileName = '';
|
||||
if ($penilai && $penilai->kertas_kerja) {
|
||||
$url = asset('storage/' . $penilai->kertas_kerja);
|
||||
$fileName = basename($penilai->kertas_kerja);
|
||||
}
|
||||
@endphp
|
||||
|
||||
@if ($penilai && $penilai->kertas_kerja)
|
||||
<button type="button" class="btn btn-primary" onclick="window.open('{{ $url }}', '_blank')">
|
||||
<i class="ki-outline ki-cloud-download"></i>
|
||||
Lihat Kertas Kerja</button>
|
||||
|
||||
<p class="text-2sm text-gray-700">{{ $fileName }}</p>
|
||||
@else
|
||||
<p class="text-2sm text-gray-700">Belum ada kertas kerja</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@@ -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>
|
||||
@@ -282,6 +282,21 @@
|
||||
@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>
|
||||
@@ -292,7 +307,7 @@
|
||||
<a class="btn btn-outline btn-info "
|
||||
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )">
|
||||
<i class="ki-filled ki-eye"></i>
|
||||
PRIVIEW
|
||||
PREVIEW
|
||||
</a>
|
||||
|
||||
<a class="btn btn-success"
|
||||
@@ -331,20 +346,28 @@
|
||||
$jenisJaminanId = null;
|
||||
$inspeksiId = null;
|
||||
$documentId = null;
|
||||
foreach ($permohonan->debiture->documents as $item) {
|
||||
$documentId = $item->id;
|
||||
$firstDocument = $permohonan->documents->first(); // Ambil dokumen pertama
|
||||
|
||||
if ($firstDocument) {
|
||||
$documentId = $firstDocument->id;
|
||||
|
||||
// Ambil ID inspeksi pertama (jika ada)
|
||||
if ($firstDocument->inspeksi->isNotEmpty()) {
|
||||
$inspeksiId = $firstDocument->inspeksi->first()->id;
|
||||
}
|
||||
foreach ($dokumen->inspeksi as $item) {
|
||||
$inspeksiId = $item->id;
|
||||
|
||||
// Ambil jenis jaminan jika ada
|
||||
if ($firstDocument->jenisjaminan) {
|
||||
$jenisJaminanId = $firstDocument->jenisjaminan->id;
|
||||
}
|
||||
} else {
|
||||
$documentId = 'Tidak ada dokumen';
|
||||
$inspeksiId = 'Tidak ada inspeksi';
|
||||
$jenisJaminanId = 'Tidak ada jenis jaminan';
|
||||
}
|
||||
|
||||
@endphp
|
||||
@foreach ($permohonan->debiture->documents as $document)
|
||||
@if ($document->jenisjaminan)
|
||||
@php
|
||||
$jenisJaminanId = $document->jenisjaminan->id;
|
||||
@endphp
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<div class="flex items-baseline w-full">
|
||||
<label for="" class="form-label max-w-56">Import Kertas Kerja</label>
|
||||
<div class="flex justify-center items-center gap-2">
|
||||
@@ -560,47 +583,18 @@
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Yes'
|
||||
}).then((result) => {
|
||||
|
||||
if (result.isConfirmed) {
|
||||
$.ajax({
|
||||
url: `/penilai/storePaparan/${permohonanId}`,
|
||||
type: "PUT",
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||
},
|
||||
success: function(response) {
|
||||
if (response.success) {
|
||||
// window.location.reload();
|
||||
hideLoadingSwal();
|
||||
Swal.fire({
|
||||
title: 'Berhasil!',
|
||||
text: response.message,
|
||||
icon: 'success',
|
||||
confirmButtonText: 'OK'
|
||||
}).then((response) => {
|
||||
if (response.isConfirmed) {
|
||||
window.location.reload();
|
||||
window.location.href = `/penilai/${permohonanId}/edit`;
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.log('Error checking button status:', error, status, xhr);
|
||||
if (xhr.responseJSON.message) {
|
||||
// window.location.reload();
|
||||
hideLoadingSwal();
|
||||
|
||||
} else {
|
||||
// window.location.reload();
|
||||
hideLoadingSwal();
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
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 ...');
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||
@endsection
|
||||
@section('content')
|
||||
@include('lpj::assetsku.includenya')
|
||||
@include('lpj::assetsku.includenya')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
@include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index'])
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
@foreach ($teamPenilai as $item)
|
||||
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||
@endforeach
|
||||
@if ($penilaianTeam->isEmpty())
|
||||
<option value="pilih_dari_region">Pilih Surveyor dan Penilai Dari Region
|
||||
</option>
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@@ -94,6 +98,29 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="surveyorPenilaiRegion" class="hidden items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Pilih Region
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="input-group w-full">
|
||||
<select id="surveyor_penilai_region_id" name="surveyor_penilai_region_id"
|
||||
class="tomselect input @error('surveyor_penilai_region_id') border-danger bg-danger-light @enderror w-full">
|
||||
<option value="">Pilih Region</option>
|
||||
|
||||
@if (isset($updateTeamPenilai))
|
||||
@foreach ($updateTeamPenilai as $item)
|
||||
<option value="{{ $item->regions->id }}">
|
||||
{{ $item->regions->name }}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<em id="error-surveyor_penilai_region_id" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="different_surveyor_penilai" class="{{ $penilaianTeam->isNotEmpty() ? '' : 'hidden' }}">
|
||||
<div class="grid gap-2.5">
|
||||
@@ -269,7 +296,8 @@
|
||||
Catatan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3" name="keterangan">{{ $permohonan->registrasi_catatan ? $permohonan->registrasi_catatan . "\n\n" : "" }}{{ $penilaian->keterangan ?? '' }}</textarea>
|
||||
<textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3"
|
||||
name="keterangan">{{ $permohonan->registrasi_catatan ? $permohonan->registrasi_catatan . "\n\n" : '' }}{{ $penilaian->keterangan ?? '' }}</textarea>
|
||||
</div>
|
||||
|
||||
<em id="error-keterangan" class="alert text-danger text-sm"></em>
|
||||
@@ -355,20 +383,37 @@
|
||||
const selectedValue = this.value;
|
||||
const sameSurveyorPenilai = document.getElementById('same_surveyor_penilai');
|
||||
const differentSurveyorPenilai = document.getElementById('different_surveyor_penilai');
|
||||
const surveyorPenilaiRegion = document.getElementById('surveyorPenilaiRegion');
|
||||
|
||||
if (selectedValue === 'penilai_dan_surveyor') {
|
||||
sameSurveyorPenilai.classList.remove('hidden');
|
||||
differentSurveyorPenilai.classList.add('hidden');
|
||||
surveyorPenilaiRegion.classList.add('hidden');
|
||||
} else if (selectedValue === 'berbeda') {
|
||||
sameSurveyorPenilai.classList.add('hidden');
|
||||
differentSurveyorPenilai.classList.remove('hidden');
|
||||
surveyorPenilaiRegion.classList.add('hidden');
|
||||
|
||||
} else {
|
||||
sameSurveyorPenilai.classList.add('hidden');
|
||||
differentSurveyorPenilai.classList.add('hidden');
|
||||
surveyorPenilaiRegion.classList.add('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById('penilai_surveyor_id').addEventListener('change', function() {
|
||||
const selectedValue = this.value;
|
||||
const surveyorPenilaiRegion = document.getElementById('surveyorPenilaiRegion');
|
||||
|
||||
if (selectedValue === 'pilih_dari_region') {
|
||||
surveyorPenilaiRegion.classList.remove('hidden');
|
||||
surveyorPenilaiRegion.classList.add('flex');
|
||||
} else {
|
||||
surveyorPenilaiRegion.classList.add('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
document.getElementById('surveyor_id').addEventListener('change', function() {
|
||||
const selectedValue = this.value;
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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">
|
||||
@@ -95,7 +95,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@if (in_array($permohonan->nilai_plafond_id, [1, 4]) && $permohonan->approval_dd != null)
|
||||
@if (in_array($permohonan->nilai_plafond_id, [1,2, 4]) && $permohonan->approval_dd != null)
|
||||
<tr>
|
||||
<td>Disetujui Oleh (DD)</td>
|
||||
<td>{{ getUser($permohonan->approval_dd)->name ?? 'N/A' }}</td>
|
||||
@@ -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;
|
||||
}
|
||||
@@ -151,7 +151,7 @@
|
||||
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
|
||||
$permohonan->approval_eo &&
|
||||
$permohonan->approval_dd == null &&
|
||||
in_array($permohonan->nilai_plafond_id, [1, 4]))
|
||||
in_array($permohonan->nilai_plafond_id, [1, 2, 4]))
|
||||
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
Otorisator {{ $header ?? '' }}
|
||||
@@ -159,13 +159,13 @@
|
||||
@endif
|
||||
|
||||
@elseif($dataHeader == 'paparan')
|
||||
<a class="btn btn-success"
|
||||
href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
|
||||
Lihat Data Paparan
|
||||
</a>
|
||||
|
||||
@if($permohonan->penilai->file_paparan)
|
||||
<span class="btn btn-success"
|
||||
onclick="viewPDF('{{ Storage::url($permohonan->penilai->file_paparan) }}')"><i
|
||||
class="ki-filled ki-eye mr-2"></i>Lihat Data Paparan</span>
|
||||
@endif
|
||||
@if(Auth::user()->hasAnyRole(['administrator','senior-officer']) && $authorization->approve_so==null)
|
||||
<button onclick="otorisatorData({{ $authorization->id }})" type="button" class="btn btn-primary">
|
||||
<button onclick="otorisatorData({{ $authorization->id }},'SO')" type="button" class="btn btn-primary">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
Otorisator {{ $header ?? '' }}
|
||||
</button>
|
||||
@@ -173,8 +173,7 @@
|
||||
|
||||
@if(Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
|
||||
$authorization->approve_so &&
|
||||
$authorization->approve_dd == null &&
|
||||
in_array($permohonan->nilai_plafond_id, [1, 4]))
|
||||
$authorization->approve_dd == null)
|
||||
<button onclick="otorisatorData({{ $authorization->id }},'DD')" type="button" class="btn btn-primary">
|
||||
<i class="ki-filled ki-double-check"></i>
|
||||
Otorisator {{ $header ?? '' }}
|
||||
@@ -191,7 +190,7 @@
|
||||
function otorisatorData(dataId, role='') {
|
||||
const dataHeader = @json($header);
|
||||
if(dataHeader == 'Paparan'){
|
||||
if(role == 'DD'){
|
||||
if(role == 'SO'){
|
||||
Swal.fire({
|
||||
title: 'Apakah Anda yakin?',
|
||||
text: `Untuk melakukan otorisator ${dataHeader}!`,
|
||||
@@ -252,8 +251,8 @@
|
||||
});
|
||||
}else{
|
||||
Swal.fire({
|
||||
title: 'Apakah Anda yakin?',
|
||||
text: `Untuk melakukan otorisator ${dataHeader}!`,
|
||||
title: 'Apakah Yakin?',
|
||||
text: `Pastikan bahwa paparan sudah dilakukan!`,
|
||||
icon: 'warning',
|
||||
input: 'textarea',
|
||||
inputLabel: 'Keterangan',
|
||||
@@ -282,7 +281,7 @@
|
||||
},
|
||||
success: (response) => {
|
||||
Swal.fire('Berhasil!',
|
||||
'Data berhasil diotorisasi. Menunggu Approval dan Tanggal Paparan dari DD',
|
||||
'Data berhasil diotorisasi',
|
||||
'success').then(() => {
|
||||
window.location.reload();
|
||||
});
|
||||
@@ -373,7 +372,7 @@
|
||||
},
|
||||
});
|
||||
$.ajax({
|
||||
url: `/otorisator/revisi/${dataId}/`,
|
||||
url: `/otorisator/revisi/${dataId}`,
|
||||
type: 'POST',
|
||||
data: {
|
||||
message: userMessage
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,18 @@
|
||||
<span class="sort"> <span class="sort-label">Nilai Plafond </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="tanggal_paparan">
|
||||
<span class="sort"> <span class="sort-label"> Tanggal Paparan </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="approval_so">
|
||||
<span class="sort"> <span class="sort-label"> Approval SO </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="approval_dd">
|
||||
<span class="sort"> <span class="sort-label"> Approval DD </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
|
||||
|
||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||
@@ -220,6 +232,34 @@
|
||||
return `${data.nilai_plafond.name}`;
|
||||
},
|
||||
},
|
||||
tanggal_paparan:{
|
||||
title: 'Tanggal Paparan',
|
||||
render: (item, data) => {
|
||||
if(data.tanggal_paparan) {
|
||||
return `${window.formatTanggalIndonesia(data.tanggal_paparan)}`;
|
||||
}
|
||||
|
||||
return "-";
|
||||
},
|
||||
},
|
||||
approval_so: {
|
||||
title: 'Approval SO',
|
||||
render: (item, data) => {
|
||||
if(data?.authorization?.approve_so) {
|
||||
return `${data?.authorization?.approve_so?.name} | ${window.formatTanggalIndonesia(data?.authorization?.approve_so_at)}`;
|
||||
}
|
||||
return '';
|
||||
},
|
||||
},
|
||||
approval_dd: {
|
||||
title: 'Approval DD',
|
||||
render: (item, data) => {
|
||||
if(data?.authorization?.approve_dd) {
|
||||
return `${data?.authorization?.approve_dd?.name} | ${window.formatTanggalIndonesia(data?.authorization?.approve_dd_at)}`;
|
||||
}
|
||||
return '';
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="w-14">
|
||||
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
||||
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
||||
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||
@@ -189,7 +189,7 @@
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
console.log(data.documents.length);
|
||||
if(data.documents.length > 0) {
|
||||
if (data.documents.length > 0) {
|
||||
return `<span class="badge badge-sm badge-default uppercase flex justify-center">${data.status}</span>`;
|
||||
}
|
||||
return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`;
|
||||
@@ -204,8 +204,15 @@
|
||||
render: (item, data) => {
|
||||
let actionHtml = `<div class="flex flex-nowrap justify-end gap-1.5">`;
|
||||
|
||||
if (data.status === 'proses-survey' || data.status == 'rejected-reschedule') {
|
||||
actionHtml += `
|
||||
<a onclick="surveyorRescheduleJadwalSurvey(${data.id},${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}', ${JSON.stringify(data.penilaian.rejected_note)})" class="delete btn btn-sm btn-outline btn-light" title="Reschedule Jadwal Survey">
|
||||
<i class="ki-filled ki-calendar-remove"></i>
|
||||
</a>`;
|
||||
}
|
||||
|
||||
if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !==
|
||||
'done' && data.penilaian.authorized_status == null) {
|
||||
'done' && data.penilaian.authorized_status == null || data.status === 'approved-reschedule') {
|
||||
actionHtml += `
|
||||
<a class="btn btn-sm btn-outline btn-primary" href="javascript:void(0)" onclick="surveyorApproveKunjungan(${data.id},${data.penilaian.id},'${data.nomor_registrasi}', '${data.debiture.name}', '${data.penilaian.waktu_penilaian}')" title="Approve Jadwal Kunjungan No Reg ${data.nomor_registrasi}" >
|
||||
<i class="ki-filled ki-calendar-edit"></i>
|
||||
@@ -225,12 +232,15 @@
|
||||
<a class="btn btn-sm btn-outline btn-info" href="permohonan/${data.id}/edit" title="Edit Permohonan">
|
||||
<i class="ki-outline ki-notepad-edit"></i>
|
||||
</a>`;
|
||||
if(data.status !== 'batal') {
|
||||
if (data.status !== 'batal') {
|
||||
actionHtml += `
|
||||
<a onclick="deleteData(${data.id}, '${data.nomor_registrasi}','${data.debiture.name}')" class="delete btn btn-sm btn-outline btn-danger" title="Batalkan Permohonan">
|
||||
<i class="ki-outline ki-cross-square"></i>
|
||||
</a>`;
|
||||
|
||||
}
|
||||
|
||||
|
||||
actionHtml += `</div>`;
|
||||
|
||||
return actionHtml;
|
||||
@@ -241,14 +251,14 @@
|
||||
|
||||
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||
// Custom search functionality
|
||||
searchInput.addEventListener('input', function () {
|
||||
searchInput.addEventListener('input', function() {
|
||||
const searchValue = this.value.trim();
|
||||
dataTable.search(searchValue, true);
|
||||
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
function surveyorApproveKunjungan(permohonanId,idPenilaian, noReg, debitur, waktuPenilaian) {
|
||||
function surveyorApproveKunjungan(permohonanId, idPenilaian, noReg, debitur, waktuPenilaian) {
|
||||
Swal.fire({
|
||||
title: ' ',
|
||||
text: "Yakin akan Menyetujui Jadwal Kunjungan " + noReg + " untuk Debitur " + debitur +
|
||||
@@ -263,7 +273,7 @@
|
||||
//define variable
|
||||
// $id ==> penilaian.id
|
||||
let token = "{{ csrf_token() }}";
|
||||
let useURL = "{{ URL::to('/surveyor/storeAproved') }}" + "/" + idPenilaian;
|
||||
let useURL = "{{ URL::to('/permohonan/store-approved') }}" + "/" + idPenilaian;
|
||||
|
||||
var input_data = new Object();
|
||||
input_data._token = token;
|
||||
@@ -276,7 +286,7 @@
|
||||
cache: false,
|
||||
data: input_data,
|
||||
dataType: "json",
|
||||
success: function (response) {
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
if ('success' == response.status) {
|
||||
swal.fire('Sukses Menyetujui!', response.message, 'success').then(
|
||||
@@ -288,7 +298,7 @@
|
||||
}
|
||||
|
||||
},
|
||||
error: function (response, textStatus, errorThrown) {
|
||||
error: function(response, textStatus, errorThrown) {
|
||||
// var errors = response.responseJSON.errors;
|
||||
// console.log(errors);
|
||||
console.log(response);
|
||||
@@ -300,6 +310,96 @@
|
||||
|
||||
}
|
||||
|
||||
|
||||
function surveyorRescheduleJadwalSurvey(permohonanId, idPenilaian, noReg, debitur, waktuPenilaian, rejectedNote) {
|
||||
rejectedNote = JSON.parse(rejectedNote);
|
||||
Swal.fire({
|
||||
title: 'Reschedule Jadwal Kunjungan',
|
||||
html: `
|
||||
<div class="text-left space-y-4">
|
||||
|
||||
<p class="text-gray-700">
|
||||
Yakin akan Reschedule Jadwal Kunjungan
|
||||
<span class="font-semibold text-blue-600">${noReg}</span>
|
||||
untuk Debitur
|
||||
<span class="font-semibold text-blue-600">${debitur}</span>
|
||||
pada waktu
|
||||
<span class="font-semibold">${window.formatTanggalWaktuIndonesia(waktuPenilaian)}</span>?
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<label for="reschedule_date" class="block text-sm font-medium text-gray-700 mb-1">Tanggal Baru</label>
|
||||
<input type="datetime-local" id="reschedule_date"
|
||||
class="block w-full px-4 py-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm">
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="reschedule_note" class="block text-sm font-medium text-gray-700 mb-1">Catatan</label>
|
||||
<textarea id="reschedule_note"
|
||||
class="block w-full px-4 py-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 sm:text-sm"
|
||||
placeholder="Masukkan alasan reschedule..."></textarea>
|
||||
</div>
|
||||
|
||||
${rejectedNote && rejectedNote.trim() ? `
|
||||
<p class="text-gray-700"><strong>Catatan Reject:</strong> ${rejectedNote}</p>
|
||||
` : ''}
|
||||
</div>
|
||||
`,
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Reschedule',
|
||||
preConfirm: () => {
|
||||
const rescheduleDate = document.getElementById('reschedule_date').value;
|
||||
const rescheduleNote = document.getElementById('reschedule_note').value;
|
||||
|
||||
if (!rescheduleDate || !rescheduleNote) {
|
||||
Swal.showValidationMessage('Semua inputan wajib diisi!');
|
||||
return false;
|
||||
}
|
||||
|
||||
return { rescheduleDate, rescheduleNote };
|
||||
}
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
const { rescheduleDate, rescheduleNote } = result.value;
|
||||
|
||||
// Data to send
|
||||
const data = {
|
||||
_token: "{{ csrf_token() }}",
|
||||
penilaian_id: idPenilaian,
|
||||
nomor_registrasi: noReg,
|
||||
permohonan_id: permohonanId,
|
||||
reschedule_date: rescheduleDate,
|
||||
reschedule_note: rescheduleNote
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: `{{ URL::to('/permohonan/store-reschedule-survey') }}/${idPenilaian}`,
|
||||
type: "PUT",
|
||||
cache: false,
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function(response) {
|
||||
if (response.status === 'success') {
|
||||
Swal.fire('Sukses Reschedule!', response.message, 'success').then(() => {
|
||||
location.reload();
|
||||
});
|
||||
} else {
|
||||
Swal.fire('Error!', response.message, 'error');
|
||||
}
|
||||
},
|
||||
error: function(response) {
|
||||
const errorMessage = response.responseJSON?.message || 'Terjadi kesalahan saat memproses data.';
|
||||
Swal.fire('Error!', errorMessage, 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// window.formatTanggalIndonesia(date)
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
|
||||
@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="registrasi-table" data-api-url="{{ route('registrasi.datatables') }}">
|
||||
<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="registrasi-table" data-api-url="{{ route('registrasi.datatables') }}">
|
||||
<div class="card-header bg-agi-50 py-5 flex-wrap">
|
||||
<h3 class="card-title">
|
||||
Daftar Registrasi
|
||||
@@ -25,11 +26,12 @@
|
||||
</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">
|
||||
<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"/>
|
||||
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
|
||||
</th>
|
||||
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
||||
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||
@@ -64,7 +66,8 @@
|
||||
</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="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
|
||||
@@ -82,10 +85,9 @@
|
||||
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
function showPermohonanData(regId)
|
||||
{
|
||||
var url = "{{ url('registrasi') }}/"+regId;
|
||||
$(location).attr('href',url);
|
||||
function showPermohonanData(regId) {
|
||||
var url = "{{ url('registrasi') }}/" + regId;
|
||||
$(location).attr('href', url);
|
||||
}
|
||||
</script>
|
||||
<script type="module">
|
||||
@@ -143,27 +145,38 @@
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
return `<div class="flex flex-nowrap justify-center">
|
||||
<a onclick="showPermohonanData(${data.id})" class="btn btn-sm btn-icon btn-clear btn-warning" title="Detail">
|
||||
const detailButton = `
|
||||
<a onclick="showPermohonanData(${data.id})"
|
||||
class="btn btn-sm btn-icon btn-clear btn-warning"
|
||||
title="Detail">
|
||||
<i class="ki-outline ki-eye"></i>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-info" title="Register" href="registrasi/${data.id}/edit">
|
||||
</a>`;
|
||||
|
||||
const registerButton = `
|
||||
<a class="btn btn-sm btn-icon btn-clear btn-info"
|
||||
title="Register"
|
||||
href="registrasi/${data.id}/edit">
|
||||
<i class="ki-outline ki-notepad-edit"></i>
|
||||
</a>
|
||||
</a>`;
|
||||
|
||||
|
||||
return `
|
||||
<div class="flex flex-nowrap justify-center">
|
||||
${detailButton}
|
||||
${data.status !== 'revisi' ? registerButton : ''}
|
||||
</div>`;
|
||||
},
|
||||
}
|
||||
|
||||
},
|
||||
};
|
||||
|
||||
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||
// Custom search functionality
|
||||
searchInput.addEventListener('input', function () {
|
||||
searchInput.addEventListener('input', function() {
|
||||
const searchValue = this.value.trim();
|
||||
dataTable.search(searchValue, true);
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
|
||||
@@ -7,20 +7,22 @@
|
||||
// $route = Route::currentRouteName();
|
||||
// dd($route); registrasi.show
|
||||
$route = explode('.', Route::currentRouteName());
|
||||
|
||||
@endphp
|
||||
@section('content')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
|
||||
@include('lpj::component.detail-jaminan',['backLink' => 'registrasi.index'])
|
||||
@include('lpj::component.detail-jaminan', ['backLink' => 'registrasi.index'])
|
||||
|
||||
<div class="card border border-agi-100 pb-2.5">
|
||||
@if ($permohonan->status !== 'revisi')
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Registrasi
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body lg:py-7.5">
|
||||
<form id="{{$route[0]}}_form" name="{{$route[0]}}_form" method="POST">
|
||||
<form id="{{ $route[0] }}_form" name="{{ $route[0] }}_form" method="POST">
|
||||
<input type="hidden" id="id" name="id" value="{{ $id }}">
|
||||
@method('PUT')
|
||||
@csrf
|
||||
@@ -31,33 +33,39 @@
|
||||
</label>
|
||||
<div class="flex gap-12">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="radio" name="{{$route[0]}}_tindakan" type="radio" value="0" id="{{ $route[0] }}_tindakan_yes" />
|
||||
<input class="radio" name="{{ $route[0] }}_tindakan" type="radio" value="0"
|
||||
id="{{ $route[0] }}_tindakan_yes" />
|
||||
Yes
|
||||
</label>
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="radio" name="{{$route[0]}}_tindakan" type="radio" value="1" id="{{ $route[0] }}_tindakan_no" />
|
||||
<input class="radio" name="{{ $route[0] }}_tindakan" type="radio" value="1"
|
||||
id="{{ $route[0] }}_tindakan_no" />
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="{{$route[0]}}_div_jenis_pilihan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
|
||||
<div id="{{ $route[0] }}_div_jenis_pilihan"
|
||||
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
|
||||
<label class="form-label max-w-56">
|
||||
Data Jenis Penilaian (Pilihan registrasi)
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select class="inputku select" id="{{$route[0]}}_jenis_penilaian" name="{{$route[0]}}_jenis_penilaian">
|
||||
<select class="inputku select" id="{{ $route[0] }}_jenis_penilaian"
|
||||
name="{{ $route[0] }}_jenis_penilaian">
|
||||
<option></option>
|
||||
</select>
|
||||
<em id="{{$route[0]}}_jenis_penilaian_msg" class="alert text-danger text-sm"></em>
|
||||
<em id="{{ $route[0] }}_jenis_penilaian_msg" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<div id="{{ $route[0] }}_div_catatan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
|
||||
<div id="{{ $route[0] }}_div_catatan"
|
||||
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
|
||||
<label class="form-label max-w-56">
|
||||
Catatan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<textarea class="inputku textarea" name="{{$route[0]}}_catatan" id="{{$route[0]}}_catatan" placeholder="Catatan..." rows="6"></textarea>
|
||||
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em>
|
||||
<textarea class="inputku textarea" name="{{ $route[0] }}_catatan" id="{{ $route[0] }}_catatan"
|
||||
placeholder="Catatan..." rows="6"></textarea>
|
||||
<em id="{{ $route[0] }}_catatan_msg" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<div id="{{ $route[0] }}_div_sla" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
@@ -65,28 +73,33 @@
|
||||
SLA (dalam satuan hari)
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<input class="inputku input" name="{{$route[0]}}_sla" id="{{$route[0]}}_sla" placeholder="dalam satuan hari" type="text" />
|
||||
<em id="{{$route[0]}}_sla_msg" class="alert text-danger text-sm"></em>
|
||||
<input class="inputku input" name="{{ $route[0] }}_sla" id="{{ $route[0] }}_sla"
|
||||
placeholder="dalam satuan hari" type="text" />
|
||||
<em id="{{ $route[0] }}_sla_msg" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<div id="{{ $route[0] }}_div_region"
|
||||
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Region
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select class="inputku select" id="{{$route[0]}}_region" name="{{$route[0]}}_region">
|
||||
<select class="inputku select" id="{{ $route[0] }}_region"
|
||||
name="{{ $route[0] }}_region">
|
||||
<option></option>
|
||||
</select>
|
||||
<em id="{{$route[0]}}_region_msg" class="alert text-danger text-sm"></em>
|
||||
<em id="{{ $route[0] }}_region_msg" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div><br />
|
||||
<div id="{{ $route[0] }}_div_catatan2" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<div id="{{ $route[0] }}_div_catatan2"
|
||||
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Catatan
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<textarea class="inputku textarea" name="{{$route[0]}}_catatan2" id="{{$route[0]}}_catatan2" placeholder="Catatan..." rows="6"></textarea>
|
||||
<em id="{{$route[0]}}_catatan2_msg" class="alert text-danger text-sm"></em>
|
||||
<textarea class="inputku textarea" name="{{ $route[0] }}_catatan2" id="{{ $route[0] }}_catatan2"
|
||||
placeholder="Catatan..." rows="6"></textarea>
|
||||
<em id="{{ $route[0] }}_catatan2_msg" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-end mt-5">
|
||||
@@ -96,8 +109,33 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endif
|
||||
@if ($permohonan->status === 'revisi')
|
||||
<div class="card-header bg-agi-50" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Dokument
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@include('lpj::debitur.components.jaminan')
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<div class="flex justify-end mt-5">
|
||||
<form action="{{ route('storeRevisi', $id) }}" method="post">
|
||||
@method('PUT')
|
||||
@csrf
|
||||
<input type="hidden" id="id" name="id" value="{{ $id }}">
|
||||
<button class="btn btn-primary" >
|
||||
Submit Revision
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@endsection
|
||||
@include('lpj::registrasi.js.editjs')
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
@if (!empty($forminspeksi['fakta_positif']))
|
||||
@foreach ($forminspeksi['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>
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ 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>
|
||||
@@ -421,7 +421,7 @@
|
||||
@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>
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ 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>
|
||||
@@ -441,7 +441,7 @@
|
||||
@if (!empty($forminspeksi['fakta_negatif']))
|
||||
@foreach ($forminspeksi['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>
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="10">{{ 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>
|
||||
@@ -450,7 +450,7 @@
|
||||
@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', $forminspeksi['fakta_negatif'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="10">{{ old('fakta_negatif.0', $forminspeksi['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>
|
||||
@@ -468,7 +468,7 @@
|
||||
<label class="form-label max-w-56">Catatan Yang Perlu Diperhatikan</label>
|
||||
<div id="catatan-container" class="flex flex-wrap items-baseline w-full">
|
||||
<div class="catatan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="catatan[]" rows="3">{{ old('catatan.0', $forminspeksi['catatan'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="catatan[]" rows="10">{{ old('catatan.0', $forminspeksi['catatan'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
</button>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
<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';
|
||||
$luas_bangunan = 0;
|
||||
if ($item->detail) {
|
||||
foreach ($item->detail as $luas) {
|
||||
if (isset($luas->name) && $luas->name === 'IMB') {
|
||||
if (isset($luas->name) && $luas->jenis_legalitas_jaminan_id === 10) {
|
||||
$details = json_decode($luas->details, true);
|
||||
$luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 'N/A';
|
||||
$luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
|
||||
<input type="hidden" name="type" value="tanah">
|
||||
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
|
||||
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
|
||||
<div class="card">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
@foreach ($permohonan->documents as $dokumen)
|
||||
@if ($dokumen->jenisJaminan)
|
||||
@php
|
||||
$dokumentName = $dokumen->jenisJaminan->name;
|
||||
@@ -124,8 +125,8 @@
|
||||
}
|
||||
} else {
|
||||
// Format currency untuk input harga
|
||||
if (name.includes('harga') || name.includes('total') || name.includes('diskon')) {
|
||||
element.value = value ? value.toString() : '0';
|
||||
if (name.includes('diskon')) {
|
||||
element.value = value || '0';
|
||||
} else {
|
||||
element.value = value || '';
|
||||
}
|
||||
@@ -363,16 +364,16 @@
|
||||
input.value = '';
|
||||
}
|
||||
|
||||
if (input.classList.contains('currency')) {
|
||||
if (input.classList.contains('currency-format')) {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
|
||||
|
||||
// Special handling for price-related inputs
|
||||
// Calculate prices if needed
|
||||
if (input.name.includes('harga_pembanding') ||
|
||||
input.name.includes('diskon_pembanding')) {
|
||||
const inputs = document.getElementsByName(input.name);
|
||||
const index = Array.from(inputs).indexOf(this);
|
||||
calculatePrices(index);
|
||||
calculatePrices('pembanding', index);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -393,7 +394,10 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
function handleCurrencyInput(input) {
|
||||
const value = input.value.replace(/[^\d]/g, '');
|
||||
input.value = formatCurrency(value);
|
||||
}
|
||||
|
||||
function removeColumn() {
|
||||
if (columnCount > 1) {
|
||||
@@ -444,6 +448,13 @@
|
||||
ensureLocationEventListeners();
|
||||
}
|
||||
|
||||
function initializeCurrencyFormat() {
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
formatCurrency(this);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function initializeFirstPembandingListeners() {
|
||||
const firstProvinceSelect = document.getElementById('province_code_pembanding');
|
||||
@@ -657,5 +668,18 @@
|
||||
}
|
||||
});
|
||||
}
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Initialize currency format for existing inputs
|
||||
document.querySelectorAll('.currency-format').forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
handleCurrencyInput(this);
|
||||
});
|
||||
|
||||
// Format initial values if they exist
|
||||
if (input.value) {
|
||||
input.value = formatCurrency(input.value);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<div class="card-header bg-agi-50">
|
||||
<h3 class="card-title">Denah</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id ]) }}?form=denah" class="btn btn-xs btn-info">
|
||||
<a href="{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=denah" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
</div>
|
||||
@@ -98,7 +98,7 @@
|
||||
</label>
|
||||
<input type="text" name="luas_denah[]"
|
||||
class="input w-full number-format"
|
||||
value="{{ $denah['luas_denah'] ?? '' }}"
|
||||
value="{{ isset($denah['luas_denah']) ? $denah['luas_denah'] . ' m²' : '' }}"
|
||||
onkeyup="formatNumber(this)">
|
||||
</div>
|
||||
</div>
|
||||
@@ -191,7 +191,14 @@
|
||||
input.addEventListener('input', function() {
|
||||
formatNumber(this);
|
||||
});
|
||||
input.addEventListener('focus', function() {
|
||||
if (this.value === 'm²') {
|
||||
this.setSelectionRange(0, 0); // Kursor di awal
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Tambah Denah
|
||||
document.getElementById('tambahDenah').addEventListener('click', function() {
|
||||
@@ -199,6 +206,19 @@
|
||||
const newDenah = createDenahElement(denahIndex);
|
||||
denahContainer.appendChild(newDenah);
|
||||
denahIndex++;
|
||||
|
||||
const newInputs = newDenah.querySelectorAll('.number-format');
|
||||
newInputs.forEach(input => {
|
||||
input.addEventListener('input', function() {
|
||||
formatNumber(this);
|
||||
});
|
||||
|
||||
input.addEventListener('focus', function() {
|
||||
if (this.value === 'm²') {
|
||||
this.setSelectionRange(0, 0); // Kursor di awal
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Event delegation untuk tombol hapus denah
|
||||
@@ -303,6 +323,12 @@
|
||||
function submitDenah() {
|
||||
showLoadingSwal('Mengirim data ke server...');
|
||||
|
||||
document.querySelectorAll('.number-format').forEach(input => {
|
||||
if (input.value.includes('m²')) {
|
||||
input.value = input.value.replace('m²', '').trim();
|
||||
}
|
||||
});
|
||||
|
||||
const formElement = $('#formDenah')[0];
|
||||
const formData = new FormData(formElement);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
@if (!empty($forminspeksi['fakta']['fakta_positif']))
|
||||
@foreach ($forminspeksi['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>
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ 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>
|
||||
@@ -23,7 +23,7 @@
|
||||
@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>
|
||||
<textarea class="textarea mt-2" name="fakta_positif[]" rows="10">{{ 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>
|
||||
@@ -44,7 +44,7 @@
|
||||
@if (!empty($forminspeksi['fakta']['fakta_negatif']))
|
||||
@foreach ($forminspeksi['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>
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="10">{{ 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>
|
||||
@@ -53,7 +53,7 @@
|
||||
@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', $forminspeksi['fakta']['fakta_negatif'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="fakta_negatif[]" rows="10">{{ old('fakta_negatif.0', $forminspeksi['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>
|
||||
@@ -71,7 +71,7 @@
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Rute Menuju</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<textarea class="textarea mt-2" name="rute_menuju" rows="3">{{ old('rute_menuju.0', $forminspeksi['fakta']['rute_menuju'] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="rute_menuju" rows="10">{{ old('rute_menuju.0', $forminspeksi['fakta']['rute_menuju'] ?? '') }}</textarea>
|
||||
<em id="error-rute_menuju" class="alert text-danger text-sm"></em>
|
||||
</div>
|
||||
</div>
|
||||
@@ -119,7 +119,7 @@
|
||||
@if (!empty($forminspeksi['fakta']['kondisi_lingkungan']))
|
||||
@foreach ($forminspeksi['fakta']['kondisi_lingkungan'] as $index => $kondisi_lingkungan)
|
||||
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="3">{{ old("kondisi_lingkungan.$index", $kondisi_lingkungan) }}</textarea>
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="10">{{ old("kondisi_lingkungan.$index", $kondisi_lingkungan) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -128,7 +128,7 @@
|
||||
@endforeach
|
||||
@else
|
||||
<div class="kondisi_lingkungan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="3" placeholder="Tambahkan keterangan">
|
||||
<textarea class="textarea mt-2" name="kondisi_lingkungan[]" rows="10" placeholder="Tambahkan keterangan">
|
||||
{{ old('kondisi_lingkungan.0', $forminspeksi['fakta']['kondisi_lingkungan'][0] ?? '') }}
|
||||
</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button" style="display: none;">
|
||||
@@ -152,7 +152,7 @@
|
||||
@if (!empty($forminspeksi['fakta']['kondisi_lain_bangunan']))
|
||||
@foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] as $index => $kondisi_lain_bangunan)
|
||||
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="3">{{ old("kondisi_lain_bangunan.$index", $kondisi_lain_bangunan) }}</textarea>
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="10">{{ old("kondisi_lain_bangunan.$index", $kondisi_lain_bangunan) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -161,7 +161,7 @@
|
||||
@endforeach
|
||||
@else
|
||||
<div class="kondisi_lain_bangunan flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="3">{{ old('kondisi_lain_bangunan.0', $forminspeksi['fakta']['kondisi_lain_bangunan'][0] ?? '') }}</textarea>
|
||||
<textarea class="textarea mt-2" name="kondisi_lain_bangunan[]" rows="10">{{ old('kondisi_lain_bangunan.0', $forminspeksi['fakta']['kondisi_lain_bangunan'][0] ?? '') }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -191,7 +191,7 @@
|
||||
|
||||
@foreach ($informasi_dokument as $index => $document)
|
||||
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="3">{{ old("informasi_dokument.$index", $document) }}</textarea>
|
||||
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="10">{{ old("informasi_dokument.$index", $document) }}</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
<i class="ki-outline ki-trash"></i>
|
||||
@@ -200,7 +200,7 @@
|
||||
@endforeach
|
||||
@else
|
||||
<div class="informasi_dokument flex items-center gap-2 mt-2 textarea-group w-full">
|
||||
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="3">{{ old('informasi_dokument.0', isset($forminspeksi['fakta']['informasi_dokument'][0]) ? $forminspeksi['fakta']['informasi_dokument'][0] : '') }}
|
||||
<textarea class="textarea mt-2" name="informasi_dokument[]" rows="10">{{ old('informasi_dokument.0', isset($forminspeksi['fakta']['informasi_dokument'][0]) ? $forminspeksi['fakta']['informasi_dokument'][0] : '') }}
|
||||
</textarea>
|
||||
<button class="btn btn-danger btn-sm remove-btn" type="button"
|
||||
style="display: none;">
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,14 +7,26 @@
|
||||
{{ $title }}
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
@php
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@endphp
|
||||
@if (isset($id))
|
||||
<a href="{{ route($backLink, ['id' => $id]) }}" 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">
|
||||
|
||||
@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>
|
||||
@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
|
||||
@endif
|
||||
{{-- <a href="{{ route('surveyor.show', ['id' => request('inspeksi')]) }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
@@ -135,8 +147,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,12 +272,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header bg-agi-50">
|
||||
<h1 class="text-md font-medium text-gray-900 uppercase">Status</h1>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="card-body w-full">
|
||||
@include('lpj::component.detail-jaminan', ['status' => true])
|
||||
|
||||
<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>
|
||||
@@ -275,7 +289,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
|
||||
@@ -544,7 +558,7 @@
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
|
||||
<label for="village_code" class="form-label max-w-56">Kelurahan</label>
|
||||
<label for="village_code" class="form-label max-w-56">Desa/Kelurahan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select id="village_code" name="village_code" class="select w-full">
|
||||
<option value="">Pilih Kelurahan</option>
|
||||
@@ -557,9 +571,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
loadSavedLocationData();
|
||||
});
|
||||
// Fungsi untuk memuat data lokasi yang tersimpan
|
||||
</script>
|
||||
@include('lpj::surveyor.js.utils')
|
||||
@include('lpj::surveyor.js.utils')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user