Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Location\Models\City;
|
use Modules\Location\Models\City;
|
||||||
@@ -18,8 +20,6 @@
|
|||||||
use Modules\Lpj\Models\JenisJaminan;
|
use Modules\Lpj\Models\JenisJaminan;
|
||||||
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
use Modules\Lpj\Models\PemilikJaminan;
|
use Modules\Lpj\Models\PemilikJaminan;
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
use ZipArchive;
|
use ZipArchive;
|
||||||
|
|
||||||
class DokumenJaminanController extends Controller
|
class DokumenJaminanController extends Controller
|
||||||
@@ -72,45 +72,41 @@
|
|||||||
|
|
||||||
$document = DokumenJaminan::create($validate);
|
$document = DokumenJaminan::create($validate);
|
||||||
|
|
||||||
try {
|
if ($request->jenis_legalitas_jaminan_id) {
|
||||||
foreach ($request->dokumen_jaminan as $key => $value) {
|
foreach ($request->jenis_legalitas_jaminan_id as $key => $value) {
|
||||||
$file_name = $value->getClientOriginalName();
|
$detailData = [
|
||||||
|
'dokumen_jaminan_id' => $document->id,
|
||||||
|
'jenis_legalitas_jaminan_id' => $value,
|
||||||
|
'name' => $request->name[$key],
|
||||||
|
'keterangan' => $request->keterangan[$key],
|
||||||
|
];
|
||||||
|
|
||||||
if ($file_name) {
|
$dokumenJaminan = [];
|
||||||
try {
|
$dokumenNomor = [];
|
||||||
$file_name = $value->getClientOriginalName();
|
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
||||||
$value->storeAs(
|
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||||
|
if ($file) {
|
||||||
|
$file_name = $file->getClientOriginalName();
|
||||||
|
$file->storeAs(
|
||||||
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
$file_name,
|
$file_name,
|
||||||
);
|
);
|
||||||
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$detail = [
|
if (!empty($dokumenJaminan)) {
|
||||||
'dokumen_jaminan_id' => $document->id,
|
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
||||||
'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
|
$detailData['dokumen_nomor'] = json_encode($dokumenNomor);
|
||||||
'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
|
}
|
||||||
'name' => $request->name[$key],
|
|
||||||
'keterangan' => $request->keterangan[$key],
|
DetailDokumenJaminan::create($detailData);
|
||||||
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '',
|
|
||||||
];
|
|
||||||
DetailDokumenJaminan::create($detail);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
DB::rollBack();
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
|
||||||
'error',
|
|
||||||
'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
} catch (Exception $e) {
|
|
||||||
DB::rollBack();
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
|
||||||
'error',
|
|
||||||
'gg' . $e->getMessage(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
'success',
|
'success',
|
||||||
'Dokumen Jaminan berhasil ditambahkan',
|
'Dokumen Jaminan berhasil ditambahkan',
|
||||||
@@ -149,6 +145,7 @@
|
|||||||
$debitur = Debiture::find($id);
|
$debitur = Debiture::find($id);
|
||||||
|
|
||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
@@ -226,10 +223,12 @@
|
|||||||
$document->update($validate);
|
$document->update($validate);
|
||||||
|
|
||||||
// Get existing detail documents
|
// Get existing detail documents
|
||||||
$existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy('id');
|
$existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy(
|
||||||
|
'id',
|
||||||
|
);
|
||||||
|
|
||||||
if($request->jenis_legalitas_jaminan_id){
|
if ($request->jenis_legalitas_jaminan_id) {
|
||||||
foreach($request->jenis_legalitas_jaminan_id as $key => $value){
|
foreach ($request->jenis_legalitas_jaminan_id as $key => $value) {
|
||||||
$detailData = [
|
$detailData = [
|
||||||
'dokumen_jaminan_id' => $document->id,
|
'dokumen_jaminan_id' => $document->id,
|
||||||
'jenis_legalitas_jaminan_id' => $value,
|
'jenis_legalitas_jaminan_id' => $value,
|
||||||
@@ -238,21 +237,25 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
$dokumenJaminan = [];
|
$dokumenJaminan = [];
|
||||||
|
$dokumenNomor=[];
|
||||||
|
|
||||||
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
||||||
foreach($request->dokumen_jaminan[$key] as $file) {
|
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||||
if ($file) {
|
if ($file) {
|
||||||
$file_name = $file->getClientOriginalName();
|
$file_name = $file->getClientOriginalName();
|
||||||
$file->storeAs(
|
$file->storeAs(
|
||||||
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
$file_name
|
$file_name,
|
||||||
);
|
);
|
||||||
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($dokumenJaminan)) {
|
if (!empty($dokumenJaminan)) {
|
||||||
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
||||||
|
$detailData['dokumen_nomor'] = json_encode($dokumenNomor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||||
@@ -261,9 +264,18 @@
|
|||||||
if ($detailDocument) {
|
if ($detailDocument) {
|
||||||
// Merge new files with existing ones
|
// Merge new files with existing ones
|
||||||
if (!empty($dokumenJaminan)) {
|
if (!empty($dokumenJaminan)) {
|
||||||
$existingFiles = json_decode($detailDocument->dokumen_jaminan, true) ?: [];
|
$existingFiles = json_decode(
|
||||||
|
$detailDocument->dokumen_jaminan,
|
||||||
|
true,
|
||||||
|
) ?: [];
|
||||||
|
$existingNomor = json_decode(
|
||||||
|
$detailDocument->dokumen_nomor,
|
||||||
|
true,
|
||||||
|
) ?: [];
|
||||||
$mergedFiles = array_merge($existingFiles, $dokumenJaminan);
|
$mergedFiles = array_merge($existingFiles, $dokumenJaminan);
|
||||||
|
$mergedNomor = array_merge($existingNomor, $dokumenNomor);
|
||||||
$detailData['dokumen_jaminan'] = json_encode($mergedFiles);
|
$detailData['dokumen_jaminan'] = json_encode($mergedFiles);
|
||||||
|
$detailData['dokumen_nomor'] = json_encode($mergedNomor);
|
||||||
}
|
}
|
||||||
$detailDocument->update($detailData);
|
$detailDocument->update($detailData);
|
||||||
$existingDetails->forget($detailId);
|
$existingDetails->forget($detailId);
|
||||||
@@ -315,8 +327,10 @@
|
|||||||
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
||||||
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
||||||
|
|
||||||
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn('id',$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray())->get();
|
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn(
|
||||||
|
'id',
|
||||||
|
$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(),
|
||||||
|
)->get();
|
||||||
|
|
||||||
|
|
||||||
// Remove values from $legalitasJaminan that are in $currentLegalitasJaminan
|
// Remove values from $legalitasJaminan that are in $currentLegalitasJaminan
|
||||||
@@ -341,7 +355,7 @@
|
|||||||
'villages',
|
'villages',
|
||||||
'pemilikJaminan',
|
'pemilikJaminan',
|
||||||
'hubunganPemilik',
|
'hubunganPemilik',
|
||||||
'legalitas'
|
'legalitas',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -378,7 +392,9 @@
|
|||||||
|
|
||||||
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
|
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
|
||||||
foreach ($documents as $document) {
|
foreach ($documents as $document) {
|
||||||
$files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan];
|
$files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode(
|
||||||
|
$document->dokumen_jaminan,
|
||||||
|
) : [$document->dokumen_jaminan];
|
||||||
|
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
$filePath = storage_path('app/public/' . $file);
|
$filePath = storage_path('app/public/' . $file);
|
||||||
@@ -411,7 +427,9 @@
|
|||||||
{
|
{
|
||||||
$dokumen = request()->get('dokumen');
|
$dokumen = request()->get('dokumen');
|
||||||
$document = DetailDokumenJaminan::find($dokumen);
|
$document = DetailDokumenJaminan::find($dokumen);
|
||||||
$file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan];
|
$file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode(
|
||||||
|
$document->dokumen_jaminan,
|
||||||
|
) : [$document->dokumen_jaminan];
|
||||||
return response()->download(storage_path('app/public/' . $file[request()->get('index')]));
|
return response()->download(storage_path('app/public/' . $file[request()->get('index')]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,9 +443,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) : JsonResponse
|
public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1)
|
||||||
{
|
: JsonResponse {
|
||||||
|
|
||||||
$jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId);
|
$jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId);
|
||||||
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
|
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
|
||||||
$newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
|
$newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
|
||||||
@@ -438,7 +455,7 @@
|
|||||||
// Create a set of new jenis_legalitas_jaminan_ids for quick lookup
|
// Create a set of new jenis_legalitas_jaminan_ids for quick lookup
|
||||||
$newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray();
|
$newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray();
|
||||||
|
|
||||||
if($id>0) {
|
if ($id > 0) {
|
||||||
$document = DokumenJaminan::findOrFail($id);
|
$document = DokumenJaminan::findOrFail($id);
|
||||||
if ($document && $document->detail) {
|
if ($document && $document->detail) {
|
||||||
foreach ($document->detail as $detail) {
|
foreach ($document->detail as $detail) {
|
||||||
@@ -448,12 +465,17 @@
|
|||||||
'id' => $detail->id,
|
'id' => $detail->id,
|
||||||
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
|
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
|
||||||
'name' => $detail->jenisLegalitasJaminan->name,
|
'name' => $detail->jenisLegalitasJaminan->name,
|
||||||
'dokumen_jaminan' => json_decode($detail->dokumen_jaminan) ?? $detail->dokumen_jaminan,
|
'dokumen_jaminan' => json_decode(
|
||||||
|
$detail->dokumen_jaminan,
|
||||||
|
) ?? $detail->dokumen_jaminan,
|
||||||
|
'dokumen_nomor' => json_decode(
|
||||||
|
$detail->dokumen_nomor,
|
||||||
|
) ?? $detail->dokumen_nomor,
|
||||||
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
|
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
|
||||||
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
|
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
|
||||||
'details' => $detail->details,
|
'details' => $detail->details,
|
||||||
'keterangan' => $detail->keterangan,
|
'keterangan' => $detail->keterangan,
|
||||||
'is_existing' => true
|
'is_existing' => true,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -467,11 +489,12 @@
|
|||||||
'jenis_legalitas_jaminan_id' => $legalitas->id,
|
'jenis_legalitas_jaminan_id' => $legalitas->id,
|
||||||
'name' => $legalitas->name,
|
'name' => $legalitas->name,
|
||||||
'dokumen_jaminan' => null,
|
'dokumen_jaminan' => null,
|
||||||
|
'dokumen_nomor' => null,
|
||||||
'custom_field' => $legalitas->custom_field,
|
'custom_field' => $legalitas->custom_field,
|
||||||
'custom_field_type' => $legalitas->custom_field_type,
|
'custom_field_type' => $legalitas->custom_field_type,
|
||||||
'details' => null,
|
'details' => null,
|
||||||
'keterangan' => null,
|
'keterangan' => null,
|
||||||
'is_existing' => false
|
'is_existing' => false,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class ProsesPenawaranController extends Controller
|
|||||||
|
|
||||||
// Get the data for the current page
|
// Get the data for the current page
|
||||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
$data = $query->with(['tujuanPenilaianKJPP','permohonan','permohonan.debiture'])->get();
|
$data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
@@ -116,7 +116,6 @@ class ProsesPenawaranController extends Controller
|
|||||||
->get();
|
->get();
|
||||||
|
|
||||||
if ($penawaran) {
|
if ($penawaran) {
|
||||||
|
|
||||||
$i=0;
|
$i=0;
|
||||||
foreach($penawrandetails as $obj)
|
foreach($penawrandetails as $obj)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,10 +3,19 @@
|
|||||||
namespace Modules\Lpj\Http\Controllers;
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
|
||||||
// use Modules\Location\Models\City;
|
// use Modules\Location\Models\City;
|
||||||
// use Modules\Location\Models\District;
|
// use Modules\Location\Models\District;
|
||||||
// use Modules\Location\Models\Province;
|
// use Modules\Location\Models\Province;
|
||||||
@@ -20,16 +29,6 @@ use Exception;
|
|||||||
// use Modules\Lpj\Models\JenisJaminan;
|
// use Modules\Lpj\Models\JenisJaminan;
|
||||||
// use Modules\Lpj\Models\JenisLegalitasJaminan;
|
// use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
// use Modules\Lpj\Models\PemilikJaminan;
|
// use Modules\Lpj\Models\PemilikJaminan;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
|
||||||
use Modules\Lpj\Models\JenisPenilaian;
|
|
||||||
use Modules\Lpj\Models\Regions;
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
|
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
|
||||||
|
|
||||||
class RegistrasiFinalController extends Controller
|
class RegistrasiFinalController extends Controller
|
||||||
{
|
{
|
||||||
@@ -47,11 +46,12 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve data from the database
|
// Retrieve data from the database
|
||||||
$query =PenawaranTender::query()
|
$query = PenawaranTender::with(['permohonan', 'tujuanPenilaianKjpp'])->whereHas(
|
||||||
->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
|
'permohonan',
|
||||||
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
function ($q) {
|
||||||
->where('penawaran.status','=','spk')
|
$q->where('status', '=', 'spk');
|
||||||
->withCount('penawarandetails');
|
},
|
||||||
|
)->withCount('penawarandetails');
|
||||||
|
|
||||||
// Apply search filter if provided
|
// Apply search filter if provided
|
||||||
if ($request->has('search') && !empty($request->get('search'))) {
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
@@ -90,25 +90,23 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
$data = $query->with(['permohonan'])->get();
|
$data = $query->with(['permohonan'])->get();
|
||||||
// dd($data);
|
// dd($data);
|
||||||
$i=0;
|
$i = 0;
|
||||||
foreach($data as $obj)
|
foreach ($data as $obj) {
|
||||||
{
|
if ($obj->tanggal_penilaian_sebelumnya) {
|
||||||
if($obj->tanggal_penilaian_sebelumnya)
|
$data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format(
|
||||||
{
|
'd F Y H:i:s',
|
||||||
$data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s');
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($obj->biaya_kjpp_sebelumnya)
|
if ($obj->biaya_kjpp_sebelumnya) {
|
||||||
{
|
|
||||||
$data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya);
|
$data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// date_range
|
// date_range
|
||||||
if($obj->start_date && $obj->end_date)
|
if ($obj->start_date && $obj->end_date) {
|
||||||
{
|
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . Carbon::parse(
|
||||||
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y').' - '.Carbon::parse($obj->end_date)->format('d M Y');
|
$obj->end_date,
|
||||||
|
)->format('d M Y');
|
||||||
}
|
}
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
@@ -129,21 +127,20 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
'pageCount' => $pageCount,
|
'pageCount' => $pageCount,
|
||||||
'page' => $currentPage,
|
'page' => $currentPage,
|
||||||
'totalCount' => $totalRecords,
|
'totalCount' => $totalRecords,
|
||||||
'data' => $data
|
'data' => $data,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show($id)
|
public function show($id)
|
||||||
{
|
{
|
||||||
$permohonan = Permohonan::find($id);
|
$permohonan = Permohonan::find($id);
|
||||||
if($permohonan->dokumen)
|
if ($permohonan->dokumen) {
|
||||||
{
|
|
||||||
$pdfSPK_path = Storage::url($permohonan->dokumen);
|
$pdfSPK_path = Storage::url($permohonan->dokumen);
|
||||||
$permohonan->dokumen = $pdfSPK_path;
|
$permohonan->dokumen = $pdfSPK_path;
|
||||||
$permohonan->dokumen = '| <a download href="'. $pdfSPK_path.'" class="badge badge-sm badge-outline" target="_blank">Dokumen SPK.pdf <i class="ki-filled ki-cloud-download"></i></a>';
|
$permohonan->dokumen = '| <a download href="' . $pdfSPK_path . '" class="badge badge-sm badge-outline" target="_blank">Dokumen SPK.pdf <i class="ki-filled ki-cloud-download"></i></a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('lpj::registrasifinal.show', compact('id','permohonan'));
|
return view('lpj::registrasifinal.show', compact('id', 'permohonan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
@@ -151,30 +148,28 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
return view('lpj::registrasifinal.edit', compact('id'));
|
return view('lpj::registrasifinal.edit', compact('id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setData(Request $request): JsonResponse
|
public function setData(Request $request)
|
||||||
{
|
: JsonResponse {
|
||||||
$data = array();
|
$data = [];
|
||||||
$datas = array();
|
$datas = [];
|
||||||
|
|
||||||
if (request()->ajax()) {
|
if (request()->ajax()) {
|
||||||
$id = $request->id;
|
$id = $request->id;
|
||||||
$datas = Permohonan::find($id);
|
$datas = Permohonan::find($id);
|
||||||
|
|
||||||
if ($datas) {
|
if ($datas) {
|
||||||
$penawaran=null;
|
$penawaran = null;
|
||||||
$regions=null;
|
$regions = null;
|
||||||
$regions=Regions::pluck('name', 'id');
|
$regions = Regions::pluck('name', 'id');
|
||||||
$penawaran = PenawaranTender::where('nomor_registrasi','=',$datas->nomor_registrasi)->first();
|
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $datas->nomor_registrasi)->first();
|
||||||
|
|
||||||
$penawaranString = "";
|
$penawaranString = "";
|
||||||
if($penawaran->status)
|
if ($penawaran->status) {
|
||||||
{
|
|
||||||
$penawaranString = convertSlug($penawaran->status);
|
$penawaranString = convertSlug($penawaran->status);
|
||||||
$penawaran->status = $penawaranString;
|
$penawaran->status = $penawaranString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($datas->dokumen)
|
if ($datas->dokumen) {
|
||||||
{
|
|
||||||
$pdfSPK_path = Storage::url($datas->dokumen);
|
$pdfSPK_path = Storage::url($datas->dokumen);
|
||||||
$datas->dokumen = $pdfSPK_path;
|
$datas->dokumen = $pdfSPK_path;
|
||||||
}
|
}
|
||||||
@@ -183,26 +178,26 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
$data['regions'] = $regions;
|
$data['regions'] = $regions;
|
||||||
$data['penawaran'] = $penawaran;
|
$data['penawaran'] = $penawaran;
|
||||||
$data['datas'] = $datas;
|
$data['datas'] = $datas;
|
||||||
$data['message']['message_success'] = array("data successfully found");
|
$data['message']['message_success'] = ["data successfully found"];
|
||||||
} else {
|
} else {
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['datas'] = null;
|
$data['datas'] = null;
|
||||||
$data['message']['message_data'] = array("data not found");
|
$data['message']['message_data'] = ["data not found"];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message']['message_ajax'] = array("no ajax request");
|
$data['message']['message_ajax'] = ["no ajax request"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json($data);
|
return response()->json($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, $id): JsonResponse
|
public function update(Request $request, $id)
|
||||||
{
|
: JsonResponse {
|
||||||
// init
|
// init
|
||||||
$data = array();
|
$data = [];
|
||||||
$dataPermohonan = array();
|
$dataPermohonan = [];
|
||||||
$dataPenawaran = array();
|
$dataPenawaran = [];
|
||||||
|
|
||||||
if (request()->ajax()) {
|
if (request()->ajax()) {
|
||||||
$validator = RegistrasiFinalController::rulesEditnya($request, $id);
|
$validator = RegistrasiFinalController::rulesEditnya($request, $id);
|
||||||
@@ -210,12 +205,9 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
if ($validator['fails']) {
|
if ($validator['fails']) {
|
||||||
$data['message'] = $validator['errors'];
|
$data['message'] = $validator['errors'];
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
|
||||||
// update table permohonan => status (registrasi-final), region_id, keterangan, authorized_at, authorized_status, authorized_by
|
// update table permohonan => status (registrasi-final), region_id, keterangan, authorized_at, authorized_status, authorized_by
|
||||||
// update table penawaran => status (registrasi-final)
|
// update table penawaran => status (registrasi-final)
|
||||||
$dataPermohonan = [
|
$dataPermohonan = [
|
||||||
@@ -223,15 +215,16 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
'region_id' => $request->region,
|
'region_id' => $request->region,
|
||||||
'keterangan' => $request->catatan,
|
'keterangan' => $request->catatan,
|
||||||
'authorized_at' => now(),
|
'authorized_at' => now(),
|
||||||
'authorized_status' =>1,
|
'authorized_status' => 1,
|
||||||
'authorized_by' => Auth::id()
|
'authorized_by' => Auth::id(),
|
||||||
];
|
];
|
||||||
|
|
||||||
$dataPenawaran = ['status' => 'registrasi-final'];
|
$dataPenawaran = ['status' => 'registrasi-final'];
|
||||||
|
|
||||||
|
|
||||||
$permohonan = Permohonan::find($id);
|
$permohonan = Permohonan::find($id);
|
||||||
$penawaran = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first();
|
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $permohonan->nomor_registrasi)
|
||||||
|
->first();
|
||||||
|
|
||||||
$permohonan->update($dataPermohonan);
|
$permohonan->update($dataPermohonan);
|
||||||
$penawaran->update($dataPenawaran);
|
$penawaran->update($dataPenawaran);
|
||||||
@@ -239,26 +232,24 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
DB::commit();
|
DB::commit();
|
||||||
|
|
||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
$data['message']['message_success'] = array('Regitrasi Final '.$permohonan->nomor_registrasi.' successfully');
|
$data['message']['message_success'] = ['Regitrasi Final ' . $permohonan->nomor_registrasi . ' successfully'];
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message']['message_try_catch'] = array('Regitrasi Final '.$permohonan->nomor_registrasi.' failed.');
|
$data['message']['message_try_catch'] = ['Regitrasi Final ' . $permohonan->nomor_registrasi . ' failed.'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message']['message_ajax'] = array("no ajax request");
|
$data['message']['message_ajax'] = ["no ajax request"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json($data);
|
return response()->json($data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rulesEditnya($request, $id)
|
public function rulesEditnya($request, $id)
|
||||||
{
|
{
|
||||||
$validate_catatan='';
|
$validate_catatan = '';
|
||||||
|
|
||||||
$validateIt = [
|
$validateIt = [
|
||||||
// 'name' diambil dari definisi parameter yang di kirim pada POST Data
|
// 'name' diambil dari definisi parameter yang di kirim pada POST Data
|
||||||
@@ -268,7 +259,7 @@ use Modules\Lpj\Models\PenawaranTender;
|
|||||||
|
|
||||||
$messageIt = [
|
$messageIt = [
|
||||||
'region.required' => 'Silahkan pilih Region',
|
'region.required' => 'Silahkan pilih Region',
|
||||||
'catatan.required' => 'Silahkan isi Catatan'
|
'catatan.required' => 'Silahkan isi Catatan',
|
||||||
];
|
];
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), $validateIt, $messageIt);
|
$validator = Validator::make($request->all(), $validateIt, $messageIt);
|
||||||
|
|||||||
@@ -96,6 +96,14 @@ use Illuminate\Support\Facades\Auth;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// data dokumen_spk
|
||||||
|
if($obj->dokumen)
|
||||||
|
{
|
||||||
|
$spkpenawaran_path = Storage::url($obj->dokumen);
|
||||||
|
// dd($spkpenawaran_path);
|
||||||
|
$data[$i]->dokumen = $spkpenawaran_path;
|
||||||
|
}
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
'jenis_legalitas_jaminan_id',
|
'jenis_legalitas_jaminan_id',
|
||||||
'name',
|
'name',
|
||||||
'dokumen_jaminan',
|
'dokumen_jaminan',
|
||||||
|
'dokumen_nomor',
|
||||||
'keterangan',
|
'keterangan',
|
||||||
'details',
|
'details',
|
||||||
'status',
|
'status',
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ return new class extends Migration
|
|||||||
$table->string('kontur_tanah');
|
$table->string('kontur_tanah');
|
||||||
$table->string('ketinggian_jalan');
|
$table->string('ketinggian_jalan');
|
||||||
$table->string('kontur_jalan');
|
$table->string('kontur_jalan');
|
||||||
$table->string('posis_kavling');
|
$table->string('posisi_kavling');
|
||||||
$table->enum('tusuk_sate', ['yes', 'no']);
|
$table->enum('tusuk_sate', ['yes', 'no']);
|
||||||
$table->enum('lockland', ['yes', 'no']);
|
$table->enum('lockland', ['yes', 'no']);
|
||||||
$table->string('kondisi_fisik_tanah');
|
$table->string('kondisi_fisik_tanah');
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('detail_dokumen_jaminan', function (Blueprint $table) {
|
||||||
|
$table->string('dokumen_nomor')->nullable()->after('dokumen_jaminan');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('detail_dokumen_jaminan', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('dokumen_nomor');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="py-3 max-w-[100px] align-top" >
|
<td class="py-3 max-w-[100px] align-top">
|
||||||
Dokumen Jaminan
|
Dokumen Jaminan
|
||||||
</td>
|
</td>
|
||||||
<td class="py-3 text-gray-700 text-2sm font-normal">
|
<td class="py-3 text-gray-700 text-2sm font-normal">
|
||||||
@@ -77,16 +77,22 @@
|
|||||||
@if(isset($detail->dokumen_jaminan))
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@php
|
@php
|
||||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
$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
|
@endphp
|
||||||
@foreach($dokumen_jaminan as $index => $dokumen)
|
@foreach($dokumen_jaminan as $index => $dokumen)
|
||||||
|
<div class="flex w-full lg:w-[30%]">
|
||||||
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
|
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
|
||||||
|
@if(!empty($dokumen_nomor))
|
||||||
|
<span class="flex-1 mt-2 text-info">Nomor Dokumen : {{ $dokumen_nomor[$index] }}</span>
|
||||||
|
@endif
|
||||||
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||||
class="badge badge-sm badge-outline mt-2 mr-2">
|
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
{{ basename($dokumen) }}
|
{{ basename($dokumen) }}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a>
|
||||||
@endif
|
@endif
|
||||||
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')"><i class="ki-filled ki-eye mr-2"></i>Preview</span>
|
<span class="flex-none badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')"><i class="ki-filled ki-eye mr-2"></i>Preview</span>
|
||||||
|
</div>
|
||||||
<br>
|
<br>
|
||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
@@ -146,10 +146,10 @@
|
|||||||
|
|
||||||
<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">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nama Dokumen">
|
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -160,23 +160,34 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]">
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
<div id="additional-files-{{ $n }}"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@if(isset($detail->dokumen_jaminan))
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@php
|
@php
|
||||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
$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
|
@endphp
|
||||||
|
<div class="flex flex-col w-full gap-2">
|
||||||
@foreach($dokumen_jaminan as $index => $dokumen)
|
@foreach($dokumen_jaminan as $index => $dokumen)
|
||||||
|
<div class="flex w-full lg:w-[30%]">
|
||||||
|
@if(!empty($dokumen_nomor))
|
||||||
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : {{ $dokumen_nomor[$index] }}</span>
|
||||||
|
@endif
|
||||||
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||||
class="badge badge-sm badge-outline mt-2 mr-2">
|
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
{{ basename($dokumen) }}
|
{{ basename($dokumen) }}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -234,10 +245,10 @@
|
|||||||
|
|
||||||
<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">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nama Dokumen">
|
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -248,8 +259,9 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
<div id="additional-files-{{ $n }}"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -287,8 +299,8 @@
|
|||||||
</div>
|
</div>
|
||||||
@php $n++; @endphp
|
@php $n++; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
|
||||||
@endif
|
@endif
|
||||||
|
</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">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
@@ -496,10 +508,10 @@
|
|||||||
|
|
||||||
<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">
|
<label class="form-label max-w-56">
|
||||||
Nama Dokumen
|
Nomor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input" type="text" name="name[]" value="${item.name || ''}" placeholder="Nama Dokumen">
|
<input class="input" type="text" name="name[]" value="${item.name || ''}" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -508,10 +520,13 @@
|
|||||||
Dokumen Jaminan
|
Dokumen Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full" id="file-container-${index}">
|
<div class="flex flex-wrap items-baseline w-full" id="file-container-${index}">
|
||||||
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id) : ''}
|
<div class="flex flex-col w-full gap-2">
|
||||||
|
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ''}
|
||||||
|
</div>
|
||||||
<div class="flex items-center gap-2 my-2 w-full">
|
<div class="flex items-center gap-2 my-2 w-full">
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -541,32 +556,14 @@
|
|||||||
.catch(error => console.error('Error:', error));
|
.catch(error => console.error('Error:', error));
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
|
||||||
if (typeof dokumenJaminan === 'string') {
|
|
||||||
return `
|
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
||||||
${dokumenJaminan.split('/').pop()}
|
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
|
||||||
</a>
|
|
||||||
`;
|
|
||||||
} else if (Array.isArray(dokumenJaminan)) {
|
|
||||||
return dokumenJaminan.map(file => `
|
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${encodeURIComponent(file)}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
||||||
${file.split('/').pop()}
|
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
|
||||||
</a>
|
|
||||||
`).join('');
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function addFileInput(index) {
|
function addFileInput(index) {
|
||||||
const container = document.getElementById(`file-container-${index}`);
|
const container = document.getElementById(`file-container-${index}`);
|
||||||
const newInput = document.createElement('div');
|
const newInput = document.createElement('div');
|
||||||
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
||||||
newInput.innerHTML = `
|
newInput.innerHTML = `
|
||||||
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<button type="button" class="btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
||||||
|
<button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
||||||
`;
|
`;
|
||||||
container.appendChild(newInput);
|
container.appendChild(newInput);
|
||||||
}
|
}
|
||||||
@@ -575,20 +572,24 @@
|
|||||||
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) {
|
||||||
if (typeof dokumenJaminan === 'string') {
|
if (typeof dokumenJaminan === 'string' && typeof dokumenNomor === 'string') {
|
||||||
return `
|
return `
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2">
|
<div class="flex w-full lg:w-[30%]">
|
||||||
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : ${dokumenNomor}</span>
|
||||||
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="flex-none badge badge-sm badge-outline mt-2">
|
||||||
${dokumenJaminan.split('/').pop()}
|
${dokumenJaminan.split('/').pop()}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
`;
|
`;
|
||||||
} else if (Array.isArray(dokumenJaminan)) {
|
} else if (Array.isArray(dokumenJaminan) && Array.isArray(dokumenNomor)) {
|
||||||
return dokumenJaminan.map(file => `
|
return dokumenJaminan.map((file, index) => `<div class="flex w-full lg:w-[30%]">
|
||||||
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${file}" class="badge badge-sm badge-outline mt-2 mr-2">
|
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : ${dokumenNomor[index] || 'N/A'}</span>
|
||||||
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${file}" class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
${file.split('/').pop()}
|
${file.split('/').pop()}
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
</a>
|
</a></div>
|
||||||
`).join('');
|
`).join('');
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
|
|||||||
@@ -149,10 +149,10 @@
|
|||||||
return `${formatDate(new Date(data.start_date))} - ${formatDate(new Date(data.end_date))}`
|
return `${formatDate(new Date(data.start_date))} - ${formatDate(new Date(data.end_date))}`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tujuan_penilaian_k_j_p_p: {
|
tujuan_penilaian_kjpp: {
|
||||||
title: 'Tujuan Penilaian KJPP',
|
title: 'Tujuan Penilaian KJPP',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tujuan_penilaian_k_j_p_p[0].name
|
return data.tujuan_penilaian_kjpp.name
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
penawarandetails_count: {
|
penawarandetails_count: {
|
||||||
|
|||||||
@@ -147,6 +147,38 @@
|
|||||||
|
|
||||||
@include('lpj::component.detail-jaminan')
|
@include('lpj::component.detail-jaminan')
|
||||||
|
|
||||||
|
<div class="card min-w-full">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Data Biaya
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-table scrollable-x-auto pb-3">
|
||||||
|
<div class="grid grid-cols-1 xl:grid-cols-1 gap-5 lg:gap-7.5">
|
||||||
|
<div class="col-span-1">
|
||||||
|
<table class="table align-middle text-sm text-gray-500">
|
||||||
|
<tr>
|
||||||
|
<td width="10%" class="py-2 text-gray-600 font-normal">
|
||||||
|
Status Bayar
|
||||||
|
</td>
|
||||||
|
<td class="py-2 text-gray-800 font-normaltext-sm">
|
||||||
|
{{ strtoupper(str_replace('_',' ',$permohonan->status_bayar)) }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="py-3">
|
||||||
|
Nilai NJOP
|
||||||
|
</td>
|
||||||
|
<td class="py-3 text-gray-700 text-2sm font-normal">
|
||||||
|
{{ $permohonan->nilai_njop }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="card pb-2.5">
|
<div class="card pb-2.5">
|
||||||
<div class="card-header" id="basic_settings">
|
<div class="card-header" id="basic_settings">
|
||||||
|
|||||||
@@ -13,7 +13,8 @@
|
|||||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
|
||||||
<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 }}">
|
<!-- $id => penawaran.id -->
|
||||||
|
<input type="hidden" id="{{$route[0]}}_id" name="id" value="{{ $id }}">
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
@csrf
|
@csrf
|
||||||
<div class="card pb-2.5">
|
<div class="card pb-2.5">
|
||||||
|
|||||||
@@ -114,6 +114,9 @@
|
|||||||
},
|
},
|
||||||
tujuan_penilaian_kjpp_name: {
|
tujuan_penilaian_kjpp_name: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian',
|
||||||
|
render: (item, data) => {
|
||||||
|
return `${data.tujuan_penilaian_kjpp.name || ''}`;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
nama_kjpp_sebelumnya: {
|
nama_kjpp_sebelumnya: {
|
||||||
title: 'Nama KJPP Terpilih',
|
title: 'Nama KJPP Terpilih',
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
|
|
||||||
function setData()
|
function setData()
|
||||||
{
|
{
|
||||||
let id = $("#id").val();
|
// id => penawaran.id
|
||||||
|
let id = $("#{{$route[0]}}_id").val();
|
||||||
let token = "{{ csrf_token() }}";
|
let token = "{{ csrf_token() }}";
|
||||||
// alert('token = ' + token);
|
// alert('token = ' + token);
|
||||||
var useURL = "{{ route('registrasifinal.setData') }}";
|
var useURL = "{{ route('registrasifinal.setData') }}";
|
||||||
@@ -81,6 +82,7 @@
|
|||||||
let token = "{{ csrf_token() }}";
|
let token = "{{ csrf_token() }}";
|
||||||
|
|
||||||
let _method = $('input[name=_method]').val();
|
let _method = $('input[name=_method]').val();
|
||||||
|
// id => penawaran.id
|
||||||
let id = $('#{{$route[0]}}_id').val();
|
let id = $('#{{$route[0]}}_id').val();
|
||||||
let region = $("#{{$route[0]}}_region").val();
|
let region = $("#{{$route[0]}}_region").val();
|
||||||
let catatan = $("#{{$route[0]}}_catatan").val();
|
let catatan = $("#{{$route[0]}}_catatan").val();
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
<link rel="stylesheet" href="{{ public_path('build/assets/app-BEWyoHLE.css') }}" data-navigate-track="reload">
|
@php
|
||||||
<link rel="stylesheet" href="{{ public_path('build/assets/app-DqiwbDNQ.css') }}" data-navigate-track="reload">
|
$manifest = json_decode(file_get_contents(public_path('build/manifest.json')), true);
|
||||||
|
$cssFiles = array_filter($manifest, function($value) {
|
||||||
|
return strpos($value['file'], '.css') !== false;
|
||||||
|
});
|
||||||
|
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@foreach($cssFiles as $file)
|
||||||
|
<link rel="stylesheet" href="{{ public_path('build/'.$file['file']) }}" data-navigate-track="reload">
|
||||||
|
@endforeach
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="scrollable-x-auto">
|
<div class="scrollable-x-auto">
|
||||||
<div class="print-area">
|
<div class="print-area">
|
||||||
@@ -79,7 +89,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Jangka Waktu</td>
|
<td>Jangka Waktu</td>
|
||||||
<td>:</td>
|
<td>:</td>
|
||||||
<td></td>
|
<td><span style="color: red;"> {{ formatTanggalIndonesia($penawaran->start_date) }} - {{ formatTanggalIndonesia($penawaran->end_date) }}</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" style="text-align: center;">i</td>
|
<td colspan="2" style="text-align: center;">i</td>
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Jangka Waktu</td>
|
<td>Jangka Waktu</td>
|
||||||
<td>:</td>
|
<td>:</td>
|
||||||
<td></td>
|
<td><span style="color: red;"> {{ formatTanggalIndonesia($penawaran->start_date) }} - {{ formatTanggalIndonesia($penawaran->end_date) }}</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" style="text-align: center;">i</td>
|
<td colspan="2" style="text-align: center;">i</td>
|
||||||
|
|||||||
@@ -78,12 +78,6 @@
|
|||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function spkShow(regId)
|
|
||||||
{
|
|
||||||
var url = "{{ url('show') }}/"+regId;
|
|
||||||
$(location).attr('href',url);
|
|
||||||
}
|
|
||||||
|
|
||||||
function spkCreate(regId)
|
function spkCreate(regId)
|
||||||
{
|
{
|
||||||
var url1 = "/spk/"+regId+"/edit";
|
var url1 = "/spk/"+regId+"/edit";
|
||||||
|
|||||||
Reference in New Issue
Block a user