Merge pull request 'feature/senior-officer' (#146) from feature/senior-officer into staging
Reviewed-on: #146
This commit is contained in:
232
app/Exports/LaporanUserLimitExport.php
Normal file
232
app/Exports/LaporanUserLimitExport.php
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
<?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;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class LaporanUserLimitExport 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')) {
|
||||||
|
$startDate = $this->request->start_date ?? '1900-01-01';
|
||||||
|
$endDate = $this->request->end_date ?? now()->toDateString();
|
||||||
|
|
||||||
|
$query->where(function ($q) use ($startDate, $endDate) {
|
||||||
|
|
||||||
|
$q->whereHas('penilaian', function ($q2) use ($startDate, $endDate) {
|
||||||
|
$q2->whereBetween('tanggal_kunjungan', [$startDate, $endDate]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// OR check if has penawaran with date in range
|
||||||
|
$q->orWhereHas('penawaran', function ($q3) use ($startDate, $endDate) {
|
||||||
|
$q3->whereBetween('tanggal_penilaian_sebelumnya', [$startDate, $endDate]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply branch filter if provided
|
||||||
|
if ($this->request->has('branch_id') && !empty($this->request->branch_id)) {
|
||||||
|
$query->where('branch_id', $this->request->branch_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->request->has('penilai_id') && !empty($this->request->penilai_id)) {
|
||||||
|
$request = $this->request; // Store in a local variable
|
||||||
|
$query->whereHas('penilaian._user_penilai.userPenilaiTeam', function ($q) use ($request) {
|
||||||
|
$q->where('user_id', $request->penilai_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('debiture', DB::raw('LOWER(name)'), 'LIKE', '%' . strtolower($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++;
|
||||||
|
$npw = 0;
|
||||||
|
|
||||||
|
if (isset($permohonan->penilai->lpj)) {
|
||||||
|
$lpj = json_decode($permohonan->penilai->lpj, true);
|
||||||
|
$npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
$this->rowNumber,
|
||||||
|
$permohonan->nomor_registrasi,
|
||||||
|
$permohonan->debiture->branch->name ?? '',
|
||||||
|
$permohonan->debiture->name ?? '',
|
||||||
|
$permohonan->user->name ?? $permohonan->mig_nama_ao ?? '',
|
||||||
|
$permohonan->tanggal_permohonan ?? '',
|
||||||
|
$permohonan->penilaian->_user_penilai->userPenilaiTeam->name ?? '',
|
||||||
|
$permohonan->penilaian && $permohonan->penilaian->tanggal_kunjungan
|
||||||
|
? formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan)
|
||||||
|
: '',
|
||||||
|
formatRupiah($npw, 2),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'No',
|
||||||
|
'Nomor Registrasi',
|
||||||
|
'Cabang',
|
||||||
|
'Nama Debitur',
|
||||||
|
'Pemohon',
|
||||||
|
'Tanggal Permohonan',
|
||||||
|
'Nama Penilai',
|
||||||
|
'Tanggal Laporan',
|
||||||
|
'Nilai Pasar Wajar',
|
||||||
|
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function title(): string
|
||||||
|
{
|
||||||
|
return 'Laporan User Limit';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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');
|
||||||
|
|
||||||
|
// Auto-size columns - fixed to handle columns beyond Z
|
||||||
|
$highestColumn = $sheet->getHighestColumn();
|
||||||
|
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
|
||||||
|
|
||||||
|
for ($i = 1; $i <= $highestColumnIndex; $i++) {
|
||||||
|
$currentColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($i);
|
||||||
|
$sheet->getColumnDimension($currentColumn)->setAutoSize(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
152
app/Http/Controllers/CategoryDaftarPustakaController.php
Normal file
152
app/Http/Controllers/CategoryDaftarPustakaController.php
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\CategoryDaftarPustaka;
|
||||||
|
use Modules\Lpj\Http\Requests\CategoryDaftarPustakaRequest;
|
||||||
|
|
||||||
|
class CategoryDaftarPustakaController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::category-daftar-pustaka.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::category-daftar-pustaka.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(CategoryDaftarPustakaRequest $request)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
if ($validated) {
|
||||||
|
try {
|
||||||
|
CategoryDaftarPustaka::create($validated);
|
||||||
|
return redirect()->route('category-daftar-pustaka.index')->with('success', 'Data Berhasil Disimpan');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return redirect()->route('category-daftar-pustaka.index')->with('error', $th->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$category = CategoryDaftarPustaka::where('id', $id)->first();
|
||||||
|
return view('lpj::category-daftar-pustaka.show', compact('category'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('lpj::category-daftar-pustaka.create', ['category' => CategoryDaftarPustaka::where('id', $id)->first()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(CategoryDaftarPustakaRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
if ($validated) {
|
||||||
|
try {
|
||||||
|
CategoryDaftarPustaka::where('id', $id)->update($validated);
|
||||||
|
return redirect()->route('category-daftar-pustaka.index')->with('success', 'Data Berhasil Disimpan');
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return redirect()->route('category-daftar-pustaka.index')->with('error', $th->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
CategoryDaftarPustaka::where('id', $id)->delete();
|
||||||
|
return response()->json(['success' => true, 'message' => 'Data Berhasil Dihapus']);
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
return response()->json(['success' => false, 'message' => $th->getMessage()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('jenis_aset.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = CategoryDaftarPustaka::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
129
app/Http/Controllers/DaftarPustakaController.php
Normal file
129
app/Http/Controllers/DaftarPustakaController.php
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\CategoryDaftarPustaka;
|
||||||
|
use Modules\Lpj\Services\DaftarPustakaService;
|
||||||
|
use Modules\Lpj\Http\Requests\DaftarPustakaRequest;
|
||||||
|
|
||||||
|
class DaftarPustakaController extends Controller
|
||||||
|
{
|
||||||
|
private $daftarPustaka;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->daftarPustaka = app(DaftarPustakaService::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
$categories = CategoryDaftarPustaka::all();
|
||||||
|
$daftar_pustaka = $this->daftarPustaka->getAllDaftarPustaka($request);
|
||||||
|
|
||||||
|
return view('lpj::daftar-pustaka.index', [
|
||||||
|
'categories' => $categories,
|
||||||
|
'daftar_pustaka' => $daftar_pustaka,
|
||||||
|
'page' => $daftar_pustaka->currentPage(),
|
||||||
|
'pageCount' => $daftar_pustaka->lastPage(),
|
||||||
|
'limit' => $daftar_pustaka->perPage(),
|
||||||
|
'total' => $daftar_pustaka->total(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
$categories = CategoryDaftarPustaka::all();
|
||||||
|
// dd($categories);
|
||||||
|
return view('lpj::daftar-pustaka.create', compact('categories'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(DaftarPustakaRequest $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
$validate = $request->validated();
|
||||||
|
// dd($validate);
|
||||||
|
$file = $request->file('attachment');
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
// Save to database
|
||||||
|
$this->daftarPustaka->storeDaftarPustaka($validate, $file);
|
||||||
|
return redirect()
|
||||||
|
->route('daftar-pustaka.index')
|
||||||
|
->with('success', 'Daftar Pustaka created successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('daftar-pustaka.create')
|
||||||
|
->with('error', 'Failed to create daftar pustaka');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$daftarPustaka = $this->daftarPustaka->getDaftarPustakaById($id);
|
||||||
|
$categories = CategoryDaftarPustaka::all();
|
||||||
|
|
||||||
|
return view('lpj::daftar-pustaka.show', compact('daftarPustaka', 'categories'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$daftarPustaka = $this->daftarPustaka->getDaftarPustakaById($id);
|
||||||
|
$categories = CategoryDaftarPustaka::all();
|
||||||
|
return view('lpj::daftar-pustaka.create', compact('daftarPustaka', 'categories'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(DaftarPustakaRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
// Save to database
|
||||||
|
$file = $request->file('attachment');
|
||||||
|
$this->daftarPustaka->updateDaftarPustaka($validate, $file, $id);
|
||||||
|
return redirect()
|
||||||
|
->route('daftar-pustaka.index')
|
||||||
|
->with('success', 'Daftar Pustaka updated successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('daftar-pustaka.create')
|
||||||
|
->with('error', 'Failed to update daftar pustaka');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->daftarPustaka->deleteDaftarPustaka($id);
|
||||||
|
return response()->json(['success' => true, 'message' => 'Daftar Pustaka deleted successfully']);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return response()->json(['success' => false, 'message' => 'Failed to delete daftar pustaka']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,8 @@ namespace Modules\Lpj\Http\Controllers;
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Exports\LaporanUserLimitExport;
|
||||||
use Modules\Lpj\Services\LaporanUserService;
|
use Modules\Lpj\Services\LaporanUserService;
|
||||||
|
|
||||||
class LaporanUserController extends Controller
|
class LaporanUserController extends Controller
|
||||||
@@ -38,4 +40,12 @@ class LaporanUserController extends Controller
|
|||||||
return $this->laporanUserService->dataForDatatables($request);
|
return $this->laporanUserService->dataForDatatables($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function export(Request $request)
|
||||||
|
{
|
||||||
|
$startDate = $request->start_date;
|
||||||
|
$endDate = $request->end_date;
|
||||||
|
// name of the file
|
||||||
|
$fileName = 'laporan_user_limit' . $startDate . '_' . $endDate . '.xlsx';
|
||||||
|
return Excel::download(new LaporanUserLimitExport($request), $fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
33
app/Http/Requests/CategoryDaftarPustakaRequest.php
Normal file
33
app/Http/Requests/CategoryDaftarPustakaRequest.php
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class CategoryDaftarPustakaRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|max:255',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:50|unique:category_daftar_pustaka,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:50|unique:category_daftar_pustaka,code';
|
||||||
|
}
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
38
app/Http/Requests/DaftarPustakaRequest.php
Normal file
38
app/Http/Requests/DaftarPustakaRequest.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class DaftarPustakaRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
|
||||||
|
$rules = [
|
||||||
|
'judul' => 'required|max:255',
|
||||||
|
'category_id' => 'required',
|
||||||
|
'deskripsi' => 'nullable',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['attachment'] = 'nullable|mimes:pdf,jpg,jpeg,png,gif';
|
||||||
|
} else {
|
||||||
|
$rules['attachment'] = 'required|mimes:pdf,jpg,jpeg,png,gif';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
27
app/Models/CategoryDaftarPustaka.php
Normal file
27
app/Models/CategoryDaftarPustaka.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
// use Modules\Lpj\Database\Factories\CategoryDaftarPustakaFactory;
|
||||||
|
|
||||||
|
class CategoryDaftarPustaka extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'category_daftar_pustaka';
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'code',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function daftarPustaka(){
|
||||||
|
return $this->hasMany(DaftarPustaka::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
29
app/Models/DaftarPustaka.php
Normal file
29
app/Models/DaftarPustaka.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
// use Modules\Lpj\Database\Factories\DaftarPustakaFactory;
|
||||||
|
|
||||||
|
class DaftarPustaka extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'daftar_pustaka';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'id',
|
||||||
|
'category_id',
|
||||||
|
'judul',
|
||||||
|
'attachment',
|
||||||
|
'deskripsi',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function category(){
|
||||||
|
return $this->belongsTo(CategoryDaftarPustaka::class);
|
||||||
|
}
|
||||||
|
}
|
||||||
94
app/Services/DaftarPustakaService.php
Normal file
94
app/Services/DaftarPustakaService.php
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Services;
|
||||||
|
|
||||||
|
use Modules\Lpj\Models\DaftarPustaka;
|
||||||
|
|
||||||
|
class DaftarPustakaService
|
||||||
|
{
|
||||||
|
public function storeDaftarPustaka(array $data, $file)
|
||||||
|
{
|
||||||
|
if ($file) {
|
||||||
|
$data['attachment'] = $this->handleUpload($file);
|
||||||
|
}
|
||||||
|
return DaftarPustaka::create($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateDaftarPustaka($data, $file, $id)
|
||||||
|
{
|
||||||
|
// Ambil data inputan yang diperlukan saja
|
||||||
|
|
||||||
|
$daftarPustaka = DaftarPustaka::findOrFail($id);
|
||||||
|
|
||||||
|
// Jika ada file baru yang diupload
|
||||||
|
if ($file) {
|
||||||
|
// (Opsional) Hapus file lama
|
||||||
|
if ($daftarPustaka->attachment && file_exists(public_path($daftarPustaka->attachment))) {
|
||||||
|
unlink(public_path($daftarPustaka->attachment));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload file baru
|
||||||
|
$data['attachment'] = $this->handleUpload($file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update data
|
||||||
|
$daftarPustaka->update($data);
|
||||||
|
|
||||||
|
return $daftarPustaka;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function deleteDaftarPustaka($id)
|
||||||
|
{
|
||||||
|
return DaftarPustaka::where('id', $id)->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDaftarPustakaById($id)
|
||||||
|
{
|
||||||
|
return DaftarPustaka::where('id', $id)->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get all with pagination
|
||||||
|
public function getAllDaftarPustaka($request)
|
||||||
|
{
|
||||||
|
$query = DaftarPustaka::query();
|
||||||
|
|
||||||
|
// Filter pencarian
|
||||||
|
if (!empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->orWhere('judul', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter kategori
|
||||||
|
if (!empty($request->get('category'))) {
|
||||||
|
$category = explode(',', $request->input('category'));
|
||||||
|
$query->whereIn('category_id', $category);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default pagination
|
||||||
|
$page = (int) $request->get('page', 1);
|
||||||
|
$size = (int) $request->get('size', 10);
|
||||||
|
|
||||||
|
return $query->paginate($size, ['*'], 'page', $page);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function handleUpload($file)
|
||||||
|
{
|
||||||
|
$today = now();
|
||||||
|
$folderPath = 'daftar_pustaka/' . $today->format('Y/m/d');
|
||||||
|
|
||||||
|
if (!file_exists(public_path($folderPath))) {
|
||||||
|
mkdir(public_path($folderPath), 0755, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileName = $file->getClientOriginalName();
|
||||||
|
$file->move(public_path($folderPath), $fileName);
|
||||||
|
|
||||||
|
return $folderPath . '/' . $fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
21
app/Services/LaporanBiayaService.php
Normal file
21
app/Services/LaporanBiayaService.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Services;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
|
||||||
|
class LaporanBiayaService
|
||||||
|
{
|
||||||
|
public function buildDataTableQuery(array $data){
|
||||||
|
$query = Permohonan::with([
|
||||||
|
'noc'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if($data['search']){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,124 +5,119 @@ namespace Modules\Lpj\Services;
|
|||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use Modules\Lpj\Models\Penilaian;
|
use Modules\Lpj\Models\Penilaian;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
class LaporanSLAPenilaiService
|
class LaporanSLAPenilaiService
|
||||||
{
|
{
|
||||||
public function dataForDatatables(Request $request)
|
public function dataForDatatables(Request $request)
|
||||||
{
|
{
|
||||||
// Retrieve data from the database
|
// Retrieve data from the database
|
||||||
$query = Permohonan::query();
|
$query = Permohonan::query();
|
||||||
$query = $query->where('status', 'done');
|
$query = $query->where('status', 'done');
|
||||||
|
|
||||||
// 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'))) {
|
||||||
$search = json_decode($request->get('search'));
|
$search = json_decode($request->get('search'));
|
||||||
|
|
||||||
if (isset($search->start_date) || isset($search->end_date)) {
|
if (isset($search->start_date) || isset($search->end_date)) {
|
||||||
$query->whereBetween('tanggal_permohonan', [
|
$query->whereBetween('tanggal_permohonan', [
|
||||||
$search->start_date ?? '1900-01-01',
|
$search->start_date ?? '1900-01-01',
|
||||||
$search->end_date ?? now()->toDateString()
|
$search->end_date ?? now()->toDateString()
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (isset($search->penilai_id) && !empty($search->penilai_id)) {
|
|
||||||
$query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($search) {
|
|
||||||
$q->where('user_id', $search->penilai_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'))) {
|
if (isset($search->penilai_id) && !empty($search->penilai_id)) {
|
||||||
$order = $request->get('sortOrder');
|
$query->whereHas('penilaian._user_penilai.userPenilaiTeam', function ($q) use ($search) {
|
||||||
$column = $request->get('sortField');
|
$q->where('user_id', $search->penilai_id);
|
||||||
$query->orderBy($column, $order);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the total count of records
|
if (isset($search->search)) {
|
||||||
$totalRecords = $query->count();
|
|
||||||
|
|
||||||
// Apply pagination if provided
|
$query->where(function ($q) use ($search) {
|
||||||
if ($request->has('page') && $request->has('size')) {
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%');
|
||||||
$page = $request->get('page');
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%');
|
||||||
$size = $request->get('size');
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
$offset = ($page - 1) * $size; // Calculate the offset
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
$query->skip($offset)->take($size);
|
$q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search->search . '%');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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,
|
|
||||||
'tanggal_permohonan' => $permohonan->tanggal_permohonan,
|
|
||||||
'branch' => $permohonan->debiture?->branch?->name,
|
|
||||||
'name' => $permohonan->debiture?->name,
|
|
||||||
'pemohon' => $permohonan->creator?->name,
|
|
||||||
'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name,
|
|
||||||
'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name')->unique()->implode(', '),
|
|
||||||
|
|
||||||
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
|
||||||
'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '',
|
|
||||||
'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name,
|
|
||||||
];
|
|
||||||
});
|
|
||||||
|
|
||||||
// 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,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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(['documents','debiture.branch'])->get();
|
||||||
|
|
||||||
|
$data = $data->map(function ($permohonan) {
|
||||||
|
|
||||||
|
$tgl_kunjungan = $permohonan->penilaian?->tanggal_kunjungan;
|
||||||
|
$tgl_otorisator = $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? $permohonan->approval_so_at;
|
||||||
|
$jangkaWaktu = $this->hitungTotalJangkaWaktuSla($tgl_kunjungan, $tgl_otorisator);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return [
|
||||||
|
'id' => $permohonan->id,
|
||||||
|
'nomor_registrasi' => $permohonan->nomor_registrasi,
|
||||||
|
'tanggal_permohonan' => $permohonan->tanggal_permohonan,
|
||||||
|
'branch' => $permohonan->debiture?->branch?->name,
|
||||||
|
'name' => $permohonan->debiture?->name,
|
||||||
|
'pemohon' => $permohonan->creator?->name,
|
||||||
|
'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name,
|
||||||
|
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
||||||
|
'tanggal_approval' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
||||||
|
'tanggal_kunjungan' => $permohonan->penilaian?->tanggal_kunjungan ?? '',
|
||||||
|
'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name,
|
||||||
|
'jangka_waktu' => $jangkaWaktu,
|
||||||
|
'keterangan' => $permohonan->keterangan
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
// 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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function hitungTotalJangkaWaktuSla($tgl_kunjungan,$tgl_otorisator){
|
||||||
|
$countHariKerja = hitungHariKerja($tgl_kunjungan, $tgl_otorisator);
|
||||||
|
return $countHariKerja;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,96 +85,25 @@ class LaporanUserService
|
|||||||
$data = $query->with(['debiture.branch'])->get();
|
$data = $query->with(['debiture.branch'])->get();
|
||||||
|
|
||||||
$data = $data->map(function ($permohonan) {
|
$data = $data->map(function ($permohonan) {
|
||||||
$luas_tanah = 0;
|
|
||||||
$luas_bangunan = 0;
|
|
||||||
$nilai_tanah = 0;
|
|
||||||
$nilai_bangunan = 0;
|
|
||||||
$npw = 0;
|
$npw = 0;
|
||||||
$nilai_liquidasi = 0;
|
|
||||||
|
|
||||||
if (isset($permohonan->penilai->lpj)) {
|
if (isset($permohonan->penilai->lpj)) {
|
||||||
$lpj = json_decode($permohonan->penilai->lpj, true);
|
$lpj = json_decode($permohonan->penilai->lpj, true);
|
||||||
$npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0);
|
$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 [
|
return [
|
||||||
'id' => $permohonan->id,
|
'id' => $permohonan->id,
|
||||||
'nomor_registrasi' => $permohonan->nomor_registrasi,
|
'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,
|
'branch' => $permohonan->debiture->branch?->name,
|
||||||
'pemohon' => $permohonan->creator?->name,
|
|
||||||
'cif' => $permohonan->debiture->cif,
|
|
||||||
'name' => $permohonan->debiture?->name,
|
'name' => $permohonan->debiture?->name,
|
||||||
'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name')
|
'pemohon' => $permohonan->creator?->name,
|
||||||
->unique()
|
|
||||||
->implode(', '),
|
|
||||||
'alamat_agunan' => $permohonan->documents?->map(function ($document) {
|
|
||||||
return formatAlamat($document);
|
|
||||||
})->unique()->implode(', '),
|
|
||||||
'bukti_kepemilikan' => (function () use ($permohonan) {
|
|
||||||
$legalitasItems = $permohonan->documents?->flatMap(function ($document) {
|
|
||||||
return $document->detail->map(function ($detail) {
|
|
||||||
// Jika tidak ada jenis legalitas jaminan, lewati
|
|
||||||
if (empty($detail->jenisLegalitasJaminan)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hanya tampilkan detail yang memiliki dokumen_jaminan
|
|
||||||
if (empty($detail->dokumen_jaminan)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tampilkan nama legalitas jaminan saja
|
|
||||||
return $detail->jenisLegalitasJaminan->name ?? '';
|
|
||||||
});
|
|
||||||
})->filter()->unique()->values()->toArray();
|
|
||||||
|
|
||||||
// Buat daftar bernomor
|
|
||||||
$result = '';
|
|
||||||
foreach ($legalitasItems as $index => $item) {
|
|
||||||
$result .= ($index + 1) . '. ' . $item . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
})(),
|
|
||||||
'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_permohonan' => $permohonan->tanggal_permohonan,
|
||||||
|
'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name,
|
||||||
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '',
|
||||||
'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '',
|
'nilai_pasar_wajar' => formatRupiah($npw, 2)
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class () extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('category_daftar_pustaka', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('category_daftar_pustaka');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class () extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('daftar_pustaka', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('judul');
|
||||||
|
$table->string('attachment')->nullable();
|
||||||
|
$table->text('deskripsi');
|
||||||
|
$table->unsignedBigInteger('category_id');
|
||||||
|
$table->foreign('category_id')->references('id')->on('category_daftar_pustaka');
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('daftar_pustaka');
|
||||||
|
}
|
||||||
|
};
|
||||||
28
module.json
28
module.json
@@ -607,6 +607,23 @@
|
|||||||
"EO Appraisal",
|
"EO Appraisal",
|
||||||
"senior-officer"
|
"senior-officer"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Daftar Pustaka",
|
||||||
|
"path": "daftar-pustaka",
|
||||||
|
"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"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"master": [
|
"master": [
|
||||||
@@ -1149,6 +1166,17 @@
|
|||||||
"administrator",
|
"administrator",
|
||||||
"admin"
|
"admin"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Kategori Daftar Pustaka",
|
||||||
|
"path": "category-daftar-pustaka",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator",
|
||||||
|
"admin"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,37 +261,67 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
title: 'Action',
|
title: 'Action',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
const status = data.status; // Anggap status berada di dalam objek data
|
const status = data.status; // Anggap status berada di dalam objek data
|
||||||
const dokumenjaminan = data.dokumenjaminan || [];
|
const dokumenjaminan = data.dokumenjaminan || [];
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<div class="flex flex-nowrap justify-center">
|
<div class="flex flex-nowrap justify-center">
|
||||||
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="activity/${data.id}/show" title="Lihat Detail">
|
<a class="btn btn-sm btn-icon ${status === 'freeze' ? 'btn-light' : 'btn-warning btn-clear'}" href="activity/${data.id}/show" title="Lihat Detail">
|
||||||
<i class="ki-outline ki-eye"></i>
|
<i class="ki-outline ki-eye"></i>
|
||||||
</a>
|
</a>
|
||||||
${
|
${
|
||||||
['survey', 'done', 'proses-laporan', 'laporan', 'paparan'].includes(status) ?
|
['survey', 'done', 'proses-laporan', 'laporan', 'paparan'].includes(status) ?
|
||||||
dokumenjaminan.map(dokumen => {
|
dokumenjaminan.map(dokumen => {
|
||||||
return `
|
return `
|
||||||
<a class="btn btn-sm btn-icon btn-clear btn-info" href="surveyor/print-out-inspeksi/${data.id}/${dokumen.id}/${dokumen.jenis_jaminan_id}" title="Print Inspeksi Permohonan">
|
<a class="btn btn-sm btn-icon btn-clear btn-info" href="surveyor/print-out-inspeksi/${data.id}/${dokumen.id}/${dokumen.jenis_jaminan_id}" title="Print Inspeksi Permohonan">
|
||||||
<i class="ki-outline ki-printer"></i>
|
<i class="ki-outline ki-printer"></i>
|
||||||
</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
}).join('') : ''
|
}).join('') : ''
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let dataTable = new KTDataTable(element, dataTableOptions);
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
|
|
||||||
|
function highlightFreezeRows() {
|
||||||
|
const table = document.querySelector('#permohonan-table table[data-datatable-table="true"]');
|
||||||
|
if (!table) return;
|
||||||
|
|
||||||
|
const rows = table.querySelectorAll('tbody tr');
|
||||||
|
|
||||||
|
rows.forEach(row => {
|
||||||
|
const statusCell = row.cells[7];
|
||||||
|
if (!statusCell) return;
|
||||||
|
|
||||||
|
const statusText = statusCell.textContent.trim().toLowerCase();
|
||||||
|
|
||||||
|
if (statusText === 'freeze') {
|
||||||
|
row.classList.add('bg-red-400', 'text-white');
|
||||||
|
} else {
|
||||||
|
row.classList.remove('bg-red-400', 'text-white');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Polling setiap 1 detik untuk sementara
|
||||||
|
setInterval(() => {
|
||||||
|
highlightFreezeRows();
|
||||||
|
}, 500);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
searchInput.addEventListener('input', function() {
|
searchInput.addEventListener('input', function() {
|
||||||
const searchValue = this.value.trim();
|
const searchValue = this.value.trim();
|
||||||
dataTable.search(searchValue, true);
|
dataTable.search(searchValue, true);
|
||||||
|
|||||||
64
resources/views/category-daftar-pustaka/create.blade.php
Normal file
64
resources/views/category-daftar-pustaka/create.blade.php
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{-- {{ Breadcrumbs::render(request()->route()->getName()) }} --}}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ isset($category->id) ? route('category-daftar-pustaka.update', $category->id) : route('category-daftar-pustaka.store') }}"
|
||||||
|
method="POST">
|
||||||
|
@csrf
|
||||||
|
@if (isset($category->id))
|
||||||
|
@method('PUT')
|
||||||
|
<input type="text" name="id" value="{{ $category->id }}" hidden class="hidden">
|
||||||
|
@endif
|
||||||
|
<div class="card border border-agi-100 pb-2.5">
|
||||||
|
<div class="card-header bg-agi-50" id="basic_settings">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Tambah
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('category-daftar-pustaka.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body grid gap-5">
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Code
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
|
||||||
|
name="code" value="{{ $category->code ?? old('code') }}"
|
||||||
|
{{ isset($category->id) ? 'readonly' : '' }}>
|
||||||
|
@error('code')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Name
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input input-file @error('name') border-danger bg-danger-light @enderror"
|
||||||
|
type="text" name="name" value="{{ $category->name ?? old('name') }}">
|
||||||
|
@error('name')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex justify-end">
|
||||||
|
<button type="submit" class="btn btn-primary">
|
||||||
|
Save
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
147
resources/views/category-daftar-pustaka/index.blade.php
Normal file
147
resources/views/category-daftar-pustaka/index.blade.php
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{-- {{ Breadcrumbs::render('basicdata.jenis-aset') }} --}}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="grid">
|
||||||
|
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="category-daftar-pustaka-table" data-api-url="{{ route('category-daftar-pustaka.datatables') }}">
|
||||||
|
<div class="card-header bg-agi-50 py-5 flex-wrap">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Daftar Kategori Daftar Pustaka
|
||||||
|
</h3>
|
||||||
|
<div class="flex flex-wrap gap-2 lg:gap-5">
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
|
||||||
|
<input placeholder="Search Kategori Daftar Pustaka" 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=""> Export to Excel </a>
|
||||||
|
<a class="btn btn-sm btn-primary" href="{{ route('category-daftar-pustaka.create') }}"> Tambah Kategori </a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="scrollable-x-auto">
|
||||||
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="w-14">
|
||||||
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[250px]" data-datatable-column="code">
|
||||||
|
<span class="sort"> <span class="sort-label"> Code </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[250px]" data-datatable-column="name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Name </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
Show
|
||||||
|
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-4">
|
||||||
|
<span data-datatable-info="true"> </span>
|
||||||
|
<div class="pagination" data-datatable-pagination="true">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
function deleteData(data) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Are you sure?',
|
||||||
|
text: "You won't be able to revert this!",
|
||||||
|
icon: 'warning',
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: '#3085d6',
|
||||||
|
cancelButtonColor: '#d33',
|
||||||
|
confirmButtonText: 'Yes, delete it!'
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.ajaxSetup({
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax(`category-daftar-pustaka/${data}`, {
|
||||||
|
type: 'DELETE'
|
||||||
|
}).then((response) => {
|
||||||
|
swal.fire('Deleted!', 'User has been deleted.', 'success').then(() => {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script type="module">
|
||||||
|
const element = document.querySelector('#category-daftar-pustaka-table ');
|
||||||
|
const searchInput = document.getElementById('search');
|
||||||
|
|
||||||
|
const apiUrl = element.getAttribute('data-api-url');
|
||||||
|
const dataTableOptions = {
|
||||||
|
apiEndpoint: apiUrl,
|
||||||
|
pageSize: 5,
|
||||||
|
columns: {
|
||||||
|
select: {
|
||||||
|
render: (item, data, context) => {
|
||||||
|
const checkbox = document.createElement('input');
|
||||||
|
checkbox.className = 'checkbox checkbox-sm';
|
||||||
|
checkbox.type = 'checkbox';
|
||||||
|
checkbox.value = data.id.toString();
|
||||||
|
checkbox.setAttribute('data-datatable-row-check', 'true');
|
||||||
|
return checkbox.outerHTML.trim();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
title: 'Code',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Name',
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
title: 'Status',
|
||||||
|
render: (item, data) => {
|
||||||
|
return `<div class="flex flex-nowrap justify-center">
|
||||||
|
<a class="btn btn-sm btn-icon btn-clear btn-info" href="category-daftar-pustaka/${data.id}/edit">
|
||||||
|
<i class="ki-outline ki-notepad-edit"></i>
|
||||||
|
</a>
|
||||||
|
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
|
||||||
|
<i class="ki-outline ki-trash"></i>
|
||||||
|
</a>
|
||||||
|
</div>`;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
|
// Custom search functionality
|
||||||
|
searchInput.addEventListener('input', function () {
|
||||||
|
const searchValue = this.value.trim();
|
||||||
|
dataTable.search(searchValue, true);
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
|
|
||||||
113
resources/views/daftar-pustaka/create.blade.php
Normal file
113
resources/views/daftar-pustaka/create.blade.php
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{-- {{ Breadcrumbs::render(request()->route()->getName()) }} --}}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
<form
|
||||||
|
action="{{ isset($daftarPustaka->id) ? route('daftar-pustaka.update', $daftarPustaka->id) : route('daftar-pustaka.store') }}"
|
||||||
|
method="POST" enctype="multipart/form-data">
|
||||||
|
@csrf
|
||||||
|
@if (isset($daftarPustaka->id))
|
||||||
|
<input type="hidden" name="id" value="{{ $daftarPustaka->id }}">
|
||||||
|
@method('PUT')
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="card border border-agi-100 pb-2.5">
|
||||||
|
<div class="card-header bg-agi-50" id="basic_settings">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ isset($daftarPustaka->id) ? 'Edit' : 'Tambah' }} Daftar Pustaka
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('daftar-pustaka.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body grid gap-5">
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Judul
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('judul') border-danger bg-danger-light @enderror" type="text"
|
||||||
|
name="judul" value="{{ $daftarPustaka->judul ?? old('judul') }}">
|
||||||
|
@error('judul')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Upload File
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('attachment') border-danger bg-danger-light @enderror" type="file"
|
||||||
|
name="attachment">
|
||||||
|
@error('attachment')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if (isset($daftarPustaka->attachment))
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
File
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
{{-- ambil nama file pathnya hilangkan --}}
|
||||||
|
<a href="{{ asset($daftarPustaka->attachment) }}" class="badge badge-outline badge-md badge-info">{{ basename($daftarPustaka->attachment) }}
|
||||||
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Kategori
|
||||||
|
</label>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<select class="select tomselect w-full" name="category_id">
|
||||||
|
<option value="">Pilih Kategori</option>
|
||||||
|
@if (isset($categories))
|
||||||
|
@foreach ($categories as $item)
|
||||||
|
<option value="{{ $item->id }}"
|
||||||
|
{{ old('category_id', $daftarPustaka->category_id ?? '') == $item->id ? 'selected' : '' }}>
|
||||||
|
{{ $item->name }}
|
||||||
|
</option>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</select>
|
||||||
|
@error('category_id')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Deskripsi
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea name="deskripsi" class="textarea" id="" cols="30" rows="10">{{ $daftarPustaka->deskripsi ?? old('deskripsi') }}</textarea>
|
||||||
|
@error('deskripsi')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="flex justify-end">
|
||||||
|
<button type="submit" class="btn btn-primary">
|
||||||
|
{{ isset($daftarPustaka->id) ? 'Update' : 'Simpan' }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
296
resources/views/daftar-pustaka/index.blade.php
Normal file
296
resources/views/daftar-pustaka/index.blade.php
Normal file
@@ -0,0 +1,296 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{-- {{ Breadcrumbs::render('basicdata.ijin_usaha') }} --}}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<style>
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
#previewContent {
|
||||||
|
height: 400px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="flex flex-col items-stretch gap-7">
|
||||||
|
<div class="flex items-center gap-3 w-full">
|
||||||
|
<div class="input w-full">
|
||||||
|
<i class="ki-filled ki-magnifier">
|
||||||
|
</i>
|
||||||
|
<input id="search" placeholder="Search Daftar Pustaka, Judul" type="text">
|
||||||
|
<span class="badge badge-outline -me-1.5">
|
||||||
|
⌘ K
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!--Filter-->
|
||||||
|
<a class="btn btn-info" id="search_filter" onclick="filterSearch()">
|
||||||
|
<i class="ki-filled ki-filter">
|
||||||
|
</i>
|
||||||
|
Filter
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-light" id="reset_filter" onclick="resetFilter()">
|
||||||
|
<i class="ki-filled ki-arrow-circle-left"></i>
|
||||||
|
Reset Filter
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-wrap items-center gap-5 justify-between mt-3">
|
||||||
|
<h3 class="text-sm text-mono font-medium">
|
||||||
|
page {{ $page }} of {{ $pageCount }} — {{ $limit }} items per page, total
|
||||||
|
{{ $total }} items.
|
||||||
|
</h3>
|
||||||
|
<div class="flex gap-2.5">
|
||||||
|
<select id="category_id" name="category_id" class="select tomselect w-[300px]" multiple>
|
||||||
|
<option value="" selected disabled>Filter by Category</option>
|
||||||
|
@foreach ($categories as $item)
|
||||||
|
<option value="{{ $item->id }}">{{ $item->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
<div class="flex toggle-group" data-kt-tabs="true" data-kt-tabs-initialized="true">
|
||||||
|
<a class="btn btn-icon active selected" data-kt-tab-toggle="#daftar_pustaka_grid" onclick="showGrid()"
|
||||||
|
href="javascript:void(0)">
|
||||||
|
<i class="ki-filled ki-category"></i>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-icon" data-kt-tab-toggle="#daftar_pustaka_list" onclick="showList()"
|
||||||
|
href="javascript:void(0)">
|
||||||
|
<i class="ki-filled ki-row-horizontal"></i>
|
||||||
|
</a>
|
||||||
|
@if (auth()->user()->hasRole(['administrator', 'admin']))
|
||||||
|
<a href="{{ route('daftar-pustaka.create') }}" class="btn btn-primary">
|
||||||
|
<i class="ki-filled ki-plus"></i>
|
||||||
|
Tambah
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 " id="daftar_pustaka_grid">
|
||||||
|
@if (isset($daftar_pustaka))
|
||||||
|
@foreach ($daftar_pustaka as $item)
|
||||||
|
<div class="card border shadow-none ">
|
||||||
|
<a class="show-pustaka h-[300px] bg-gray-200 w-full block" href="{{ route('daftar-pustaka.show', $item->id) }}"
|
||||||
|
data-url="{{ $item->attachment }}">
|
||||||
|
<div class="p-4 h-full w-full flex items-center justify-center overflow-hidden">
|
||||||
|
<div class=" text-red-500 flex items-center justify-center rounded">
|
||||||
|
<i class="ki-filled ki-document text-3xl"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<a href="{{ route('daftar-pustaka.show', $item->id) }}">
|
||||||
|
|
||||||
|
<h3 class="text-md font-medium text-gray-900 hover:text-primary cursor-pointer">
|
||||||
|
{{ $item->judul }}</h3>
|
||||||
|
<p class="text-2sm text-gray-700">
|
||||||
|
{{-- batasi panjang deskripsi 50 --}}
|
||||||
|
{{ substr($item->deskripsi, 0, 50) }}
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
<div class="flex justify-between items-center gap-2.5 mt-2">
|
||||||
|
<p class="badge rounded-full badge-xs badge-outline badge-success text-xs text-gray-700">
|
||||||
|
# {{ $item->category->name }}</p>
|
||||||
|
|
||||||
|
@auth
|
||||||
|
@if (auth()->user()->hasRole(['administrator', 'admin']))
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-xs btn-danger" onclick="deleteData({{ $item->id }})">
|
||||||
|
<i class="ki-filled ki-trash">
|
||||||
|
</i>
|
||||||
|
Hapus
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-xs btn-info"
|
||||||
|
href="{{ route('daftar-pustaka.edit', $item->id) }}">
|
||||||
|
<i class="ki-filled ki-pencil">
|
||||||
|
</i>
|
||||||
|
Edit
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endauth
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 gap-4 hidden" id="daftar_pustaka_list">
|
||||||
|
@if (isset($daftar_pustaka))
|
||||||
|
@foreach ($daftar_pustaka as $item)
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body flex items-center flex-wrap justify-between p-2 pe-5 gap-4.5">
|
||||||
|
<div class="flex items-center gap-3.5">
|
||||||
|
<div
|
||||||
|
class="card bg-gray-200 flex items-center justify-center bg-accent/50 h-[70px] w-[90px] shadow-none">
|
||||||
|
<a class="show-pustaka h-[90px] w-full block"
|
||||||
|
href="{{ route('daftar-pustaka.show', $item->id) }}"
|
||||||
|
data-url="{{ $item->attachment }}">
|
||||||
|
<div class="p-4 h-full w-full flex items-center justify-center overflow-hidden">
|
||||||
|
<div class=" text-red-500 flex items-center justify-center rounded">
|
||||||
|
<i class="ki-filled ki-document text-3xl"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('daftar-pustaka.show', $item->id) }}">
|
||||||
|
<div class="flex flex-col gap-2 cursor-pointer">
|
||||||
|
<div class="flex items-center mt-1">
|
||||||
|
<a class="hover:text-primary text-sm font-medium text-mono leading-5.5">
|
||||||
|
{{ $item->judul }}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div class="flex items-center flex-wrap gap-3">
|
||||||
|
<span class="kt-badge kt-badge-warning kt-badge-sm rounded-full gap-1">
|
||||||
|
<span class="text-xs font-medium text-foreground">
|
||||||
|
{{ substr($item->deskripsi, 0, 50) }}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-1.5">
|
||||||
|
<p class="badge rounded-full badge-sm badge-outline badge-success text-xs text-gray-700">
|
||||||
|
# {{ $item->category->name }}</p>
|
||||||
|
@auth
|
||||||
|
@if (auth()->user()->hasRole(['administrator', 'admin']))
|
||||||
|
<div>
|
||||||
|
<a class="btn btn-sm btn-danger" onclick="deleteData({{ $item->id }})">
|
||||||
|
<i class="ki-filled ki-trash">
|
||||||
|
</i>
|
||||||
|
Hapus
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-sm btn-info"
|
||||||
|
href="{{ route('daftar-pustaka.edit', $item->id) }}">
|
||||||
|
<i class="ki-filled ki-pencil">
|
||||||
|
</i>
|
||||||
|
Edit
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endauth
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="pagination flex gap-2 justify-center mt-5">
|
||||||
|
@if ($daftar_pustaka->onFirstPage())
|
||||||
|
<span class="btn disabled"><i class="ki-filled ki-black-left"></i></span>
|
||||||
|
@else
|
||||||
|
<a href="{{ $daftar_pustaka->previousPageUrl() }}" class="btn">
|
||||||
|
<i class="ki-filled ki-black-left"></i>
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@foreach ($daftar_pustaka->getUrlRange(1, $daftar_pustaka->lastPage()) as $page => $url)
|
||||||
|
<a href="{{ $url }}" class="btn {{ $page == $daftar_pustaka->currentPage() ? 'active' : '' }}">
|
||||||
|
{{ $page }}
|
||||||
|
</a>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if ($daftar_pustaka->hasMorePages())
|
||||||
|
<a href="{{ $daftar_pustaka->nextPageUrl() }}" class="btn">
|
||||||
|
<i class="ki-filled ki-black-right"></i>
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
<span class="btn disabled"><i class="ki-filled ki-black-right"></i></span>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
function deleteData(data) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Are you sure?',
|
||||||
|
text: "You won't be able to revert this!",
|
||||||
|
icon: 'warning',
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: '#3085d6',
|
||||||
|
cancelButtonColor: '#d33',
|
||||||
|
confirmButtonText: 'Yes, delete it!'
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.ajaxSetup({
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax(`daftar-pustaka/${data}`, {
|
||||||
|
type: 'DELETE'
|
||||||
|
}).then((response) => {
|
||||||
|
swal.fire('Deleted!', 'User has been deleted.', 'success').then(() => {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function showGrid() {
|
||||||
|
document.getElementById("daftar_pustaka_grid").classList.remove("hidden");
|
||||||
|
document.getElementById("daftar_pustaka_grid").classList.add("active");
|
||||||
|
|
||||||
|
document.getElementById("daftar_pustaka_list").classList.add("hidden");
|
||||||
|
document.getElementById("daftar_pustaka_list").classList.remove("active");
|
||||||
|
|
||||||
|
// Update button active class
|
||||||
|
document.querySelectorAll(".toggle-group a").forEach(btn => btn.classList.remove("selected", "active"));
|
||||||
|
event.currentTarget.classList.add("selected", "active");
|
||||||
|
}
|
||||||
|
|
||||||
|
function showList() {
|
||||||
|
document.getElementById("daftar_pustaka_list").classList.remove("hidden");
|
||||||
|
document.getElementById("daftar_pustaka_list").classList.add("active");
|
||||||
|
|
||||||
|
document.getElementById("daftar_pustaka_grid").classList.add("hidden");
|
||||||
|
document.getElementById("daftar_pustaka_grid").classList.remove("active");
|
||||||
|
|
||||||
|
// Update button active class
|
||||||
|
document.querySelectorAll(".toggle-group a").forEach(btn => btn.classList.remove("selected", "active"));
|
||||||
|
event.currentTarget.classList.add("selected", "active");
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterSearch() {
|
||||||
|
const search = document.getElementById('search')?.value || '';
|
||||||
|
|
||||||
|
const select = document.getElementById('category_id');
|
||||||
|
const selectedCategories = Array.from(select.selectedOptions).map(option => option.value);
|
||||||
|
|
||||||
|
const categoryParam = selectedCategories.join(',');
|
||||||
|
|
||||||
|
const url = "{{ route('daftar-pustaka.index') }}?search=" + encodeURIComponent(search) + "&category=" +
|
||||||
|
encodeURIComponent(categoryParam);
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function resetFilter() {
|
||||||
|
const url = "{{ route('daftar-pustaka.index') }}";
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
96
resources/views/daftar-pustaka/show.blade.php
Normal file
96
resources/views/daftar-pustaka/show.blade.php
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{-- {{ Breadcrumbs::render(request()->route()->getName()) }} --}}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
|
||||||
|
<form
|
||||||
|
action="{{ isset($daftarPustaka->id) ? route('daftar-pustaka.update', $daftarPustaka->id) : route('daftar-pustaka.store') }}"
|
||||||
|
method="POST">
|
||||||
|
@csrf
|
||||||
|
<div class="card border border-agi-100 pb-2.5">
|
||||||
|
<div class="card-header bg-agi-50" id="basic_settings">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ $daftarPustaka->judul ?? '' }}
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('daftar-pustaka.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body grid gap-5">
|
||||||
|
<div class=" min-w-3xl">
|
||||||
|
<div class="p-4 h-full flex flex-col">
|
||||||
|
<div class="flex justify-between items-center mb-4">
|
||||||
|
<a href="{{ asset('storage/' . $daftarPustaka->attachment)}}" class="btn btn-primary btn-sm">
|
||||||
|
<i class="ki-duotone ki-cloud-download me-1"><span class="path1"></span><span
|
||||||
|
class="path2"></span></i>
|
||||||
|
Download File
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@php
|
||||||
|
|
||||||
|
$fileExtension = pathinfo($daftarPustaka->attachment, PATHINFO_EXTENSION);
|
||||||
|
// cek extension
|
||||||
|
$isPdf = $fileExtension == 'pdf';
|
||||||
|
$imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
|
||||||
|
$isImage = in_array(strtolower($fileExtension), $imageExtensions);
|
||||||
|
$fileUrl = asset('storage/' . $daftarPustaka->attachment);
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@if ($isPdf)
|
||||||
|
<iframe src="{{$fileUrl}}"
|
||||||
|
width="100%" height="600px" frameborder="0"></iframe>
|
||||||
|
@elseif ($isImage)
|
||||||
|
<img src="{{ $fileUrl }}" class="w-full object-contain rounded" />
|
||||||
|
@else
|
||||||
|
<p class="text-red-500">File tidak bisa ditampilkan, silakan <a href="{{ $fileUrl }}"
|
||||||
|
class="text-blue-500 underline" download>unduh di sini</a>.</p>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="border border-t">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{{ $daftarPustaka->deskripsi ?? '' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
{{-- @push('scripts')
|
||||||
|
<script src="{{ asset('vendor/pdfobject.min.js') }}"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
let url = @json($daftarPustaka->attachment);
|
||||||
|
console.log(url);
|
||||||
|
|
||||||
|
const fileExtension = url.split('.').pop().toLowerCase();
|
||||||
|
const previewContent = document.getElementById('previewContent');
|
||||||
|
|
||||||
|
if (['pdf'].includes(fileExtension)) {
|
||||||
|
if (window.innerWidth < 768) {
|
||||||
|
document.getElementById('pdfFrame').style.display = 'block';
|
||||||
|
document.getElementById('pdfFrame').src = urlStorage;
|
||||||
|
} else {
|
||||||
|
PDFObject.embed(urlStorage, "#previewContent");
|
||||||
|
}
|
||||||
|
} else if (['jpg', 'jpeg', 'png', 'gif'].includes(fileExtension)) {
|
||||||
|
previewContent.innerHTML =
|
||||||
|
`<img src="${url}" alt="Preview" class="max-w-full max-h-full object-contain">`;
|
||||||
|
} else {
|
||||||
|
previewContent.innerHTML = '<p class="text-center">Unsupported file type</p>';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush --}}
|
||||||
@@ -44,15 +44,6 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col">
|
|
||||||
<label class="text-base font-medium mb-1">Penilai</label>
|
|
||||||
<select class="select tomselect" id="penilai_filter">
|
|
||||||
<option value="">Semua Penilai</option>
|
|
||||||
@foreach(\MOdules\Usermanagement\Models\User::role(['penilai','surveyor'])->get() as $penilai)
|
|
||||||
<option value="{{ $penilai->id }}">{{ $penilai->name }}</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Buttons row at the bottom -->
|
<!-- Buttons row at the bottom -->
|
||||||
@@ -73,7 +64,7 @@
|
|||||||
<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 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">
|
<div class="card-header bg-agi-50 py-5 flex-wrap">
|
||||||
<h3 class="card-title">
|
<h3 class="card-title">
|
||||||
Laporan Hasil Penilaian Jaminan Internal & External
|
Rekap Penyelesaian External
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -89,130 +80,53 @@
|
|||||||
<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="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">
|
<th class="min-w-[150px]" data-datatable-column="branch">
|
||||||
<span class="sort"> <span class="sort-label"> Cabang </span>
|
<span class="sort"> <span class="sort-label"> Cabang </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
<th class="min-w-[150px]" data-datatable-column="name">
|
||||||
<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"> <span class="sort-label"> Nama Debitur </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="cif">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nominal KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Jenis Penilaian </span>
|
<span class="sort"> <span class="sort-label">Tanggal Penyelesaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Nominal Penyelesaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_fasilitas_kredit">
|
<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"> <span class="sort-label"> No. Rekening (Tujuan Akhir) </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"> Sisa KSL </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
||||||
<span class="sort"> <span class="sort-label"> Jenis Agunan </span>
|
<span class="sort"> <span class="sort-label"> Memo </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
||||||
<span class="sort"> <span class="sort-label"> Alamat Agunan </span>
|
<span class="sort"> <span class="sort-label"> Status</span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</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">
|
<th class="min-w-[150px]" data-datatable-column="catatan">
|
||||||
<span class="sort"> <span class="sort-label"> Catatan </span>
|
<span class="sort"> <span class="sort-label"> Catatan </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -266,144 +180,41 @@
|
|||||||
nomor_registrasi: {
|
nomor_registrasi: {
|
||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
},
|
},
|
||||||
tanggal_permohonan: {
|
branch: {
|
||||||
|
title: 'Cabang',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nama Debitur',
|
||||||
|
},
|
||||||
|
tanggal_ksl: {
|
||||||
title: 'Tanggal Permohonan',
|
title: 'Tanggal Permohonan',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
branch: {
|
nomor_ksl: {
|
||||||
title: 'Cabang',
|
|
||||||
},
|
|
||||||
pemohon: {
|
|
||||||
title: 'Pemohon',
|
|
||||||
},
|
|
||||||
cif: {
|
|
||||||
title: 'CIF',
|
title: 'CIF',
|
||||||
},
|
},
|
||||||
name: {
|
nominal_ksl: {
|
||||||
title: 'Nama Debitur',
|
|
||||||
},
|
|
||||||
jenis_penilaian: {
|
|
||||||
title: 'Jenis Penilaian',
|
title: 'Jenis Penilaian',
|
||||||
},
|
},
|
||||||
tujuan_penilaian: {
|
tanggal_penyelesaian: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian',
|
||||||
},
|
},
|
||||||
jenis_fasilitas_kredit: {
|
nominal_penyelesaian: {
|
||||||
title: 'Jenis Fasilitas Kredit',
|
title: 'Jenis Fasilitas Kredit',
|
||||||
},
|
},
|
||||||
jenis_agunan: {
|
nomor_rekening: {
|
||||||
|
title: 'Nomor Rekening',
|
||||||
|
},
|
||||||
|
sisa_ksl: {
|
||||||
title: 'Jenis Agunan',
|
title: 'Jenis Agunan',
|
||||||
},
|
},
|
||||||
alamat_agunan: {
|
memo: {
|
||||||
title: 'Alamat Agunan',
|
title: 'Memo',
|
||||||
},
|
},
|
||||||
bukti_kepemilikan: {
|
status: {
|
||||||
title: 'Bukti Kepemilikan',
|
title: 'Status',
|
||||||
render: (item, data) => {
|
|
||||||
if (data.bukti_kepemilikan) {
|
|
||||||
// Ganti karakter baris baru dengan tag <br> untuk HTML
|
|
||||||
return data.bukti_kepemilikan.split('\n').join('<br>');
|
|
||||||
}
|
|
||||||
return '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nama_pemilik: {
|
|
||||||
title: 'Nama Pemilik',
|
|
||||||
},
|
|
||||||
luas_tanah: {
|
|
||||||
title: 'Luas Tanah',
|
|
||||||
},
|
|
||||||
nilai_tanah: {
|
|
||||||
title: 'Nilai Tanah',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_tanah ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
luas_bangunan: {
|
|
||||||
title: 'Luas Bangunan',
|
|
||||||
},
|
|
||||||
nilai_bangunan: {
|
|
||||||
title: 'Nilai Bangunan',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_bangunan ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_njop: {
|
|
||||||
title: 'Nilai NJOP',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_njop ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_pasar_wajar: {
|
|
||||||
title: 'Nilai Pasar Wajar',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_pasar_wajar ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_likuidasi: {
|
|
||||||
title: 'Nilai Likuidasi',
|
|
||||||
render: (item, data) => {
|
|
||||||
return 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: {
|
catatan: {
|
||||||
title: 'Catatan',
|
title: 'Catatan',
|
||||||
|
|||||||
@@ -44,15 +44,7 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col">
|
|
||||||
<label class="text-base font-medium mb-1">Penilai</label>
|
|
||||||
<select class="select tomselect" id="penilai_filter">
|
|
||||||
<option value="">Semua Penilai</option>
|
|
||||||
@foreach(\MOdules\Usermanagement\Models\User::role(['penilai','surveyor'])->get() as $penilai)
|
|
||||||
<option value="{{ $penilai->id }}">{{ $penilai->name }}</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Buttons row at the bottom -->
|
<!-- Buttons row at the bottom -->
|
||||||
@@ -73,7 +65,7 @@
|
|||||||
<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 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">
|
<div class="card-header bg-agi-50 py-5 flex-wrap">
|
||||||
<h3 class="card-title">
|
<h3 class="card-title">
|
||||||
Laporan Hasil Penilaian Jaminan Internal & External
|
Rekap Penyelesaian Internal
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -81,7 +73,7 @@
|
|||||||
<div class="scrollable-x-auto">
|
<div class="scrollable-x-auto">
|
||||||
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-14">
|
<th class="w-14">
|
||||||
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
||||||
</th>
|
</th>
|
||||||
@@ -89,130 +81,49 @@
|
|||||||
<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="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">
|
<th class="min-w-[150px]" data-datatable-column="branch">
|
||||||
<span class="sort"> <span class="sort-label"> Cabang </span>
|
<span class="sort"> <span class="sort-label"> Cabang </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
<th class="min-w-[150px]" data-datatable-column="name">
|
||||||
<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"> <span class="sort-label"> Nama Debitur </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"> <span class="sort-label"> Tanggal KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nomor KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="cif">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nominal KSL </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Jenis Penilaian </span>
|
<span class="sort"> <span class="sort-label">Tanggal Penyelesaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Nominal Penyelesaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_fasilitas_kredit">
|
<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"> <span class="sort-label"> Sisa KSL </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
||||||
<span class="sort"> <span class="sort-label"> Jenis Agunan </span>
|
<span class="sort"> <span class="sort-label"> Memo </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
||||||
<span class="sort"> <span class="sort-label"> Alamat Agunan </span>
|
<span class="sort"> <span class="sort-label"> Status</span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</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">
|
<th class="min-w-[150px]" data-datatable-column="catatan">
|
||||||
<span class="sort"> <span class="sort-label"> Catatan </span>
|
<span class="sort"> <span class="sort-label"> Catatan </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
@@ -266,144 +177,38 @@
|
|||||||
nomor_registrasi: {
|
nomor_registrasi: {
|
||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
},
|
},
|
||||||
tanggal_permohonan: {
|
branch: {
|
||||||
|
title: 'Cabang',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nama Debitur',
|
||||||
|
},
|
||||||
|
tanggal_ksl: {
|
||||||
title: 'Tanggal Permohonan',
|
title: 'Tanggal Permohonan',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
branch: {
|
nomor_ksl: {
|
||||||
title: 'Cabang',
|
|
||||||
},
|
|
||||||
pemohon: {
|
|
||||||
title: 'Pemohon',
|
|
||||||
},
|
|
||||||
cif: {
|
|
||||||
title: 'CIF',
|
title: 'CIF',
|
||||||
},
|
},
|
||||||
name: {
|
nominal_ksl: {
|
||||||
title: 'Nama Debitur',
|
|
||||||
},
|
|
||||||
jenis_penilaian: {
|
|
||||||
title: 'Jenis Penilaian',
|
title: 'Jenis Penilaian',
|
||||||
},
|
},
|
||||||
tujuan_penilaian: {
|
tanggal_penyelesaian: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian',
|
||||||
},
|
},
|
||||||
jenis_fasilitas_kredit: {
|
nominal_penyelesaian: {
|
||||||
title: 'Jenis Fasilitas Kredit',
|
title: 'Jenis Fasilitas Kredit',
|
||||||
},
|
},
|
||||||
jenis_agunan: {
|
sisa_ksl: {
|
||||||
title: 'Jenis Agunan',
|
title: 'Jenis Agunan',
|
||||||
},
|
},
|
||||||
alamat_agunan: {
|
memo: {
|
||||||
title: 'Alamat Agunan',
|
title: 'Memo',
|
||||||
},
|
},
|
||||||
bukti_kepemilikan: {
|
status: {
|
||||||
title: 'Bukti Kepemilikan',
|
title: 'Status',
|
||||||
render: (item, data) => {
|
|
||||||
if (data.bukti_kepemilikan) {
|
|
||||||
// Ganti karakter baris baru dengan tag <br> untuk HTML
|
|
||||||
return data.bukti_kepemilikan.split('\n').join('<br>');
|
|
||||||
}
|
|
||||||
return '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nama_pemilik: {
|
|
||||||
title: 'Nama Pemilik',
|
|
||||||
},
|
|
||||||
luas_tanah: {
|
|
||||||
title: 'Luas Tanah',
|
|
||||||
},
|
|
||||||
nilai_tanah: {
|
|
||||||
title: 'Nilai Tanah',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_tanah ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
luas_bangunan: {
|
|
||||||
title: 'Luas Bangunan',
|
|
||||||
},
|
|
||||||
nilai_bangunan: {
|
|
||||||
title: 'Nilai Bangunan',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_bangunan ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_njop: {
|
|
||||||
title: 'Nilai NJOP',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_njop ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_pasar_wajar: {
|
|
||||||
title: 'Nilai Pasar Wajar',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_pasar_wajar ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_likuidasi: {
|
|
||||||
title: 'Nilai Likuidasi',
|
|
||||||
render: (item, data) => {
|
|
||||||
return 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: {
|
catatan: {
|
||||||
title: 'Catatan',
|
title: 'Catatan',
|
||||||
|
|||||||
@@ -35,20 +35,19 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="min-w-[100px]">Nama Debitur</th>
|
<th class="min-w-[100px]">Nama Debitur</th>
|
||||||
<th class="min-w-[100px]">Tujuan Penilaian</th>
|
<th class="min-w-[100px]">Cabang</th>
|
||||||
<th class="min-w-[100px]">Status Bayar</th>
|
<th class="min-w-[100px]">Lokasi Jaminan</th>
|
||||||
<th class="min-w-[100px]">Jenis Asset</th>
|
<th class="min-w-[100px]">TUjuan Penilaian</th>
|
||||||
<th class="min-w-[100px]">Penugasan</th>
|
|
||||||
<th class="min-w-[100px]">Jenis Report</th>
|
|
||||||
<th class="min-w-[100px]">Tgl Register</th>
|
|
||||||
<th class="min-w-[100px]">Tgl Assign</th>
|
|
||||||
<th class="min-w-[100px]">Tgl Kunjungan</th>
|
<th class="min-w-[100px]">Tgl Kunjungan</th>
|
||||||
<th class="min-w-[100px]">Progress</th>
|
<th class="min-w-[100px]">Tgl Lpj Done</th>
|
||||||
<th class="min-w-[100px]">SLA Laporan</th>
|
<th class="min-w-[100px]">SLA Buku Kjpp</th>
|
||||||
<th class="min-w-[100px]">SLA Paparan</th>
|
<th class="min-w-[100px]">Status</th>
|
||||||
<th class="min-w-[100px]">Approve</th>
|
<th class="min-w-[100px]">Poin</th>
|
||||||
|
<th class="min-w-[100px]">SLA INTERNAL</th>
|
||||||
|
<th class="min-w-[100px]">SLA PENDAMPINGAN KJPP</th>
|
||||||
|
<th class="min-w-[100px]">Absensi</th>
|
||||||
|
<th class="min-w-[100px]">Zabtu</th>
|
||||||
<th class="min-w-[50px] text-center">Keterangan</th>
|
<th class="min-w-[50px] text-center">Keterangan</th>
|
||||||
<th class="min-w-[50px] text-center">Action</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -142,11 +141,17 @@
|
|||||||
render: (item, data) =>
|
render: (item, data) =>
|
||||||
`${window.formatTanggalIndonesia(data.created_at)}`,
|
`${window.formatTanggalIndonesia(data.created_at)}`,
|
||||||
},
|
},
|
||||||
|
|
||||||
tanggal_kunjungan: {
|
tanggal_kunjungan: {
|
||||||
title: 'Tgl Kunjungan',
|
title: 'Tgl Kunjungan',
|
||||||
render: (item, data) =>
|
render: (item, data) =>
|
||||||
`${window.formatTanggalIndonesia(data.waktu_penilaian) || ''}`,
|
`${window.formatTanggalIndonesia(data.waktu_penilaian) || ''}`,
|
||||||
},
|
},
|
||||||
|
tanggal_reported: {
|
||||||
|
title: 'Tgl Kunjungan',
|
||||||
|
render: (item, data) =>
|
||||||
|
`${window.formatTanggalIndonesia(data.waktu_penilaian) || ''}`,
|
||||||
|
},
|
||||||
progress: {
|
progress: {
|
||||||
title: 'Progress',
|
title: 'Progress',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
@@ -182,20 +187,7 @@
|
|||||||
return `${window.formatTanggalIndonesia(data.paparan)}`;
|
return `${window.formatTanggalIndonesia(data.paparan)}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
approve: {
|
|
||||||
title: 'Approve',
|
|
||||||
render: (item, data) => {
|
|
||||||
// Gabungkan nama dengan <br> untuk pemisah baris baru
|
|
||||||
let dataHtml = `
|
|
||||||
${data.permohonan?.approve_so?.name || ''}
|
|
||||||
<br>
|
|
||||||
${data.permohonan?.approve_eo?.name || ''}
|
|
||||||
<br>
|
|
||||||
${data.permohonan?.approve_dd?.name || ''}
|
|
||||||
`;
|
|
||||||
return dataHtml;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
keterangan: {
|
keterangan: {
|
||||||
|
|||||||
@@ -104,10 +104,6 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="jenis_agunan">
|
|
||||||
<span class="sort"> <span class="sort-label"> Penilaian</span>
|
|
||||||
<span class="sort-icon"> </span> </span>
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<th class="min-w-[150px]" data-datatable-column="tanggal_laporan">
|
<th class="min-w-[150px]" data-datatable-column="tanggal_laporan">
|
||||||
<span class="sort"> <span class="sort-label"> Tanggal Dokuemen </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Dokuemen </span>
|
||||||
@@ -117,12 +113,20 @@
|
|||||||
<span class="sort"> <span class="sort-label"> Tanggal Approval </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Approval </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_review">
|
||||||
|
<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="tanggal_review">
|
<th class="min-w-[150px]" data-datatable-column="tanggal_review">
|
||||||
<span class="sort"> <span class="sort-label"> Jangka Waktu </span>
|
<span class="sort"> <span class="sort-label"> Jangka Waktu </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_review">
|
||||||
|
<span class="sort"> <span class="sort-label"> Keterangan </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
@@ -191,29 +195,34 @@
|
|||||||
tujuan_penilaian: {
|
tujuan_penilaian: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian',
|
||||||
},
|
},
|
||||||
jenis_agunan: {
|
|
||||||
title: 'Jenis Agunan',
|
|
||||||
},
|
|
||||||
|
|
||||||
tanggal_laporan: {
|
tanggal_laporan: {
|
||||||
title: 'Tanggal Laporan',
|
title: 'Tanggal Laporan',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-';
|
return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
tanggal_review: {
|
tanggal_approval: {
|
||||||
title: 'Tanggal Review',
|
title: 'Tanggal Approval',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.tanggal_review ? window.formatTanggalIndonesia(data.tanggal_review) : '-';
|
return data.tanggal_approval ? window.formatTanggalIndonesia(data.tanggal_approval) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
jangka_waktu: {
|
tanggal_kunjungan: {
|
||||||
title: 'Jangka Waktu',
|
title: 'Tanggal Kunjungan',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.jangka_waktu ?? '3';
|
return data.tanggal_kunjungan ? window.formatTanggalIndonesia(data.tanggal_kunjungan) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
jangka_waktu: {
|
||||||
|
title: 'Jangka Waktu',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.jangka_waktu ?? '-';
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keterangan: {
|
||||||
|
title: 'Keterangan',
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<!-- Filter Card -->
|
<!-- Filter Card -->
|
||||||
<div class="card border border-agi-100">
|
<div class="card border border-agi-100">
|
||||||
<div class="card-header bg-agi-50 py-5">
|
<div class="card-header bg-agi-50 py-5">
|
||||||
<h3 class="card-title"> Laporan User Pemohon</h3>
|
<h3 class="card-title"> Laporan User Penilai</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body grid gap-4">
|
<div class="card-body grid gap-4">
|
||||||
<!-- Search field at the top, full width -->
|
<!-- Search field at the top, full width -->
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<i class="ki-outline ki-filter fs-2 me-1"></i>
|
<i class="ki-outline ki-filter fs-2 me-1"></i>
|
||||||
Terapkan Filter
|
Terapkan Filter
|
||||||
</button>
|
</button>
|
||||||
<a class="btn btn-sm btn-light" href="{{ route('laporan-hasil-penilaian-jaminan-internal-external.export') }}" id="export-btn">
|
<a class="btn btn-sm btn-light" href="{{ route('laporan-user.export') }}" id="export-btn">
|
||||||
<i class="ki-outline ki-file-down fs-2 me-1"></i>
|
<i class="ki-outline ki-file-down fs-2 me-1"></i>
|
||||||
Export to Excel
|
Export to Excel
|
||||||
</a>
|
</a>
|
||||||
@@ -77,132 +77,37 @@
|
|||||||
<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="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">
|
<th class="min-w-[150px]" data-datatable-column="branch">
|
||||||
<span class="sort"> <span class="sort-label"> Cabang </span>
|
<span class="sort"> <span class="sort-label"> Cabang </span>
|
||||||
<span class="sort-icon"> </span> </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>
|
||||||
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
<th class="min-w-[150px]" data-datatable-column="pemohon">
|
||||||
<span class="sort"> <span class="sort-label"> Pemohon </span>
|
<span class="sort"> <span class="sort-label"> Pemohon </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</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">
|
<th class="min-w-[150px]" data-datatable-column="jenis_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Jenis Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Tgl Terima </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Penilai </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>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
<th class="min-w-[150px]" data-datatable-column="alamat_agunan">
|
||||||
<span class="sort"> <span class="sort-label"> Alamat Agunan </span>
|
<span class="sort"> <span class="sort-label"> Tgl Laporan </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</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">
|
<th class="min-w-[150px]" data-datatable-column="catatan">
|
||||||
<span class="sort"> <span class="sort-label"> Catatan </span>
|
<span class="sort"> <span class="sort-label"> Nilai Pasar Wajar </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -252,6 +157,15 @@
|
|||||||
},
|
},
|
||||||
nomor_registrasi: {
|
nomor_registrasi: {
|
||||||
title: 'Nomor Registrasi',
|
title: 'Nomor Registrasi',
|
||||||
|
},
|
||||||
|
branch: {
|
||||||
|
title: 'Cabang',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nama Debitur',
|
||||||
|
},
|
||||||
|
pemohon: {
|
||||||
|
title: 'Pemohon',
|
||||||
},
|
},
|
||||||
tanggal_permohonan: {
|
tanggal_permohonan: {
|
||||||
title: 'Tanggal Permohonan',
|
title: 'Tanggal Permohonan',
|
||||||
@@ -259,68 +173,14 @@
|
|||||||
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-';
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
branch: {
|
nama_penilai: {
|
||||||
title: 'Cabang',
|
title: 'Nama Penilai',
|
||||||
},
|
},
|
||||||
pemohon: {
|
|
||||||
title: 'Pemohon',
|
tanggal_laporan: {
|
||||||
},
|
title: 'Tanggal Dokumen Diterima',
|
||||||
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',
|
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
if (data.bukti_kepemilikan) {
|
return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-';
|
||||||
// Ganti karakter baris baru dengan tag <br> untuk HTML
|
|
||||||
return data.bukti_kepemilikan.split('\n').join('<br>');
|
|
||||||
}
|
|
||||||
return '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nama_pemilik: {
|
|
||||||
title: 'Nama Pemilik',
|
|
||||||
},
|
|
||||||
luas_tanah: {
|
|
||||||
title: 'Luas Tanah',
|
|
||||||
},
|
|
||||||
nilai_tanah: {
|
|
||||||
title: 'Nilai Tanah',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_tanah ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
luas_bangunan: {
|
|
||||||
title: 'Luas Bangunan',
|
|
||||||
},
|
|
||||||
nilai_bangunan: {
|
|
||||||
title: 'Nilai Bangunan',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_bangunan ?? '-';
|
|
||||||
},
|
|
||||||
},
|
|
||||||
nilai_njop: {
|
|
||||||
title: 'Nilai NJOP',
|
|
||||||
render: (item, data) => {
|
|
||||||
return data.nilai_njop ?? '-';
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
nilai_pasar_wajar: {
|
nilai_pasar_wajar: {
|
||||||
@@ -328,72 +188,6 @@
|
|||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
return data.nilai_pasar_wajar ?? '-';
|
return data.nilai_pasar_wajar ?? '-';
|
||||||
},
|
},
|
||||||
},
|
|
||||||
nilai_likuidasi: {
|
|
||||||
title: 'Nilai Likuidasi',
|
|
||||||
render: (item, data) => {
|
|
||||||
return 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',
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -193,94 +193,7 @@
|
|||||||
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
@include('lpj::penilai.components.signature-approval')
|
||||||
@php
|
|
||||||
use Modules\Usermanagement\Models\User;
|
|
||||||
|
|
||||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
|
||||||
$imagePathPenilai = storage_path(
|
|
||||||
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$soUser = User::where('id', $senior_officer->id)->first();
|
|
||||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
|
||||||
|
|
||||||
$imagePathEO = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('EO Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('EO Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$imagePathDD = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('DD Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('DD Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
@endphp
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathPenilai))
|
|
||||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathSo))
|
|
||||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathEO))
|
|
||||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathDD))
|
|
||||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('PENILAI')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ $senior_officer->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -229,93 +229,7 @@
|
|||||||
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
@include('lpj::penilai.components.signature-approval')
|
||||||
@php
|
|
||||||
use Modules\Usermanagement\Models\User;
|
|
||||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
|
||||||
$imagePathPenilai = storage_path(
|
|
||||||
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$soUser = User::where('id', $senior_officer->id)->first();
|
|
||||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
|
||||||
|
|
||||||
$imagePathEO = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('EO Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('EO Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$imagePathDD = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('DD Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('DD Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
@endphp
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathPenilai))
|
|
||||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathSo))
|
|
||||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathEO))
|
|
||||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathDD))
|
|
||||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('PENILAI')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ $senior_officer->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@@ -412,91 +412,6 @@
|
|||||||
@endisset
|
@endisset
|
||||||
<p>Demikian kami sampaikan, atas perhatiannya kami ucapkan terima kasih.</p>
|
<p>Demikian kami sampaikan, atas perhatiannya kami ucapkan terima kasih.</p>
|
||||||
|
|
||||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
@include('lpj::penilai.components.signature-approval')
|
||||||
@php
|
|
||||||
use Modules\Usermanagement\Models\User;
|
|
||||||
|
|
||||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
|
||||||
$imagePathPenilai = storage_path('app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign);
|
|
||||||
|
|
||||||
$soUser = User::where('id', $senior_officer->id)->first();
|
|
||||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
|
||||||
|
|
||||||
$imagePathEO = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('EO Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('EO Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$imagePathDD = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('DD Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('DD Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
@endphp
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathPenilai))
|
|
||||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathSo))
|
|
||||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathEO))
|
|
||||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathDD))
|
|
||||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('PENILAI')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ $senior_officer->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</main>
|
</main>
|
||||||
@include('lpj::penilai.components.footer')
|
@include('lpj::penilai.components.footer')
|
||||||
|
|||||||
@@ -503,5 +503,43 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="no-break">
|
||||||
|
<table style="width: 100%;">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table>
|
||||||
|
<div style="margin-top: 20px;">
|
||||||
|
<label style="font-weight: bold;">DISCLAIMER</label>
|
||||||
|
<div>
|
||||||
|
<ol style="padding-left: 20px; list-style-type: decimal; margin-top: 0;">
|
||||||
|
|
||||||
|
<li style="margin-bottom: 5px;">PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG
|
||||||
|
BERLAKU DI SUBDIT APPRAISAL</li>
|
||||||
|
<li style="margin-bottom: 5px;">LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY
|
||||||
|
DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN
|
||||||
|
DOKUMEN ASLINYA</li>
|
||||||
|
<li style="margin-bottom: 5px;">PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU
|
||||||
|
PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT PENILAIAN, ATAS INFORMASI YANG
|
||||||
|
DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN DI ANTARA
|
||||||
|
PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI</li>
|
||||||
|
<li style="margin-bottom: 5px;">LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN
|
||||||
|
INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>Demikian laporan penilai jaminan ini di buat secara objektif, tanpa adanya pengaruh baik intern
|
||||||
|
maupun ekstern</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
@include('lpj::penilai.components.signature-approval')
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@include('lpj::penilai.components.footer')
|
@include('lpj::penilai.components.footer')
|
||||||
|
|||||||
@@ -374,94 +374,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
@include('lpj::penilai.components.signature-approval')
|
||||||
@php
|
|
||||||
use Modules\Usermanagement\Models\User;
|
|
||||||
|
|
||||||
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
|
||||||
$imagePathPenilai = storage_path(
|
|
||||||
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$soUser = User::where('id', $senior_officer->id)->first();
|
|
||||||
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
|
||||||
|
|
||||||
$imagePathEO = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('EO Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('EO Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
|
|
||||||
$imagePathDD = storage_path(
|
|
||||||
'app/public/signatures/' .
|
|
||||||
User::role('DD Appraisal')->first()->id .
|
|
||||||
'/' .
|
|
||||||
User::role('DD Appraisal')->first()->sign,
|
|
||||||
);
|
|
||||||
@endphp
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathPenilai))
|
|
||||||
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathSo))
|
|
||||||
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathEO))
|
|
||||||
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;height: 50px">
|
|
||||||
@if (file_exists($imagePathDD))
|
|
||||||
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('PENILAI')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@if ($permohonan->approval_so != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ $senior_officer->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@if ($permohonan->approval_eo != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
@if ($permohonan->approval_dd != null)
|
|
||||||
<td style=" padding: 4px;">
|
|
||||||
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
|
||||||
<span>
|
|
||||||
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
@endif
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
<table style="width: 100%; ">
|
<table style="width: 100%; ">
|
||||||
|
|||||||
105
resources/views/penilai/components/signature-approval.blade.php
Normal file
105
resources/views/penilai/components/signature-approval.blade.php
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
<table style="width: 100%; border-collapse: collapse; text-align: center;">
|
||||||
|
@php
|
||||||
|
use Modules\Usermanagement\Models\User;
|
||||||
|
|
||||||
|
$penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first();
|
||||||
|
$imagePathPenilai = storage_path(
|
||||||
|
'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign,
|
||||||
|
);
|
||||||
|
|
||||||
|
$soUser = User::where('id', $senior_officer->id)->first();
|
||||||
|
$imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign);
|
||||||
|
|
||||||
|
$imagePathEO = storage_path(
|
||||||
|
'app/public/signatures/' .
|
||||||
|
User::role('EO Appraisal')->first()->id .
|
||||||
|
'/' .
|
||||||
|
User::role('EO Appraisal')->first()->sign,
|
||||||
|
);
|
||||||
|
|
||||||
|
$imagePathDD = storage_path(
|
||||||
|
'app/public/signatures/' .
|
||||||
|
User::role('DD Appraisal')->first()->id .
|
||||||
|
'/' .
|
||||||
|
User::role('DD Appraisal')->first()->sign,
|
||||||
|
);
|
||||||
|
@endphp
|
||||||
|
<tr>
|
||||||
|
<td style=" padding: 4px;height: 50px">
|
||||||
|
@if (file_exists($imagePathPenilai))
|
||||||
|
<img src="{{ $imagePathPenilai }}" alt="{{ $imagePathPenilai }}" width="80px">
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
@if ($permohonan->approval_so != null)
|
||||||
|
<td style=" padding: 4px;height: 50px">
|
||||||
|
@if (file_exists($imagePathSo))
|
||||||
|
<img src="{{ $imagePathSo }}" alt="{{ $imagePathSo }}" width="80px">
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
@if ($permohonan->approval_eo != null)
|
||||||
|
<td style=" padding: 4px;height: 50px">
|
||||||
|
@if (file_exists($imagePathEO))
|
||||||
|
<img src="{{ $imagePathEO }}" alt="{{ $imagePathEO }}" width="80px">
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
@if ($permohonan->approval_dd != null)
|
||||||
|
<td style=" padding: 4px;height: 50px">
|
||||||
|
@if (file_exists($imagePathDD))
|
||||||
|
<img src="{{ $imagePathDD }}" alt="{{ $imagePathDD }}" width="80px">
|
||||||
|
@endif
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style=" padding: 4px;">{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
|
||||||
|
<span>
|
||||||
|
{{ ucwords(strtolower('PENILAI')) }}
|
||||||
|
</span>
|
||||||
|
</br>
|
||||||
|
<span>
|
||||||
|
{{ isset($penilai->updated_at) ? formatTanggalIndonesia($penilai->updated_at) : '' }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
@if ($permohonan->approval_so != null)
|
||||||
|
<td style=" padding: 4px;">
|
||||||
|
{{ $senior_officer->name ?? '' }}</br>
|
||||||
|
<span>
|
||||||
|
{{ ucwords(strtolower('SENIOR OFFICER')) }}
|
||||||
|
</span>
|
||||||
|
</br>
|
||||||
|
<span>
|
||||||
|
{{ isset($permohonan->approval_so_at) ? formatTanggalIndonesia($permohonan->approval_so_at) : '' }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($permohonan->approval_eo != null)
|
||||||
|
<td style=" padding: 4px;">
|
||||||
|
{{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
|
||||||
|
<span>
|
||||||
|
{{ ucwords(strtolower('EXECUTIVE OFFICER')) }}
|
||||||
|
</span>
|
||||||
|
</br>
|
||||||
|
<span>
|
||||||
|
{{ isset($permohonan->approval_eo_at) ? formatTanggalIndonesia($permohonan->approval_eo_at) : '' }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
@if ($permohonan->approval_dd != null)
|
||||||
|
<td style=" padding: 4px;">
|
||||||
|
{{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
|
||||||
|
<span>
|
||||||
|
{{ ucwords(strtolower('DEPUTY DIRECTOR')) }}
|
||||||
|
</span>
|
||||||
|
</br>
|
||||||
|
<span>
|
||||||
|
{{
|
||||||
|
isset($permohonan->approval_dd_at) ?
|
||||||
|
formatTanggalIndonesia($permohonan->approval_dd_at) : '' }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
@endif
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }}
|
{{ $permohonan->debiture->branch->name ?? '' }} {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ use Modules\Lpj\Http\Controllers\LaporanMonitoringSoController;
|
|||||||
use Modules\Lpj\Http\Controllers\LaporanDebitureController;
|
use Modules\Lpj\Http\Controllers\LaporanDebitureController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanUserController;
|
use Modules\Lpj\Http\Controllers\LaporanUserController;
|
||||||
use Modules\Lpj\Http\Controllers\LaporanSLAPenilaiController;
|
use Modules\Lpj\Http\Controllers\LaporanSLAPenilaiController;
|
||||||
|
use Modules\Lpj\Http\Controllers\DaftarPustakaController;
|
||||||
|
use Modules\Lpj\Http\Controllers\CategoryDaftarPustakaController;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -743,6 +746,7 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
// laporan user
|
// laporan user
|
||||||
Route::prefix('laporan-user')->name('laporan-user.')->group(function () {
|
Route::prefix('laporan-user')->name('laporan-user.')->group(function () {
|
||||||
Route::get('/', [LaporanUserController::class, 'index'])->name('index');
|
Route::get('/', [LaporanUserController::class, 'index'])->name('index');
|
||||||
|
Route::get('export', [LaporanUserController::class, 'export'])->name('export');
|
||||||
Route::get('api/user-pemohon', [LaporanUserController::class, 'searchUserPemohon'])->name('api.user-pemohon');
|
Route::get('api/user-pemohon', [LaporanUserController::class, 'searchUserPemohon'])->name('api.user-pemohon');
|
||||||
Route::get('datatables', [LaporanUserController::class, 'dataTableForUserPemohon'])->name('datatables');
|
Route::get('datatables', [LaporanUserController::class, 'dataTableForUserPemohon'])->name('datatables');
|
||||||
});
|
});
|
||||||
@@ -766,6 +770,16 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('datatables', [LaporanSLAPenilaiController::class, 'dataForDatatableSLaPenilai'])->name('datatables');
|
Route::get('datatables', [LaporanSLAPenilaiController::class, 'dataForDatatableSLaPenilai'])->name('datatables');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// daftar pustaka
|
||||||
|
Route::resource('daftar-pustaka', DaftarPustakaController::class);
|
||||||
|
|
||||||
|
// category daftar pustaka
|
||||||
|
Route::prefix('category-daftar-pustaka')->name('category-daftar-pustaka.')->group(function () {
|
||||||
|
Route::get('datatables', [CategoryDaftarPustakaController::class, 'dataForDatatables'])->name('datatables');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::resource('category-daftar-pustaka', CategoryDaftarPustakaController::class);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
require __DIR__ . '/registrasi.php';
|
require __DIR__ . '/registrasi.php';
|
||||||
|
|||||||
Reference in New Issue
Block a user