Merge branch 'staging' into feature/senior-officer
This commit is contained in:
@@ -326,7 +326,7 @@ class ActivityController extends Controller
|
|||||||
$filteredRecords = $query->count();
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
// Get data with necessary relationships
|
// Get data with necessary relationships
|
||||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan'])->get();
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan','nilaiPlafond'])->get();
|
||||||
|
|
||||||
// Calculate total pages
|
// Calculate total pages
|
||||||
$pageCount = ceil($totalRecords / $request->get('size', 10));
|
$pageCount = ceil($totalRecords / $request->get('size', 10));
|
||||||
@@ -444,26 +444,40 @@ class ActivityController extends Controller
|
|||||||
$jeniAsset = null;
|
$jeniAsset = null;
|
||||||
$statusPembayaran = trim(strtolower($item->permohonan->status_bayar ?? ''));
|
$statusPembayaran = trim(strtolower($item->permohonan->status_bayar ?? ''));
|
||||||
$tujuanPenilaian = $item->permohonan->tujuanPenilaian->name ?? null;
|
$tujuanPenilaian = $item->permohonan->tujuanPenilaian->name ?? null;
|
||||||
|
$plafond = $item->permohonan->nilaiPlafond->name ?? null;
|
||||||
|
|
||||||
$now = Carbon::now();
|
$now = Carbon::now();
|
||||||
|
$type_report = $item->permohonan->penilai->type ?? "";
|
||||||
|
|
||||||
// $plafond = $item->permohonan->nilaiPlafond->name ?? null;
|
$hari = $hariPaparan = 0;
|
||||||
// $type_report = $item->permohonan->penilai->type_penilai;
|
|
||||||
|
|
||||||
// $hari = 0;
|
if($type_report == "sederhana"){
|
||||||
// if ($plafond == '< 1M') {
|
$hari = 2;
|
||||||
// $item->paparan = 'Tidak Ada';
|
$item->paparan = 'Tidak Ada';
|
||||||
// }else if($plafond == '2 M - 5 M'){
|
} else{
|
||||||
// $hari = 2;
|
if ($plafond == '< 2M') {
|
||||||
// }else if($plafond == '5 M - 10 M'){
|
$item->paparan = 'Tidak Ada';
|
||||||
// $hari = 3;
|
$hari = 3;
|
||||||
// }
|
}else if($plafond == '2 M - 5 M'){
|
||||||
|
$hari = 3;
|
||||||
|
$hariPaparan = 2;
|
||||||
|
}else {
|
||||||
|
$hari = 5;
|
||||||
|
$hariPaparan = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tujuanPenilaian == 'RAP') {
|
||||||
|
$hari = 2;
|
||||||
|
$hariPaparan = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($item->permohonan && $item->permohonan->debiture) {
|
if ($item->permohonan && $item->permohonan->debiture) {
|
||||||
$jeniAsset = $item->permohonan->debiture->documents->first() ?? null;
|
$jeniAsset = $item->permohonan->debiture->documents->first() ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hariTambahan = 0;
|
/*$hariTambahan = 0;
|
||||||
|
|
||||||
if ($tujuanPenilaian == 'RAP') {
|
if ($tujuanPenilaian == 'RAP') {
|
||||||
$hariTambahan = 2;
|
$hariTambahan = 2;
|
||||||
@@ -473,33 +487,50 @@ class ActivityController extends Controller
|
|||||||
} else {
|
} else {
|
||||||
$hariTambahan = 2; // H+2 untuk yang belum bayar
|
$hariTambahan = 2; // H+2 untuk yang belum bayar
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
$tanggalMulai = $item->waktu_penilaian;
|
$tanggalMulai = $item->waktu_penilaian;
|
||||||
|
|
||||||
if ($tanggalMulai) {
|
if ($tanggalMulai) {
|
||||||
|
if (!$tanggalMulai instanceof Carbon) {
|
||||||
|
$tanggalMulai = Carbon::parse($tanggalMulai);
|
||||||
|
}
|
||||||
|
$hariKerjaBerikutnya = hitungHariKerja($tanggalMulai->toDateString(),$tanggalMulai->copy()->addDays(1));
|
||||||
|
$hariKerjaBerikutnya = max($hariKerjaBerikutnya, 1);
|
||||||
|
$tanggalMulai = $tanggalMulai->copy()->addDays($hariKerjaBerikutnya);
|
||||||
|
|
||||||
// Konversi string tanggal ke objek Carbon jika belum
|
// Konversi string tanggal ke objek Carbon jika belum
|
||||||
if (!$tanggalMulai instanceof Carbon) {
|
if (!$tanggalMulai instanceof Carbon) {
|
||||||
$tanggalMulai = Carbon::parse($tanggalMulai);
|
$tanggalMulai = Carbon::parse($tanggalMulai);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hitung tanggal selesai berdasarkan hari tambahan
|
// Hitung tanggal selesai berdasarkan hari tambahan
|
||||||
$tanggalSelesai = $tanggalMulai->copy()->addDays($hariTambahan);
|
$tanggalSelesai = $tanggalMulai->copy()->addDays($hari);
|
||||||
|
$tanggalPaparan = $tanggalMulai->copy()->addDays($hariPaparan);
|
||||||
|
|
||||||
// Hitung hari kerja
|
// Hitung hari kerja
|
||||||
$hariKerja = hitungHariKerja($tanggalMulai->toDateString(), $tanggalSelesai->toDateString());
|
$hariKerja = hitungHariKerja($tanggalMulai->toDateString(), $tanggalSelesai->toDateString());
|
||||||
|
$hariKerja = max($hariKerja, $hari);
|
||||||
|
|
||||||
|
$hariKerjaPaparan = hitungHariKerja($tanggalMulai->toDateString(), $tanggalPaparan->toDateString());
|
||||||
|
$hariKerjaPaparan = max($hariKerjaPaparan, $hariPaparan);
|
||||||
|
|
||||||
// Set due date SLA
|
// Set due date SLA
|
||||||
$dueDateSla = $tanggalMulai->copy()->addDays($hariKerja);
|
$dueDateSla = $tanggalMulai->copy()->addDays($hariKerja);
|
||||||
|
$dueDateSlaPaparan = $tanggalMulai->copy()->addDays($hariKerjaPaparan);
|
||||||
|
|
||||||
// Cek apakah sudah melewati due date
|
// Cek apakah sudah melewati due date
|
||||||
if ($now->greaterThan($dueDateSla)) {
|
/*if ($now->greaterThan($dueDateSla)) {
|
||||||
$item->due_date_sla = null;
|
$item->due_date_sla = null;
|
||||||
} else {
|
} else {
|
||||||
$item->due_date_sla = $dueDateSla->toDateString();
|
$item->due_date_sla = $dueDateSla->toDateString();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
$item->due_date_sla = $dueDateSla->toDateString();
|
||||||
|
$item->paparan = $dueDateSlaPaparan->toDateString();
|
||||||
} else {
|
} else {
|
||||||
$item->due_date_sla = null;
|
$item->due_date_sla = null;
|
||||||
|
$item->paparan = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ class LaporanController extends Controller
|
|||||||
$filteredRecords = $query->count();
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
// Get the data for the current page
|
// Get the data for the current page
|
||||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai'])->get();
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai','documents.detail'])->get();
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
$pageCount = ceil($totalRecords / $size);
|
$pageCount = ceil($totalRecords / $size);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace Modules\Lpj\Http\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf
|
use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use Modules\Lpj\Models\Inspeksi;
|
use Modules\Lpj\Models\Inspeksi;
|
||||||
use Modules\Lpj\Models\Penilai;
|
use Modules\Lpj\Models\Penilai;
|
||||||
@@ -544,7 +545,9 @@ class PenilaiController extends Controller
|
|||||||
'branch',
|
'branch',
|
||||||
'tujuanPenilaian',
|
'tujuanPenilaian',
|
||||||
'jenisfasilitasKredit',
|
'jenisfasilitasKredit',
|
||||||
'penilaian.userPenilai' // Ensure this relation is included
|
'penilaian.userPenilai',
|
||||||
|
'penilai',
|
||||||
|
'nilaiPlafond'
|
||||||
])->get();
|
])->get();
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
@@ -754,10 +757,10 @@ class PenilaiController extends Controller
|
|||||||
|
|
||||||
|
|
||||||
if (!$allComplete) {
|
if (!$allComplete) {
|
||||||
$message = $rap
|
$message = $rap
|
||||||
? 'Harap Mengisi laporan terlebih dahulu'
|
? 'Harap Mengisi laporan terlebih dahulu'
|
||||||
: 'Harap Mengisi laporan terlebih dahulu atau kertas kerja';
|
: 'Harap Mengisi laporan terlebih dahulu atau kertas kerja';
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
@@ -799,6 +802,18 @@ class PenilaiController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function uploadTempPhoto(Request $request)
|
||||||
|
{
|
||||||
|
if ($request->hasFile('file')) {
|
||||||
|
$file = $request->file('file');
|
||||||
|
$filename = time() . '_' . $file->getClientOriginalName();
|
||||||
|
$path = $file->storeAs('temp_photos', $filename, 'public');
|
||||||
|
return response()->json(['success' => true, 'id' => $path]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json(['success' => false], 400);
|
||||||
|
}
|
||||||
|
|
||||||
public function storeResume(Request $request)
|
public function storeResume(Request $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@@ -917,6 +932,59 @@ class PenilaiController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function storeMemoWithPhotos(Request $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$validatedData = $request->validate([
|
||||||
|
'permohonan_id' => 'required|integer',
|
||||||
|
'document_id' => 'required|integer',
|
||||||
|
'inspeksi_id' => 'required|integer',
|
||||||
|
'memo' => 'required',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$memoData = json_decode($validatedData['memo'], true);
|
||||||
|
|
||||||
|
$memo = Penilai::updateOrCreate(
|
||||||
|
[
|
||||||
|
'permohonan_id' => $validatedData['permohonan_id'],
|
||||||
|
'dokument_id' => $validatedData['document_id'],
|
||||||
|
'inspeksi_id' => $validatedData['inspeksi_id'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'memo' => json_encode($memoData),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
// Simpan foto-foto
|
||||||
|
if ($request->hasFile('foto_0')) {
|
||||||
|
$photoUrls = [];
|
||||||
|
$index = 0;
|
||||||
|
while ($request->hasFile("foto_$index")) {
|
||||||
|
$file = $request->file("foto_$index");
|
||||||
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
||||||
|
$filePath = $file->storeAs('public/memo_photos', $fileName);
|
||||||
|
$photoUrls[] = Storage::url($filePath);
|
||||||
|
$index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tambahkan URL foto ke data memo
|
||||||
|
$memoData['foto'] = $photoUrls;
|
||||||
|
$memo->memo = json_encode($memoData);
|
||||||
|
$memo->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'success' => true,
|
||||||
|
'message' => 'Memo dan foto berhasil disimpan',
|
||||||
|
]);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return response()->json([
|
||||||
|
'success' => false,
|
||||||
|
'message' => 'Terjadi kesalahan: ' . $e->getMessage(),
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function storeLpjSederhanadanStandard(Request $request)
|
public function storeLpjSederhanadanStandard(Request $request)
|
||||||
{
|
{
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
|
|||||||
@@ -891,11 +891,13 @@ class PenilaianController extends Controller
|
|||||||
|
|
||||||
public function revisiLaporan(Request $request, $id)
|
public function revisiLaporan(Request $request, $id)
|
||||||
{
|
{
|
||||||
$permohonan = Permohonan::find($id);
|
if($request->dataHeader=='Paparan'){
|
||||||
$userRole = Auth::user()->roles[0]->name;
|
$authorization = Authorization::find($id);
|
||||||
|
$permohonan = Permohonan::find($authorization->permohonan_id);
|
||||||
$authorization = Authorization::where('permohonan_id', $permohonan->id)
|
} else {
|
||||||
->where('jenis', 'paparan')->first();
|
$permohonan = Permohonan::find($id);
|
||||||
|
$userRole = Auth::user()->roles[0]->name;
|
||||||
|
}
|
||||||
|
|
||||||
if ($permohonan->status === 'proses-paparan') {
|
if ($permohonan->status === 'proses-paparan') {
|
||||||
if ($authorization) {
|
if ($authorization) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Auth;
|
|||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
use Modules\Lpj\Models\JenisPenilaian;
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use Modules\Lpj\Models\Penilai;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use Modules\Lpj\Models\Regions;
|
use Modules\Lpj\Models\Regions;
|
||||||
use Modules\Lpj\Models\DokumenJaminan;
|
use Modules\Lpj\Models\DokumenJaminan;
|
||||||
@@ -167,6 +168,13 @@ class RegistrasiController extends Controller
|
|||||||
$modal = Permohonan::find($id);
|
$modal = Permohonan::find($id);
|
||||||
|
|
||||||
$modal->update($dataku);
|
$modal->update($dataku);
|
||||||
|
|
||||||
|
if($modal && $request->jenis_laporan){
|
||||||
|
Penilai::updateOrCreate(
|
||||||
|
['permohonan_id' => $id],
|
||||||
|
['type' => $request->jenis_laporan]
|
||||||
|
);
|
||||||
|
}
|
||||||
//
|
//
|
||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
$data['message'] ['message_success'] = ['Regitrasi ' . $modal->nomor_registrasi . ' successfully'];
|
$data['message'] ['message_success'] = ['Regitrasi ' . $modal->nomor_registrasi . ' successfully'];
|
||||||
|
|||||||
@@ -120,8 +120,8 @@
|
|||||||
<th class="min-w-[100px]">Tgl Assign</th>
|
<th class="min-w-[100px]">Tgl Assign</th>
|
||||||
<th class="min-w-[100px]">Tgl Kunjungan</th>
|
<th class="min-w-[100px]">Tgl Kunjungan</th>
|
||||||
<th class="min-w-[100px]">Progress</th>
|
<th class="min-w-[100px]">Progress</th>
|
||||||
<th class="min-w-[100px]">Due Date SLA</th>
|
<th class="min-w-[100px]">SLA Laporan</th>
|
||||||
<th class="min-w-[100px]">Paparan</th>
|
<th class="min-w-[100px]">SLA Paparan</th>
|
||||||
<th class="min-w-[100px]">Approve</th>
|
<th class="min-w-[100px]">Approve</th>
|
||||||
<th class="min-w-[50px] text-center">Keterangan</th>
|
<th class="min-w-[50px] text-center">Keterangan</th>
|
||||||
<th class="min-w-[50px] text-center">Action</th>
|
<th class="min-w-[50px] text-center">Action</th>
|
||||||
@@ -251,6 +251,15 @@
|
|||||||
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
due_date: {
|
||||||
|
title: 'Due Date SLA',
|
||||||
|
render: (item, data) => {
|
||||||
|
if (!data.due_date_sla) {
|
||||||
|
return `-`;
|
||||||
|
}
|
||||||
|
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
paparan: {
|
paparan: {
|
||||||
title: 'Paparan',
|
title: 'Paparan',
|
||||||
@@ -258,7 +267,7 @@
|
|||||||
if (!data.due_date_sla) {
|
if (!data.due_date_sla) {
|
||||||
return `-`;
|
return `-`;
|
||||||
}
|
}
|
||||||
return `${window.formatTanggalIndonesia(data.due_date_sla)}`;
|
return `${window.formatTanggalIndonesia(data.paparan)}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
approve: {
|
approve: {
|
||||||
|
|||||||
@@ -256,7 +256,7 @@
|
|||||||
placeholder="Nama NPW">
|
placeholder="Nama NPW">
|
||||||
|
|
||||||
<input type="text"
|
<input type="text"
|
||||||
id="luas_npw_${npwCounter}"
|
id="ls_npw_${npwCounter}"
|
||||||
class="input w-full "
|
class="input w-full "
|
||||||
name="luas_npw_${npwCounter}"
|
name="luas_npw_${npwCounter}"
|
||||||
placeholder="Luas NPW"
|
placeholder="Luas NPW"
|
||||||
@@ -333,7 +333,7 @@
|
|||||||
placeholder="Nama NPW"
|
placeholder="Nama NPW"
|
||||||
value="${npw.name || ''}">
|
value="${npw.name || ''}">
|
||||||
<input type="text"
|
<input type="text"
|
||||||
id="luas_npw_${npwCounter}"
|
id="ls_npw_${npwCounter}"
|
||||||
class="input w-full currency-format"
|
class="input w-full currency-format"
|
||||||
name="luas_npw_${npwCounter}"
|
name="luas_npw_${npwCounter}"
|
||||||
placeholder="Luas NPW"
|
placeholder="Luas NPW"
|
||||||
@@ -459,6 +459,7 @@
|
|||||||
const kategoriItems = document.querySelectorAll('[id^="luas_"]');
|
const kategoriItems = document.querySelectorAll('[id^="luas_"]');
|
||||||
|
|
||||||
kategoriItems.forEach(item => {
|
kategoriItems.forEach(item => {
|
||||||
|
|
||||||
const kategori = item.id.replace('luas_', '');
|
const kategori = item.id.replace('luas_', '');
|
||||||
const luasInput = document.getElementById(`luas_${kategori}`);
|
const luasInput = document.getElementById(`luas_${kategori}`);
|
||||||
const nilaiInput = document.querySelector(`input[name="nilai_${kategori}_1"]`);
|
const nilaiInput = document.querySelector(`input[name="nilai_${kategori}_1"]`);
|
||||||
@@ -477,7 +478,7 @@
|
|||||||
// Tambahkan perhitungan untuk NPW tambahan
|
// Tambahkan perhitungan untuk NPW tambahan
|
||||||
const npwRows = document.querySelectorAll('.npw-row');
|
const npwRows = document.querySelectorAll('.npw-row');
|
||||||
npwRows.forEach(row => {
|
npwRows.forEach(row => {
|
||||||
const luasInput = row.querySelector('input[id^="luas_npw_"]');
|
const luasInput = row.querySelector('input[id^="ls_npw_"]');
|
||||||
const nilaiInput = row.querySelector('input[id^="nilai_npw_"][id$="_1"]');
|
const nilaiInput = row.querySelector('input[id^="nilai_npw_"][id$="_1"]');
|
||||||
const outputElement = row.querySelector('input[id^="nilai_npw_"][id$="_2"]');
|
const outputElement = row.querySelector('input[id^="nilai_npw_"][id$="_2"]');
|
||||||
|
|
||||||
@@ -494,6 +495,7 @@
|
|||||||
// Update total nilai pasar wajar
|
// Update total nilai pasar wajar
|
||||||
const totalElement = document.getElementById('total_nilai_pasar_wajar');
|
const totalElement = document.getElementById('total_nilai_pasar_wajar');
|
||||||
if (totalElement) {
|
if (totalElement) {
|
||||||
|
|
||||||
totalElement.value = formatCurrency(totalNilaiPasarWajar.toString());
|
totalElement.value = formatCurrency(totalNilaiPasarWajar.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,24 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
function formatDate(date) {
|
||||||
|
const day = date.getDate().toString().padStart(2, '0');
|
||||||
|
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||||
|
// Months are 0-indexed
|
||||||
|
const year = date.getFullYear();
|
||||||
|
|
||||||
|
return `${day} ${getIndonesianMonth(month)} ${year}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIndonesianMonth(month) {
|
||||||
|
const months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
|
||||||
|
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
|
||||||
|
];
|
||||||
|
return months[month -
|
||||||
|
1];
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<script type="module">
|
<script type="module">
|
||||||
const element = document.querySelector('#laporan-table');
|
const element = document.querySelector('#laporan-table');
|
||||||
const searchInput = document.getElementById('search');
|
const searchInput = document.getElementById('search');
|
||||||
@@ -168,14 +186,40 @@
|
|||||||
tanggal_survei: {
|
tanggal_survei: {
|
||||||
title: 'Tanggal Survei',
|
title: 'Tanggal Survei',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return '-';
|
if(data.penilaian.waktu_penilaian){
|
||||||
}
|
return `${formatDate(new Date(data.penilaian.waktu_penilaian))}`;
|
||||||
|
}
|
||||||
|
return `${formatDate(new Date(data.penilaian.created_at))}`;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
due_date_sla: {
|
due_date_sla: {
|
||||||
title: 'Due Date SLA',
|
title: 'Due Date SLA',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return '-';
|
const tujuan_penilaian = data.tujuan_penilaian.name;
|
||||||
}
|
const tipe_laporan = data.penilai?.type;
|
||||||
|
const nilai_plafond = data.penilaian.nilaiPlafond?.name;
|
||||||
|
let waktu_penilaian = new Date(data.penilaian.created_at);
|
||||||
|
if(data.penilaian.waktu_penilaian){
|
||||||
|
waktu_penilaian = new Date(data.penilaian.waktu_penilaian);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tujuan_penilaian.name==="RAP"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else {
|
||||||
|
if(tipe_laporan==="sederhana"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 2);
|
||||||
|
} else if(tipe_laporan==="standar"){
|
||||||
|
if(nilai_plafond==="2 M - 5 M"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else if(nilai_plafond==="< 2M"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else {
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return formatDate(waktu_penilaian);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">Penjual (HP)</label>
|
<label class="form-label max-w-56">Penjual (HP)</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<span>{{ $item['telepon'] }}</span>
|
<span>{{ $item['telepon'] ?? '' }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
|||||||
@@ -295,7 +295,7 @@
|
|||||||
<h1 class="text-md font-medium text-gray-900">Upload Foto</h1>
|
<h1 class="text-md font-medium text-gray-900">Upload Foto</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dropzone" id="upload-dropzone">
|
<div class="dropzone" id="dropzone-upload">
|
||||||
<div class="dz-message needsclick" data-foto-type="upload_foto">
|
<div class="dz-message needsclick" data-foto-type="upload_foto">
|
||||||
<i class="ki-duotone ki-file-up text-primary text-3xl"><span class="path1"></span><span
|
<i class="ki-duotone ki-file-up text-primary text-3xl"><span class="path1"></span><span
|
||||||
class="path2"></span></i>
|
class="path2"></span></i>
|
||||||
@@ -306,6 +306,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card-footer">
|
||||||
|
<div id="existing-photos" class="flex gap-5"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- @include('lpj::penilai.components.foto-lampiran') --}}
|
{{-- @include('lpj::penilai.components.foto-lampiran') --}}
|
||||||
@@ -337,7 +340,75 @@
|
|||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
@include('lpj::surveyor.js.utils')
|
@include('lpj::surveyor.js.utils')
|
||||||
<script>
|
@push('scripts')
|
||||||
|
<script>
|
||||||
|
Dropzone.autoDiscover = false;
|
||||||
|
let myDropzone;
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
myDropzone = new Dropzone("#dropzone-upload", {
|
||||||
|
url: "{{ route('penilai.uploadTempPhoto') }}", // Temporary upload route
|
||||||
|
paramName: "file",
|
||||||
|
maxFilesize: 5, // MB
|
||||||
|
acceptedFiles: "image/*",
|
||||||
|
addRemoveLinks: true,
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||||
|
},
|
||||||
|
init: function() {
|
||||||
|
this.on("success", function(file, response) {
|
||||||
|
file.serverId = response.id; // Store the server's file ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// Load existing photos
|
||||||
|
loadExistingPhotos();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function loadExistingPhotos() {
|
||||||
|
const existingPhotosContainer = document.getElementById('existing-photos');
|
||||||
|
if (!existingPhotosContainer) return;
|
||||||
|
|
||||||
|
@if(isset($memo) && isset($memo->foto))
|
||||||
|
let existingPhotos;
|
||||||
|
try {
|
||||||
|
existingPhotos = @json($memo->foto);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Error parsing existing photos:', e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(existingPhotos)) {
|
||||||
|
existingPhotos.forEach(function(photoPath) {
|
||||||
|
if (typeof photoPath === 'string') {
|
||||||
|
const photoDiv = document.createElement('div');
|
||||||
|
photoDiv.className = 'col-md-3 mb-3';
|
||||||
|
|
||||||
|
const img = document.createElement('img');
|
||||||
|
img.src = photoPath;
|
||||||
|
img.className = 'img-fluid';
|
||||||
|
img.style.maxHeight = '150px';
|
||||||
|
|
||||||
|
photoDiv.appendChild(img);
|
||||||
|
existingPhotosContainer.appendChild(photoDiv);
|
||||||
|
|
||||||
|
if (myDropzone) {
|
||||||
|
let mockFile = { name: photoPath.split('/').pop(), size: 12345 };
|
||||||
|
myDropzone.emit("addedfile", mockFile);
|
||||||
|
myDropzone.emit("thumbnail", mockFile, photoPath);
|
||||||
|
myDropzone.emit("complete", mockFile);
|
||||||
|
mockFile.previewElement.classList.add("dz-success");
|
||||||
|
mockFile.previewElement.classList.add("dz-complete");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.error('Existing photos is not an array:', existingPhotos);
|
||||||
|
}
|
||||||
|
@endif
|
||||||
|
}
|
||||||
|
|
||||||
function saveMemo() {
|
function saveMemo() {
|
||||||
const form = document.getElementById('form-memo');
|
const form = document.getElementById('form-memo');
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
@@ -371,17 +442,26 @@
|
|||||||
const documentId = urlParams.get('documentId');
|
const documentId = urlParams.get('documentId');
|
||||||
const inspeksiId = urlParams.get('inspeksiId');
|
const inspeksiId = urlParams.get('inspeksiId');
|
||||||
|
|
||||||
const requestUrl = `{{ route('penilai.storeMemo') }}`;
|
// Create a new FormData object to send both JSON and files
|
||||||
|
const sendFormData = new FormData();
|
||||||
|
sendFormData.append('permohonan_id', permohonanId);
|
||||||
|
sendFormData.append('document_id', documentId);
|
||||||
|
sendFormData.append('inspeksi_id', inspeksiId);
|
||||||
|
sendFormData.append('memo', JSON.stringify(jsonData));
|
||||||
|
|
||||||
|
// Append all files from Dropzone
|
||||||
|
myDropzone.getAcceptedFiles().forEach((file, index) => {
|
||||||
|
sendFormData.append(`foto_${index}`, file);
|
||||||
|
});
|
||||||
|
|
||||||
|
const requestUrl = `{{ route('penilai.storeMemoWithPhotos') }}`;
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: requestUrl,
|
url: requestUrl,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: JSON.stringify({
|
data: sendFormData,
|
||||||
permohonan_id: permohonanId,
|
processData: false,
|
||||||
document_id: documentId,
|
contentType: false,
|
||||||
inspeksi_id: inspeksiId,
|
|
||||||
memo: jsonData,
|
|
||||||
}),
|
|
||||||
contentType: 'application/json',
|
|
||||||
headers: {
|
headers: {
|
||||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||||
},
|
},
|
||||||
@@ -409,17 +489,15 @@
|
|||||||
console.log(response);
|
console.log(response);
|
||||||
},
|
},
|
||||||
error: function(xhr, status, error) {
|
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]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
hideLoadingSwal();
|
hideLoadingSwal();
|
||||||
console.log(errors);
|
Swal.fire({
|
||||||
|
title: 'Error!',
|
||||||
|
text: 'Terjadi kesalahan saat mengirim data',
|
||||||
|
icon: 'error',
|
||||||
|
confirmButtonText: 'OK'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@endpush
|
||||||
|
|||||||
@@ -60,6 +60,10 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Fasilitas Kredit </span>
|
<span class="sort"> <span class="sort-label"> Fasilitas Kredit </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</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="tanggal_survei">
|
<th class="min-w-[150px]" data-datatable-column="tanggal_survei">
|
||||||
<span class="sort"> <span class="sort-label"> Tanggal Survei </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Survei </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -170,16 +174,53 @@
|
|||||||
return data.jenisfasilitas_kredit && data.jenisfasilitas_kredit.name ? `${data.jenisfasilitas_kredit.name}` : '-';
|
return data.jenisfasilitas_kredit && data.jenisfasilitas_kredit.name ? `${data.jenisfasilitas_kredit.name}` : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
jenis_laporan: {
|
||||||
|
title: 'Jenis Laporan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.penilai?.type;
|
||||||
|
},
|
||||||
|
},
|
||||||
tanggal_survei: {
|
tanggal_survei: {
|
||||||
title: 'Tanggal Survei',
|
title: 'Tanggal Survei',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return `${formatDate(new Date(data.created_at))}`;
|
if(data.penilaian.waktu_penilaian){
|
||||||
|
return `${formatDate(new Date(data.penilaian.waktu_penilaian))}`;
|
||||||
|
}
|
||||||
|
return `${formatDate(new Date(data.penilaian.created_at))}`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
due_date_sla: {
|
due_date_sla: {
|
||||||
title: 'Due Date SLA',
|
title: 'Due Date SLA',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return `${formatDate(new Date(data.created_at))}`;
|
const tujuan_penilaian = data.tujuan_penilaian.name;
|
||||||
|
const tipe_laporan = data.penilai?.type;
|
||||||
|
const nilai_plafond = data.penilaian.nilaiPlafond?.name;
|
||||||
|
let waktu_penilaian = new Date(data.penilaian.created_at);
|
||||||
|
if(data.penilaian.waktu_penilaian){
|
||||||
|
waktu_penilaian = new Date(data.penilaian.waktu_penilaian);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tujuan_penilaian.name==="RAP"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else {
|
||||||
|
if(tipe_laporan==="sederhana"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 2);
|
||||||
|
} else if(tipe_laporan==="standar"){
|
||||||
|
if(nilai_plafond==="2 M - 5 M"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else if(nilai_plafond==="< 2M"){
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 3);
|
||||||
|
} else {
|
||||||
|
waktu_penilaian.setDate(waktu_penilaian.getDate() + 5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return formatDate(waktu_penilaian);
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
@if ($permohonan->authorization->approve_so && $dataHeader == 'paparan' )
|
@if (isset($permohonan->authorization->approve_so) && $dataHeader == 'paparan' )
|
||||||
<div class="card border border-agi-100 pb-2.5">
|
<div class="card border border-agi-100 pb-2.5">
|
||||||
<div class="card-header bg-agi-50" id="basic_settings">
|
<div class="card-header bg-agi-50" id="basic_settings">
|
||||||
<h3 class="card-title">
|
<h3 class="card-title">
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
|
|
||||||
|
|
||||||
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $authorization->approve_so == null)
|
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $authorization->approve_so == null)
|
||||||
<button onclick="otorisatorData({{ $permohonan->id }},'SO')" type="button"
|
<button onclick="otorisatorData({{ $authorization->id }},'SO')" type="button"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
<i class="ki-filled ki-double-check"></i>
|
<i class="ki-filled ki-double-check"></i>
|
||||||
Otorisator {{ $header ?? '' }}
|
Otorisator {{ $header ?? '' }}
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
@if (Auth::user()->hasAnyRole(['administrator', 'EO Appraisal']) && $authorization->approve_so && $authorization->approve_eo == null)
|
@if (Auth::user()->hasAnyRole(['administrator', 'EO Appraisal']) && $authorization->approve_so && $authorization->approve_eo == null)
|
||||||
<button onclick="otorisatorData({{ $permohonan->id }},'EO')" type="button"
|
<button onclick="otorisatorData({{ $authorization->id }},'EO')" type="button"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
<i class="ki-filled ki-double-check"></i>
|
<i class="ki-filled ki-double-check"></i>
|
||||||
Otorisator {{ $header ?? '' }}
|
Otorisator {{ $header ?? '' }}
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) && $authorization->approve_eo && $authorization->approve_dd == null)
|
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) && $authorization->approve_eo && $authorization->approve_dd == null)
|
||||||
<button onclick="otorisatorData({{ $permohonan->id }},'DD')" type="button"
|
<button onclick="otorisatorData({{ $authorization->id }},'DD')" type="button"
|
||||||
class="btn btn-primary">
|
class="btn btn-primary">
|
||||||
<i class="ki-filled ki-double-check"></i>
|
<i class="ki-filled ki-double-check"></i>
|
||||||
Otorisator {{ $header ?? '' }}
|
Otorisator {{ $header ?? '' }}
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script>
|
<script>
|
||||||
const handleRejection = (dataId) => {
|
const handleRejection = (dataId,dataHeader='') => {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Masukkan alasan penolakan:',
|
title: 'Masukkan alasan penolakan:',
|
||||||
input: 'textarea',
|
input: 'textarea',
|
||||||
@@ -268,7 +268,8 @@
|
|||||||
if (rejectResult.isConfirmed) {
|
if (rejectResult.isConfirmed) {
|
||||||
handleAjaxRequest(
|
handleAjaxRequest(
|
||||||
`/otorisator/revisi-laporan/${dataId}`, {
|
`/otorisator/revisi-laporan/${dataId}`, {
|
||||||
keterangan: rejectResult.value
|
keterangan: rejectResult.value,
|
||||||
|
dataHeader: dataHeader
|
||||||
},
|
},
|
||||||
'Data berhasil ditolak.',
|
'Data berhasil ditolak.',
|
||||||
'Terjadi kesalahan saat melakukan penolakan.'
|
'Terjadi kesalahan saat melakukan penolakan.'
|
||||||
@@ -383,7 +384,7 @@
|
|||||||
'Terjadi kesalahan saat melakukan otorisasi.'
|
'Terjadi kesalahan saat melakukan otorisasi.'
|
||||||
);
|
);
|
||||||
} else if (result.isDenied) {
|
} else if (result.isDenied) {
|
||||||
handleRejection(dataId);
|
handleRejection(dataId,dataHeader);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,6 +84,18 @@
|
|||||||
<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>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="{{ $route[0] }}_div_jenis_laporan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Jenis Laporan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select class="inputku select" id="jenis_laporan" name="jenis_laporan">
|
||||||
|
<option value="sederhana">Sederhana</option>
|
||||||
|
<option value="standar">Standar</option>
|
||||||
|
</select>
|
||||||
|
<em id="jenis_laporan_msg" class="alert text-danger text-sm"></em>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<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">
|
<label class="form-label max-w-56">
|
||||||
Catatan
|
Catatan
|
||||||
|
|||||||
@@ -120,6 +120,7 @@
|
|||||||
let region = $("#{{$route[0]}}_region").val();
|
let region = $("#{{$route[0]}}_region").val();
|
||||||
let catatan = $("#{{$route[0]}}_catatan").val();
|
let catatan = $("#{{$route[0]}}_catatan").val();
|
||||||
let catatan2 = $("#{{$route[0]}}_catatan2").val();
|
let catatan2 = $("#{{$route[0]}}_catatan2").val();
|
||||||
|
let jenis_laporan = $("#jenis_laporan").val();
|
||||||
|
|
||||||
if(jenis_penilaian==0)
|
if(jenis_penilaian==0)
|
||||||
jenis_penilaian='';
|
jenis_penilaian='';
|
||||||
@@ -135,6 +136,7 @@
|
|||||||
input_data.region= region;
|
input_data.region= region;
|
||||||
input_data.catatan = catatan;
|
input_data.catatan = catatan;
|
||||||
input_data.catatan2 = catatan2;
|
input_data.catatan2 = catatan2;
|
||||||
|
input_data.jenis_laporan = jenis_laporan;
|
||||||
|
|
||||||
let useURL= '{{ route($route[0].'.update', $id) }}';
|
let useURL= '{{ route($route[0].'.update', $id) }}';
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
|||||||
@@ -81,7 +81,19 @@
|
|||||||
</select>
|
</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>
|
||||||
</div><br />
|
</div>
|
||||||
|
<div id="{{ $route[0] }}_div_jenis_laporan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Jenis Laporan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select class="inputku select" id="jenis_laporan" name="jenis_laporan">
|
||||||
|
<option value="sederhana">Sederhana</option>
|
||||||
|
<option value="standar">Standar</option>
|
||||||
|
</select>
|
||||||
|
<em id="jenis_laporan_msg" class="alert text-danger text-sm"></em>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div id="{{ $route[0] }}_div_catatan2"
|
<div id="{{ $route[0] }}_div_catatan2"
|
||||||
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
|
|||||||
@@ -60,8 +60,8 @@
|
|||||||
</center>
|
</center>
|
||||||
<br>
|
<br>
|
||||||
<h3>Kepada</h3>
|
<h3>Kepada</h3>
|
||||||
<p style="color: red; margin-left:25px">KJPP {{ $penawaran->kjpp_name }}</p>
|
<p style="color: red;">KJPP {{ $penawaran->kjpp_name }}</p>
|
||||||
<p style="color: red; margin-left:25px">{{ $penawaran->kjpp_address }}</p>
|
<p style="color: red;">{{ $penawaran->kjpp_address }}</p>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<p style="text-align: justify;">
|
<p style="text-align: justify;">
|
||||||
|
|||||||
@@ -76,8 +76,8 @@
|
|||||||
</center>
|
</center>
|
||||||
<br>
|
<br>
|
||||||
<h3>Kepada</h3>
|
<h3>Kepada</h3>
|
||||||
<p style="color: red; margin-left:25px">KJPP {{ $penawaran->kjpp_name }}</p>
|
<p style="color: red;">KJPP {{ $penawaran->kjpp_name }}</p>
|
||||||
<p style="color: red; margin-left:25px">{{ $penawaran->kjpp_address }}</p>
|
<p style="color: red;">{{ $penawaran->kjpp_address }}</p>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
<h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3>
|
<h3>Perihal: <b>Penunjukan sebagai Penyedia Jasa Penilaian Agunan</b></h3>
|
||||||
|
|||||||
@@ -616,7 +616,11 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::post('/preoses-laporan/{id}', [PenilaiController::class, 'storePenilaian'])->name('proses.laporan');
|
Route::post('/preoses-laporan/{id}', [PenilaiController::class, 'storePenilaian'])->name('proses.laporan');
|
||||||
|
|
||||||
Route::post('storeResume', [PenilaiController::class, 'storeResume'])->name('storeResume');
|
Route::post('storeResume', [PenilaiController::class, 'storeResume'])->name('storeResume');
|
||||||
|
|
||||||
Route::post('storeMemo', [PenilaiController::class, 'storeMemo'])->name('storeMemo');
|
Route::post('storeMemo', [PenilaiController::class, 'storeMemo'])->name('storeMemo');
|
||||||
|
Route::post('store-memo-with-photos', [PenilaiController::class, 'storeMemoWithPhotos'])->name('storeMemoWithPhotos');
|
||||||
|
Route::post('upload-temp-photo', [PenilaiController::class, 'uploadTempPhoto'])->name('uploadTempPhoto');
|
||||||
|
|
||||||
Route::post('storeRap', [PenilaiController::class, 'storeRap'])->name('storeRap');
|
Route::post('storeRap', [PenilaiController::class, 'storeRap'])->name('storeRap');
|
||||||
Route::post('storeLpjSederhanadanStandard', [PenilaiController::class, 'storeLpjSederhanadanStandard'])->name('storeLpjSederhanadanStandard');
|
Route::post('storeLpjSederhanadanStandard', [PenilaiController::class, 'storeLpjSederhanadanStandard'])->name('storeLpjSederhanadanStandard');
|
||||||
Route::put('revisi-surveyor/{id}', [PenilaiController::class, 'revisiSurveyor'])->name('revisiSurveyor');
|
Route::put('revisi-surveyor/{id}', [PenilaiController::class, 'revisiSurveyor'])->name('revisiSurveyor');
|
||||||
|
|||||||
Reference in New Issue
Block a user