Menghilangkan whitespace yang tidak perlu di dalam file SpkController.php untuk meningkatkan kerapian kode. Juga menambahkan eager loading relasi 'permohonan' saat mengambil data penawaran untuk meningkatkan efisiensi query SQL. Menyesuaikan URL download di file view untuk memastikan ID yang benar digunakan.
245 lines
11 KiB
PHP
245 lines
11 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Http\Controllers;
|
|
|
|
use Carbon\Carbon;
|
|
use App\Http\Controllers\Controller;
|
|
use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
// use Modules\Lpj\Exports\TujuanPenilaianExport;
|
|
// use Modules\Lpj\Http\Requests\TujuanPenilaianRequest;
|
|
// use Modules\Lpj\Models\TujuanPenilaian;
|
|
use Modules\Lpj\Models\PenawaranTender;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Modules\Lpj\Models\Permohonan;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class SpkController extends Controller
|
|
{
|
|
public $user;
|
|
|
|
public function index()
|
|
{
|
|
return view('lpj::spk.index');
|
|
}
|
|
|
|
public function dataForDatatables(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
|
}
|
|
|
|
// Retrieve data from the database
|
|
$query =Permohonan::query()
|
|
->leftJoin('penawaran', 'penawaran.nomor_registrasi','=','permohonan.nomor_registrasi')
|
|
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
|
->where('permohonan.status','=','spk')
|
|
->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', 'permohonan.dokumen as dokumenSPK');
|
|
|
|
// 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('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
|
|
|
$q->orWhere('status', '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->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
|
|
|
$data = $query->with(['permohonan'])->get();
|
|
|
|
$i=0;
|
|
foreach($data as $obj)
|
|
{
|
|
if($obj->tanggal_penilaian_sebelumnya)
|
|
{
|
|
$data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s');
|
|
}
|
|
|
|
if($obj->biaya_kjpp_sebelumnya)
|
|
{
|
|
$data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya);
|
|
|
|
}
|
|
|
|
// date_range
|
|
if($obj->start_date && $obj->end_date)
|
|
{
|
|
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y').' - '.Carbon::parse($obj->end_date)->format('d M Y');
|
|
|
|
}
|
|
|
|
$i++;
|
|
}
|
|
|
|
|
|
// Calculate the page count
|
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
|
|
|
// Calculate the current page number
|
|
$currentPage = 0 + 1;
|
|
|
|
// Return the response data as a JSON object
|
|
return response()->json([
|
|
'draw' => $request->get('draw'),
|
|
'recordsTotal' => $totalRecords,
|
|
'recordsFiltered' => $filteredRecords,
|
|
'pageCount' => $pageCount,
|
|
'page' => $currentPage,
|
|
'totalCount' => $totalRecords,
|
|
'data' => $data
|
|
]);
|
|
}
|
|
|
|
public function viewSpk()
|
|
{
|
|
// return Excel::download(new TujuanPenilaianExport, 'tujuan_penilaian.xlsx');
|
|
|
|
return view('lpj::spk.view');
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
$penawaran = PenawaranTender::find($id);
|
|
// return view('lpj::spk.show', compact('id','permohonan'));
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
|
|
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
|
|
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
|
|
->where('detail_penawaran.status','=',1)
|
|
->where('penawaran.id','=', $id)
|
|
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
|
|
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
|
|
'kjpp.name as kjpp_name',
|
|
'kjpp.address as kjpp_address',
|
|
'jenis_laporan.name as jenis_laporan_name'
|
|
)->first();
|
|
|
|
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
|
|
->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id')
|
|
->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id')
|
|
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name',
|
|
'dokumen_jaminan.address as dokumen_jaminan_address');
|
|
|
|
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
|
|
|
|
return view('lpj::spk.edit', compact('data', 'penawaran'));
|
|
}
|
|
|
|
public function update(Request $request, $id): JsonResponse
|
|
{
|
|
// init
|
|
$data1 = array();
|
|
$dataPermohonan = array();
|
|
// data
|
|
|
|
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
|
|
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
|
|
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
|
|
->where('detail_penawaran.status','=',1)
|
|
->where('penawaran.id','=', $id)
|
|
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
|
|
'kjpp.name as kjpp_name',
|
|
'kjpp.address as kjpp_address',
|
|
'jenis_laporan.name as jenis_laporan_name'
|
|
)->first();
|
|
|
|
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
|
|
->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id')
|
|
->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id')
|
|
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name');
|
|
|
|
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
|
|
|
|
$folderPath = 'uploads/spk/';
|
|
$extension = '.pdf';
|
|
$newFileName = "SPK_".$penawaran->nomor_registrasi."_".Auth::user()->id."_".time(). $extension;
|
|
$newFileNameWithPath = $folderPath . $newFileName;
|
|
|
|
// update table permohonan
|
|
$dataPermohonan=['dokumen' => $newFileNameWithPath];
|
|
$data->update($dataPermohonan);
|
|
// update table permohonan
|
|
|
|
// pdf path
|
|
$spkpenawaran_path = Storage::url($newFileNameWithPath);
|
|
|
|
$pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran'));
|
|
|
|
$content = $pdf->download()->getOriginalContent();
|
|
Storage::put('public/'.$newFileNameWithPath,$content);
|
|
|
|
$data1['status'] = 'success';
|
|
$data1['spkpenawaran_path'] = $spkpenawaran_path;
|
|
$data1['message']['message_success'] = array('Generate SPK PDF successfully');
|
|
|
|
return response()->json($data1);
|
|
}
|
|
|
|
public function dokumennya()
|
|
{
|
|
// return view('lpj::spk.dokumennya');
|
|
$id="3";
|
|
$penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id')
|
|
->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id')
|
|
->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id')
|
|
->where('detail_penawaran.status','=',1)
|
|
->where('penawaran.id','=', $id)
|
|
->select('penawaran.*', 'detail_penawaran.attachment as attachmentku',
|
|
'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran',
|
|
'kjpp.name as kjpp_name',
|
|
'kjpp.address as kjpp_address',
|
|
'jenis_laporan.name as jenis_laporan_name'
|
|
)->first();
|
|
|
|
$permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)
|
|
->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id')
|
|
->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id')
|
|
->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name',
|
|
'dokumen_jaminan.address as dokumen_jaminan_address');
|
|
|
|
$data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first();
|
|
|
|
return view('lpj::spk.dokumennya', compact('data', 'penawaran'));
|
|
}
|
|
|
|
public function download($id) {
|
|
$document = Permohonan::find($id);
|
|
|
|
return response()->download(storage_path('app/public/' .$document->dokumen));
|
|
}
|
|
}
|