Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender
This commit is contained in:
@@ -0,0 +1,272 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithTitle;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithCustomStartCell;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithEvents;
|
||||||
|
use Maatwebsite\Excel\Events\AfterSheet;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\Branch;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class LaporanHasilPenilaianJaminanInternalExternalExport implements FromCollection, WithHeadings, WithMapping, WithTitle, WithCustomStartCell, WithEvents
|
||||||
|
{
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
public function __construct($request)
|
||||||
|
{
|
||||||
|
$this->request = $request;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
$query = Permohonan::query();
|
||||||
|
$query = $query->where('status', 'done');
|
||||||
|
|
||||||
|
// Apply date range filter if provided
|
||||||
|
if ($this->request->has('start_date') || $this->request->has('end_date')) {
|
||||||
|
$query->whereBetween('tanggal_permohonan', [
|
||||||
|
$this->request->start_date ?? '1900-01-01',
|
||||||
|
$this->request->end_date ?? now()->toDateString()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply branch filter if provided
|
||||||
|
if ($this->request->has('branch_id') && !empty($this->request->branch_id)) {
|
||||||
|
$query->where('branch_id', $this->request->branch_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($this->request->has('search') && !empty($this->request->search)) {
|
||||||
|
$search = $this->request->search;
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default ordering
|
||||||
|
$query->orderBy('nomor_registrasi', 'asc');
|
||||||
|
|
||||||
|
return $query->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected $rowNumber = 0;
|
||||||
|
|
||||||
|
public function map($permohonan): array
|
||||||
|
{
|
||||||
|
$this->rowNumber++;
|
||||||
|
$luas_tanah = 0;
|
||||||
|
$luas_bangunan = 0;
|
||||||
|
$nilai_tanah = 0;
|
||||||
|
$nilai_bangunan = 0;
|
||||||
|
$npw = 0;
|
||||||
|
$nilai_liquidasi = 0;
|
||||||
|
|
||||||
|
if (isset($permohonan->penilai->lpj)) {
|
||||||
|
$lpj = json_decode($permohonan->penilai->lpj, true);
|
||||||
|
$npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0);
|
||||||
|
|
||||||
|
$luas_tanah = $lpj['luas_tanah'] ?? 0;
|
||||||
|
$luas_bangunan = $lpj['luas_bangunan'] ?? 0;
|
||||||
|
$nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0);
|
||||||
|
$nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0);
|
||||||
|
$nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
$this->rowNumber,
|
||||||
|
$permohonan->nomor_registrasi,
|
||||||
|
$permohonan->tanggal_permohonan,
|
||||||
|
$permohonan->debiture->branch->name,
|
||||||
|
$permohonan->creator->name,
|
||||||
|
$permohonan->debiture->cif,
|
||||||
|
$permohonan->debiture->name,
|
||||||
|
$permohonan->jenisPenilaian->name,
|
||||||
|
$permohonan->tujuanPenilaian->name,
|
||||||
|
$permohonan->jenisFasilitasKredit->name,
|
||||||
|
$permohonan->documents->pluck('jenisJaminan.name')->unique()->implode(', '),
|
||||||
|
$permohonan->documents->map(function ($document) {
|
||||||
|
return formatAlamat($document);
|
||||||
|
})->unique()->implode(', '),
|
||||||
|
$permohonan->documents->flatMap(function ($document) {
|
||||||
|
return $document->detail->map(function ($detail) {
|
||||||
|
return (!empty($detail->dokumen_nomor) && is_array($detail->dokumen_nomor))
|
||||||
|
? ($detail->jenisLegalitasJaminan->name ?? '') . "\n" . implode(', ', $detail->dokumen_nomor)
|
||||||
|
: null;
|
||||||
|
});
|
||||||
|
})->filter()->unique()->implode(', '),
|
||||||
|
$permohonan->documents->pluck('pemilik.name')->unique()->implode(', '),
|
||||||
|
$luas_tanah . ' m²',
|
||||||
|
formatRupiah($nilai_tanah, 2),
|
||||||
|
$luas_bangunan . ' m²',
|
||||||
|
formatRupiah($nilai_bangunan, 2),
|
||||||
|
formatRupiah($permohonan->nilai_njop ?? 0, 2),
|
||||||
|
formatRupiah($npw, 2),
|
||||||
|
formatRupiah($nilai_liquidasi, 2),
|
||||||
|
$permohonan->documents->map(function ($document) {
|
||||||
|
return formatTanggalIndonesia($document->created_at);
|
||||||
|
})->first(),
|
||||||
|
'', // tanggal_spk
|
||||||
|
'', // nomor_spk
|
||||||
|
'', // tanggal_rencana_kunjungan
|
||||||
|
$permohonan->penilaian->tanggal_kunjungan ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '',
|
||||||
|
'', // tanggal_delivered
|
||||||
|
'', // jangka_waktu_sla
|
||||||
|
($permohonan->approval_dd_at || $permohonan->approval_eo_at) ?
|
||||||
|
formatTanggalIndonesia($permohonan->approval_dd_at ?? $permohonan->approval_eo_at) : '',
|
||||||
|
$permohonan->penilaian->tanggal_kunjungan ? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) : '',
|
||||||
|
$permohonan->penilaian->_user_penilai->userPenilaiTeam->name ?? '',
|
||||||
|
$permohonan->penilaian->teams ?? '',
|
||||||
|
'', // saran
|
||||||
|
'' // catatan
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'No',
|
||||||
|
'Nomor Registrasi',
|
||||||
|
'Tanggal Permohonan',
|
||||||
|
'Cabang',
|
||||||
|
'Pemohon',
|
||||||
|
'CIF',
|
||||||
|
'Nama Debitur',
|
||||||
|
'Jenis Penilaian',
|
||||||
|
'Tujuan Penilaian',
|
||||||
|
'Jenis Fasilitas Kredit',
|
||||||
|
'Jenis Agunan',
|
||||||
|
'Alamat Agunan',
|
||||||
|
'Bukti Kepemilikan',
|
||||||
|
'Nama Pemilik',
|
||||||
|
'Luas Tanah',
|
||||||
|
'Nilai Tanah',
|
||||||
|
'Luas Bangunan',
|
||||||
|
'Nilai Bangunan',
|
||||||
|
'Nilai NJOP',
|
||||||
|
'Nilai Pasar Wajar',
|
||||||
|
'Nilai Likuidasi',
|
||||||
|
'Tanggal Dokumen Diterima',
|
||||||
|
'Tanggal SPK',
|
||||||
|
'Nomor SPK',
|
||||||
|
'Tanggal Rencana Kunjungan',
|
||||||
|
'Tanggal Kunjungan',
|
||||||
|
'Tanggal Delivered',
|
||||||
|
'Jangka Waktu SLA',
|
||||||
|
'Tanggal Laporan',
|
||||||
|
'Tanggal Review',
|
||||||
|
'Nama Penilai',
|
||||||
|
'Nama Team Leader',
|
||||||
|
'Saran',
|
||||||
|
'Catatan'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function title(): string
|
||||||
|
{
|
||||||
|
return 'Laporan Hasil Penilaian Jaminan Internal & External';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function startCell(): string
|
||||||
|
{
|
||||||
|
return 'A7';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function registerEvents(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
AfterSheet::class => function(AfterSheet $event) {
|
||||||
|
// Get the sheet
|
||||||
|
$sheet = $event->sheet->getDelegate();
|
||||||
|
|
||||||
|
// Set the title
|
||||||
|
$sheet->setCellValue('A1', 'LAPORAN PENILAIAN JAMINAN');
|
||||||
|
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(16);
|
||||||
|
|
||||||
|
// Merge cells for title
|
||||||
|
$sheet->mergeCells('A1:AH1');
|
||||||
|
$sheet->getStyle('A1')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||||
|
|
||||||
|
// Set the branch information if filtered
|
||||||
|
$branchInfo = '';
|
||||||
|
if ($this->request->has('branch_id') && !empty($this->request->branch_id)) {
|
||||||
|
$branch = Branch::find($this->request->branch_id);
|
||||||
|
if ($branch) {
|
||||||
|
$branchInfo = 'Cabang: ' . $branch->name;
|
||||||
|
$sheet->setCellValue('A2', $branchInfo);
|
||||||
|
$sheet->mergeCells('A2:AH2');
|
||||||
|
$sheet->getStyle('A2')->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||||
|
$sheet->getStyle('A2')->getFont()->setBold(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the period
|
||||||
|
$startDate = $this->request->start_date ?? '';
|
||||||
|
$endDate = $this->request->end_date ?? '';
|
||||||
|
|
||||||
|
$rowIndex = $branchInfo ? 3 : 2;
|
||||||
|
|
||||||
|
if ($startDate && $endDate) {
|
||||||
|
$startDateFormatted = Carbon::parse($startDate)->format('d F Y');
|
||||||
|
$endDateFormatted = Carbon::parse($endDate)->format('d F Y');
|
||||||
|
$sheet->setCellValue('A' . $rowIndex, 'Periode: ' . $startDateFormatted . ' - ' . $endDateFormatted);
|
||||||
|
} else {
|
||||||
|
$sheet->setCellValue('A' . $rowIndex, 'Periode: Semua Data');
|
||||||
|
}
|
||||||
|
$sheet->mergeCells('A' . $rowIndex . ':AH' . $rowIndex);
|
||||||
|
$sheet->getStyle('A' . $rowIndex)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||||
|
|
||||||
|
// Set the date of export
|
||||||
|
$rowIndex++;
|
||||||
|
$sheet->setCellValue('A' . $rowIndex, 'Tanggal Export: ' . Carbon::now()->format('d F Y H:i:s'));
|
||||||
|
|
||||||
|
// Set the user who exported
|
||||||
|
$rowIndex++;
|
||||||
|
$userName = Auth::user() ? Auth::user()->name : 'System';
|
||||||
|
$sheet->setCellValue('A' . $rowIndex, 'Diexport oleh: ' . $userName);
|
||||||
|
|
||||||
|
// Add a blank line
|
||||||
|
$rowIndex++;
|
||||||
|
$sheet->setCellValue('A' . $rowIndex, '');
|
||||||
|
|
||||||
|
// Style the header row
|
||||||
|
$headerRange = 'A7:' . $sheet->getHighestColumn() . '7';
|
||||||
|
$sheet->getStyle($headerRange)->getFont()->setBold(true);
|
||||||
|
$sheet->getStyle($headerRange)->getFill()
|
||||||
|
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
||||||
|
->getStartColor()->setARGB('FFCCCCCC');
|
||||||
|
|
||||||
|
// Add borders to all cells with data
|
||||||
|
$dataRange = 'A7:' . $sheet->getHighestColumn() . $sheet->getHighestRow();
|
||||||
|
$sheet->getStyle($dataRange)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);
|
||||||
|
|
||||||
|
// Center align the header row
|
||||||
|
$sheet->getStyle($headerRange)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||||
|
|
||||||
|
// Set text wrap for header cells
|
||||||
|
$sheet->getStyle($headerRange)->getAlignment()->setWrapText(true);
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Exports\LaporanHasilPenilaianJaminanInternalExternalExport;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
|
class LaporanHasilPenilaianJaminanInternalExternalController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::laporan_hasil_penilaian_jaminan_internal_external.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('laporan-admin-kredit.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view laporan admin kredit.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = Permohonan::query();
|
||||||
|
$query = $query->where('status', 'done');
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = json_decode($request->get('search'));
|
||||||
|
|
||||||
|
if (isset($search->start_date) || isset($search->end_date)) {
|
||||||
|
$query->whereBetween('tanggal_permohonan', [
|
||||||
|
$search->start_date ?? '1900-01-01',
|
||||||
|
$search->end_date ?? now()->toDateString()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter by branch if provided
|
||||||
|
if (isset($search->branch_id) && !empty($search->branch_id)) {
|
||||||
|
$query->where('branch_id', $search->branch_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($search->search)) {
|
||||||
|
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search->search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->with(['debiture.branch'])->get();
|
||||||
|
|
||||||
|
$data = $data->map(function ($permohonan) {
|
||||||
|
$luas_tanah = 0;
|
||||||
|
$luas_bangunan = 0;
|
||||||
|
$nilai_tanah = 0;
|
||||||
|
$nilai_bangunan = 0;
|
||||||
|
$npw = 0;
|
||||||
|
$nilai_liquidasi = 0;
|
||||||
|
|
||||||
|
if (isset($permohonan->penilai->lpj)) {
|
||||||
|
$lpj = json_decode($permohonan->penilai->lpj, true);
|
||||||
|
$npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0);
|
||||||
|
|
||||||
|
$luas_tanah = $lpj['luas_tanah'] ?? 0;
|
||||||
|
$luas_bangunan = $lpj['luas_bangunan'] ?? 0;
|
||||||
|
// Calculate nilai_tanah dynamically by looking for all keys that start with 'nilai_tanah_'
|
||||||
|
$nilai_tanah = str_replace('.', '', $lpj['nilai_tanah_2'] ?? 0);
|
||||||
|
|
||||||
|
$nilai_bangunan = str_replace('.', '', $lpj['nilai_bangunan_2'] ?? 0);
|
||||||
|
$nilai_liquidasi = str_replace('.', '', $lpj['likuidasi_nilai_2'] ?? 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'id' => $permohonan->id,
|
||||||
|
'nomor_registrasi' => $permohonan->nomor_registrasi,
|
||||||
|
'jenis_penilaian' => $permohonan->jenisPenilaian->name,
|
||||||
|
'tujuan_penilaian' => $permohonan->tujuanPenilaian->name,
|
||||||
|
'jenis_fasilitas_kredit' => $permohonan->jenisFasilitasKredit->name,
|
||||||
|
'branch' => $permohonan->debiture->branch->name,
|
||||||
|
'pemohon' => $permohonan->creator->name,
|
||||||
|
'cif' => $permohonan->debiture->cif,
|
||||||
|
'name' => $permohonan->debiture->name,
|
||||||
|
'jenis_agunan' => $permohonan->documents->pluck('jenisJaminan.name')->unique()->implode(', '),
|
||||||
|
'alamat_agunan' => $permohonan->documents->map(function ($document) {
|
||||||
|
return formatAlamat($document);
|
||||||
|
})->unique()->implode(', '),
|
||||||
|
'bukti_kepemilikan' => $permohonan->documents->flatMap(function ($document) {
|
||||||
|
return $document->detail->map(function ($detail) {
|
||||||
|
return (!empty($detail->dokumen_nomor) && is_array($detail->dokumen_nomor))
|
||||||
|
? ($detail->jenisLegalitasJaminan->name ?? '') . "\n" . implode(', ', $detail->dokumen_nomor)
|
||||||
|
: null;
|
||||||
|
});
|
||||||
|
})->filter()->unique()->implode(', '),
|
||||||
|
'nama_pemilik' => $permohonan->documents->pluck('pemilik.name')->unique()->implode(', '),
|
||||||
|
'luas_tanah' => $luas_tanah . ' m²',
|
||||||
|
'nilai_tanah' => formatRupiah($nilai_tanah,2),
|
||||||
|
'luas_bangunan' => $luas_bangunan . ' m²',
|
||||||
|
'nilai_bangunan' => formatRupiah($nilai_bangunan,2),
|
||||||
|
'nilai_njop' => formatRupiah($permohonan->nilai_njop,2),
|
||||||
|
'nilai_pasar_wajar' => formatRupiah($npw,2),
|
||||||
|
'nilai_likuidasi' => formatRupiah($nilai_liquidasi,2),
|
||||||
|
'tanggal_documen_diterima' => $permohonan->documents->map(function ($document) {
|
||||||
|
return $document->created_at->format('d-m-Y');
|
||||||
|
}),
|
||||||
|
'tanggal_spk' => '',
|
||||||
|
'nomor_spk' => '',
|
||||||
|
'tanggal_rencana_kunjunagn' => '',
|
||||||
|
'tanggal_kunjungan' => '',
|
||||||
|
'taggal_delivered' => '',
|
||||||
|
'jangka_waktu_sla' => '',
|
||||||
|
'nama_penilai' => $permohonan->penilaian->_user_penilai->userPenilaiTeam->name,
|
||||||
|
'nama_team_leader' => $permohonan->penilaian->teams,
|
||||||
|
'saran' => '',
|
||||||
|
'catatan' => '',
|
||||||
|
|
||||||
|
|
||||||
|
'tanggal_permohonan' => $permohonan->tanggal_permohonan,
|
||||||
|
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
||||||
|
'tanggal_review' => $permohonan->penilaian->tanggal_kunjungan ?? '',
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = $request->get('page', 1);
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export(Request $request)
|
||||||
|
{
|
||||||
|
return Excel::download(new LaporanHasilPenilaianJaminanInternalExternalExport($request), 'laporan_hasil_penilaian_jaminan_internal_external.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -207,6 +207,7 @@ class PermohonanController extends Controller
|
|||||||
$search = $request->get('search');
|
$search = $request->get('search');
|
||||||
$query->where(function ($q) use ($search) {
|
$query->where(function ($q) use ($search) {
|
||||||
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('mig_mst_lpj_nomor_jaminan', 'LIKE', '%' . $search . '%');
|
||||||
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
||||||
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
|||||||
@@ -32,6 +32,17 @@ class Penilaian extends Model
|
|||||||
return $this->belongsTo(Teams::class, 'teams_id', 'id');
|
return $this->belongsTo(Teams::class, 'teams_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function teamLeader(){
|
||||||
|
return $this->belongsTo(Teams::class, 'teams_id', 'id')
|
||||||
|
->with(['teamsUsers' => function($query) {
|
||||||
|
$query->whereHas('user', function($q) {
|
||||||
|
$q->whereHas('roles', function($r) {
|
||||||
|
$r->where('name', 'senior-officer');
|
||||||
|
});
|
||||||
|
})->with('user');
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
|
||||||
public function userPenilai()
|
public function userPenilai()
|
||||||
{
|
{
|
||||||
return $this->hasMany(PenilaianTeam::class, 'penilaian_id', 'id');
|
return $this->hasMany(PenilaianTeam::class, 'penilaian_id', 'id');
|
||||||
|
|||||||
17
module.json
17
module.json
@@ -98,6 +98,23 @@
|
|||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
"senior-officer"
|
"senior-officer"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Laporan Hasil Pernilaan Jaminan Internal & External",
|
||||||
|
"path": "laporan-hasil-penilaian-jaminan-internal-external",
|
||||||
|
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator",
|
||||||
|
"pemohon-ao",
|
||||||
|
"pemohon-eo",
|
||||||
|
"admin",
|
||||||
|
"DD Appraisal",
|
||||||
|
"EO Appraisal",
|
||||||
|
"senior-officer"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"otorisator": [
|
"otorisator": [
|
||||||
|
|||||||
@@ -0,0 +1,439 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render('laporan-hasil-penilaian-jaminan-internal-external') }}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="laporan-hasil-penilaian-jaminan-internal-external-table" data-api-url="{{ route('laporan-hasil-penilaian-jaminan-internal-external.data') }}">
|
||||||
|
<div class="card-header bg-agi-50 py-5 flex-wrap">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Laporan Hasil Penilaian Jaminan Internal & External
|
||||||
|
</h3>
|
||||||
|
<div class="flex flex-wrap gap-2 lg:gap-5">
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm">
|
||||||
|
<input placeholder="Tanggal Awal" id="start_date" type="date">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm">
|
||||||
|
<input placeholder="Tanggal Akhir" id="end_date" type="date">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<select class="select select-sm" id="branch_filter">
|
||||||
|
<option value="">Semua Cabang</option>
|
||||||
|
@foreach(\Modules\Basicdata\Models\Branch::where('status', 1)->get() as $branch)
|
||||||
|
<option value="{{ $branch->id }}">{{ $branch->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex">
|
||||||
|
<button class="btn btn-sm btn-primary" id="filter_tanggal">Filter</button>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
|
||||||
|
<input placeholder="Search Laporan Penilaian Jaminan" id="search" type="text" value="">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-wrap gap-2.5">
|
||||||
|
<div class="h-[24px] border border-r-gray-200"></div>
|
||||||
|
<a class="btn btn-sm btn-light" href="{{ route('laporan-hasil-penilaian-jaminan-internal-external.export') }}" id="export-btn"> Export to Excel </a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="scrollable-x-auto">
|
||||||
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="w-14">
|
||||||
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="branch">
|
||||||
|
<span class="sort"> <span class="sort-label"> Cabang </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
||||||
|
<span class="sort"> <span class="sort-label"> Pemohon </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="cif">
|
||||||
|
<span class="sort"> <span class="sort-label"> CIF </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Debitur </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
||||||
|
<span class="sort"> <span class="sort-label"> Jenis Penilaian </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="jenis_fasilitas_kredit">
|
||||||
|
<span class="sort"> <span class="sort-label"> Jenis Fasilitas Kredit </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Jenis Agunan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Alamat Agunan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="bukti_kepemilikan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Bukti Kepemilikan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nama_pemilik">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Pemilik </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="luas_tanah">
|
||||||
|
<span class="sort"> <span class="sort-label"> Luas Tanah </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nilai_tanah">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nilai Tanah </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="luas_bangunan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Luas Bangunan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nilai_bangunan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nilai Bangunan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nilai_njop">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nilai NJOP </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nilai_pasar_wajar">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nilai Pasar Wajar </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nilai_likuidasi">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nilai Likuidasi </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_documen_diterima">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Dokumen Diterima </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_spk">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal SPK </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nomor_spk">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor SPK </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_rencana_kunjunagn">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Rencana Kunjungan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_kunjungan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Kunjungan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="taggal_delivered">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Delivered </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="jangka_waktu_sla">
|
||||||
|
<span class="sort"> <span class="sort-label"> Jangka Waktu SLA </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_laporan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Laporan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_review">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal Review </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nama_penilai">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Penilai </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nama_team_leader">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Team Leader </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="saran">
|
||||||
|
<span class="sort"> <span class="sort-label"> Saran </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="catatan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Catatan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody data-datatable-body="true">
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="module">
|
||||||
|
const element = document.querySelector('#laporan-hasil-penilaian-jaminan-internal-external-table');
|
||||||
|
const searchInput = document.getElementById('search');
|
||||||
|
const startDateInput = document.getElementById('start_date');
|
||||||
|
const endDateInput = document.getElementById('end_date');
|
||||||
|
const branchFilter = document.getElementById('branch_filter');
|
||||||
|
const filterTanggalButton = document.getElementById('filter_tanggal');
|
||||||
|
const exportBtn = document.getElementById('export-btn');
|
||||||
|
|
||||||
|
const apiUrl = element.getAttribute('data-api-url');
|
||||||
|
const dataTableOptions = {
|
||||||
|
apiEndpoint: apiUrl,
|
||||||
|
pageSize: 5,
|
||||||
|
columns: {
|
||||||
|
select: {
|
||||||
|
render: (item, data, context) => {
|
||||||
|
const checkbox = document.createElement('input');
|
||||||
|
checkbox.className = 'checkbox checkbox-sm';
|
||||||
|
checkbox.type = 'checkbox';
|
||||||
|
checkbox.value = data.id.toString();
|
||||||
|
checkbox.setAttribute('data-datatable-row-check', 'true');
|
||||||
|
return checkbox.outerHTML.trim();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nomor_registrasi: {
|
||||||
|
title: 'Nomor Registrasi',
|
||||||
|
},
|
||||||
|
tanggal_permohonan: {
|
||||||
|
title: 'Tanggal Permohonan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
branch: {
|
||||||
|
title: 'Cabang',
|
||||||
|
},
|
||||||
|
pemohon: {
|
||||||
|
title: 'Pemohon',
|
||||||
|
},
|
||||||
|
cif: {
|
||||||
|
title: 'CIF',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nama Debitur',
|
||||||
|
},
|
||||||
|
jenis_penilaian: {
|
||||||
|
title: 'Jenis Penilaian',
|
||||||
|
},
|
||||||
|
tujuan_penilaian: {
|
||||||
|
title: 'Tujuan Penilaian',
|
||||||
|
},
|
||||||
|
jenis_fasilitas_kredit: {
|
||||||
|
title: 'Jenis Fasilitas Kredit',
|
||||||
|
},
|
||||||
|
jenis_agunan: {
|
||||||
|
title: 'Jenis Agunan',
|
||||||
|
},
|
||||||
|
alamat_agunan: {
|
||||||
|
title: 'Alamat Agunan',
|
||||||
|
},
|
||||||
|
bukti_kepemilikan: {
|
||||||
|
title: 'Bukti Kepemilikan',
|
||||||
|
},
|
||||||
|
nama_pemilik: {
|
||||||
|
title: 'Nama Pemilik',
|
||||||
|
},
|
||||||
|
luas_tanah: {
|
||||||
|
title: 'Luas Tanah',
|
||||||
|
},
|
||||||
|
nilai_tanah: {
|
||||||
|
title: 'Nilai Tanah',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.nilai_tanah ? window.formatRupiah(data.nilai_tanah) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
luas_bangunan: {
|
||||||
|
title: 'Luas Bangunan',
|
||||||
|
},
|
||||||
|
nilai_bangunan: {
|
||||||
|
title: 'Nilai Bangunan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.nilai_bangunan ? window.formatRupiah(data.nilai_bangunan) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nilai_njop: {
|
||||||
|
title: 'Nilai NJOP',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.nilai_njop ? window.formatRupiah(data.nilai_njop) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nilai_pasar_wajar: {
|
||||||
|
title: 'Nilai Pasar Wajar',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.nilai_pasar_wajar ? window.formatRupiah(data.nilai_pasar_wajar) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nilai_likuidasi: {
|
||||||
|
title: 'Nilai Likuidasi',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.nilai_likuidasi ? window.formatRupiah(data.nilai_likuidasi) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tanggal_documen_diterima: {
|
||||||
|
title: 'Tanggal Dokumen Diterima',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_documen_diterima ? window.formatTanggalIndonesia(data.tanggal_documen_diterima) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tanggal_spk: {
|
||||||
|
title: 'Tanggal SPK',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_spk ? window.formatTanggalIndonesia(data.tanggal_spk) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nomor_spk: {
|
||||||
|
title: 'Nomor SPK',
|
||||||
|
},
|
||||||
|
tanggal_rencana_kunjunagn: {
|
||||||
|
title: 'Tanggal Rencana Kunjungan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_rencana_kunjunagn ? window.formatTanggalIndonesia(data.tanggal_rencana_kunjunagn) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tanggal_kunjungan: {
|
||||||
|
title: 'Tanggal Kunjungan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_kunjungan ? window.formatTanggalIndonesia(data.tanggal_kunjungan) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
taggal_delivered: {
|
||||||
|
title: 'Tanggal Delivered',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.taggal_delivered ? window.formatTanggalIndonesia(data.taggal_delivered) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
jangka_waktu_sla: {
|
||||||
|
title: 'Jangka Waktu SLA',
|
||||||
|
},
|
||||||
|
tanggal_laporan: {
|
||||||
|
title: 'Tanggal Laporan',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tanggal_review: {
|
||||||
|
title: 'Tanggal Review',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nama_penilai: {
|
||||||
|
title: 'Nama Penilai',
|
||||||
|
},
|
||||||
|
nama_team_leader: {
|
||||||
|
title: 'Nama Team Leader',
|
||||||
|
},
|
||||||
|
saran: {
|
||||||
|
title: 'Saran',
|
||||||
|
},
|
||||||
|
catatan: {
|
||||||
|
title: 'Catatan',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
|
|
||||||
|
// Function to apply all filters
|
||||||
|
function applyFilters() {
|
||||||
|
let filters = {};
|
||||||
|
const startDate = startDateInput.value;
|
||||||
|
const endDate = endDateInput.value;
|
||||||
|
const branch = branchFilter.value;
|
||||||
|
|
||||||
|
if (searchInput.value) {
|
||||||
|
filters.search = searchInput.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startDate) {
|
||||||
|
filters.start_date = startDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endDate) {
|
||||||
|
filters.end_date = endDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (branch) {
|
||||||
|
filters.branch_id = branch;
|
||||||
|
}
|
||||||
|
|
||||||
|
dataTable.search(filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update export URL with filters
|
||||||
|
function updateExportUrl() {
|
||||||
|
let url = new URL(exportBtn.href);
|
||||||
|
|
||||||
|
if (startDateInput.value) {
|
||||||
|
url.searchParams.set('start_date', startDateInput.value);
|
||||||
|
} else {
|
||||||
|
url.searchParams.delete('start_date');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endDateInput.value) {
|
||||||
|
url.searchParams.set('end_date', endDateInput.value);
|
||||||
|
} else {
|
||||||
|
url.searchParams.delete('end_date');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (branchFilter.value) {
|
||||||
|
url.searchParams.set('branch_id', branchFilter.value);
|
||||||
|
} else {
|
||||||
|
url.searchParams.delete('branch_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (searchInput.value) {
|
||||||
|
url.searchParams.set('search', searchInput.value);
|
||||||
|
} else {
|
||||||
|
url.searchParams.delete('search');
|
||||||
|
}
|
||||||
|
|
||||||
|
exportBtn.href = url.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add event listeners for all inputs
|
||||||
|
searchInput.addEventListener('input', () => {
|
||||||
|
applyFilters();
|
||||||
|
updateExportUrl();
|
||||||
|
});
|
||||||
|
|
||||||
|
filterTanggalButton.addEventListener('click', () => {
|
||||||
|
applyFilters();
|
||||||
|
updateExportUrl();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Initial update of export URL
|
||||||
|
updateExportUrl();
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
@@ -41,6 +41,10 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="mig_mst_lpj_nomor_jaminan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor LPJ Lama </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -141,6 +145,9 @@
|
|||||||
nomor_registrasi: {
|
nomor_registrasi: {
|
||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
},
|
},
|
||||||
|
mig_mst_lpj_nomor_jaminan: {
|
||||||
|
title: 'Nomor LPJ Lama',
|
||||||
|
},
|
||||||
tanggal_permohonan: {
|
tanggal_permohonan: {
|
||||||
title: 'Tanggal Permohonan',
|
title: 'Tanggal Permohonan',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
|
|||||||
@@ -744,5 +744,10 @@ Breadcrumbs::for('laporan-penilai-jaminan', function ($trail) {
|
|||||||
$trail->push('Laporan Penilaian Jaminan', route('laporan-penilaian-jaminan.index'));
|
$trail->push('Laporan Penilaian Jaminan', route('laporan-penilaian-jaminan.index'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Breadcrumbs::for('laporan-hasil-penilaian-jaminan-internal-external', function ($trail) {
|
||||||
|
$trail->parent('laporan');
|
||||||
|
$trail->push('Laporan Hasil Penilaian Jaminan Internal External', route('laporan-hasil-penilaian-jaminan-internal-external.index'));
|
||||||
|
});
|
||||||
|
|
||||||
// add andy
|
// add andy
|
||||||
require __DIR__ . '/breadcrumbs_registrasi.php';
|
require __DIR__ . '/breadcrumbs_registrasi.php';
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ use Modules\Lpj\Http\Controllers\LampiranDokumenController;
|
|||||||
use Modules\Lpj\Http\Controllers\LaporanAdminKreditController;
|
use Modules\Lpj\Http\Controllers\LaporanAdminKreditController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanController;
|
use Modules\Lpj\Http\Controllers\LaporanController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanExternalController;
|
use Modules\Lpj\Http\Controllers\LaporanExternalController;
|
||||||
|
use Modules\Lpj\Http\Controllers\LaporanHasilPenilaianJaminanInternalExternalController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanPembatalanController;
|
use Modules\Lpj\Http\Controllers\LaporanPembatalanController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanPenilaianJaminanController;
|
use Modules\Lpj\Http\Controllers\LaporanPenilaianJaminanController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanPermohonanController;
|
use Modules\Lpj\Http\Controllers\LaporanPermohonanController;
|
||||||
@@ -707,6 +708,12 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('/', [LaporanPenilaianJaminanController::class, 'index'])->name('index');
|
Route::get('/', [LaporanPenilaianJaminanController::class, 'index'])->name('index');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::prefix('laporan-hasil-penilaian-jaminan-internal-external')->name('laporan-hasil-penilaian-jaminan-internal-external.')->group(function() {
|
||||||
|
Route::get('datatables', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'dataForDatatables'])->name('data');
|
||||||
|
Route::get('export', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'export'])->name('export');
|
||||||
|
Route::get('/', [LaporanHasilPenilaianJaminanInternalExternalController::class, 'index'])->name('index');
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
require __DIR__ . '/registrasi.php';
|
require __DIR__ . '/registrasi.php';
|
||||||
|
|||||||
Reference in New Issue
Block a user