membuat fitur download surat tender dalam bentuk pdf part 1

This commit is contained in:
2024-11-13 18:07:57 +07:00
parent e2061a3f5d
commit c1f66b23c3
11 changed files with 441 additions and 96 deletions

View File

@@ -25,6 +25,13 @@ function formatTanggalIndonesia($date)
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
}
function formatTanggalIndonesia2($date)
{
\Carbon\Carbon::setLocale('id');
$waktu = \Carbon\Carbon::parse($date);
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
}
function formatRupiah($number)
{
@@ -96,8 +103,9 @@ function checkKelengkapanDetailKJPP($id)
}
// convert
function convertSlug($slug) {
function convertSlug($slug)
{
$words = explode('-', $slug);
foreach ($words as $index => $word) {
@@ -107,4 +115,3 @@ function convertSlug($slug) {
return implode(' ', $words);
}
// andy add

View File

@@ -3,13 +3,20 @@
namespace Modules\Lpj\Http\Controllers;
use Exception;
use Barryvdh\DomPDF\PDF;
use Illuminate\Http\Request;
use Modules\Lpj\Models\KJPP;
use Modules\Location\Models\City;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\Permohonan;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Location\Models\Village;
use Modules\Lpj\Models\JenisLaporan;
use Modules\Location\Models\District;
use Modules\Location\Models\Province;
use Illuminate\Support\Facades\Storage;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaianKJPP;
@@ -66,12 +73,14 @@ class TenderController extends Controller
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
// Add created_by/updated_by from the authenticated user
$userId = auth()->user()->id;
$userId = Auth::user()->id;
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
$validated['status'] = $request->input('status') ?? 'tender';
$validated['updated_by'] = $userId; // Updating the record
$validated['end_date'] = $request->input('end_date') . ' 17:00:00';
// dd($validated['end_date']);
$permohonan->update($validated);
// Adding created_by for the new PenawaranTender record
@@ -117,6 +126,11 @@ class TenderController extends Controller
$penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists();
$penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
if ($penawaran1->status != 'tender') {
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
}
// dd($penawaran1->id);
if ($penawaran1) {
$penawaran = $penawaran1;
@@ -143,6 +157,14 @@ class TenderController extends Controller
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
if (!$penawaran) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
}
if ($penawaran->status != 'tender') {
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
}
$status = StatusPermohonan::all();
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
$jenis_laporan = JenisLaporan::all();
@@ -152,6 +174,8 @@ class TenderController extends Controller
$kjpp = KJPP::all();
// dd($penawaran);
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan'));
}
@@ -171,13 +195,15 @@ class TenderController extends Controller
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
// Ambil ID user yang sedang login
$userId = auth()->user()->id;
$userId = Auth::user()->id;
// Jangan ubah created_by untuk data yang sudah ada
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
$validated['status'] = $request->input('status') ?? 'tender';
$validated['created_by'] = $userId;
$validated['updated_by'] = $userId; // Hanya update 'updated_by'
$validated['end_date'] = $request->input('end_date') . ' 17:00:00';
// dd($validated['end_date']);
// Update data penawaran dan permohonan
$penawaran->update($validated);
@@ -247,19 +273,46 @@ class TenderController extends Controller
public function showSuratTender($noreg)
{
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
if ($penawaran->status != 'tender') {
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
}
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
if ($permohonan->debiture->documents->isEmpty()) {
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
foreach ($permohonan->debiture->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
$province_permohonan = $document->province_code;
}
$villages = Village::where('code', $village_permohonan)->get();
$districts = District::where('code', $district_permohonan)->get();
$cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get();
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
if (!$penawaran) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
}
date_default_timezone_set('Asia/Jakarta');
$now = date('Y-m-d H:i:s');
// Jika batas tanggal penawaran sudah lewat
if ($penawaran->end_date < date('Y-m-d')) {
if ($penawaran->end_date < $now) {
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
}
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg'));
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
}
public function datatablesPenawaran(Request $request)
@@ -414,4 +467,31 @@ class TenderController extends Controller
// Kembalikan hasil pengecekan sebagai JSON
return response()->json(['exists' => $exists]);
}
public function downloadSuratTender($noreg)
{
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
if ($penawaran->status != 'tender') {
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
}
foreach ($permohonan->debiture->documents as $document) {
$village_permohonan = $document->village_code;
$district_permohonan = $document->district_code;
$city_permohonan = $document->city_code;
$province_permohonan = $document->province_code;
}
$villages = Village::where('code', $village_permohonan)->get();
$districts = District::where('code', $district_permohonan)->get();
$cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get();
$pdf = app('dompdf.wrapper'); // create an instance of the PDF class
$pdf->loadView('lpj::penawaran.surat_tender_download', compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
return $pdf->download('surat_tender' . time() . '.pdf');
}
}

View File

@@ -22,4 +22,9 @@ class PenawaranDetailTender extends Model
{
return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id');
}
public function kjpp(): BelongsTo
{
return $this->belongsTo(KJPP::class, 'kjpp_rekanan_id', 'id');
}
}

View File

@@ -34,7 +34,7 @@ class PenawaranTender extends Model
// menambahkan relasi tujuan penilaian KJPP
public function tujuanPenilaianKjpp()
{
return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id','id');
return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id', 'id');
}
public function permohonan()
@@ -46,6 +46,4 @@ class PenawaranTender extends Model
{
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
}
}