Merge branch 'staging' into feature/senior-officer

This commit is contained in:
majid
2024-11-19 11:00:58 +07:00
20 changed files with 664 additions and 233 deletions

View File

@@ -1,119 +1,150 @@
<?php <?php
use Carbon\Carbon; use Carbon\Carbon;
use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Models\HolidayCalendar;
use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranTender;
function formatTanggalIndonesia($date)
{
$carbonDate = Carbon::parse($date);
$indonesianMonths = [
'Januari',
'Februari',
'Maret',
'April',
'Mei',
'Juni',
'Juli',
'Agustus',
'September',
'Oktober',
'November',
'Desember',
];
$month = $indonesianMonths[$carbonDate->month - 1];
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
}
function formatRupiah($number) function formatTanggalIndonesia($date)
{ {
$number = (float) $number; $carbonDate = Carbon::parse($date);
return 'Rp ' . number_format($number, 2, ',', '.'); $indonesianMonths = [
} 'Januari',
'Februari',
'Maret',
'April',
'Mei',
'Juni',
'Juli',
'Agustus',
'September',
'Oktober',
'November',
'Desember',
];
$month = $indonesianMonths[$carbonDate->month - 1];
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
}
function formatTanggalIndonesia2($date)
{
Carbon::setLocale('id');
$waktu = Carbon::parse($date);
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
}
function formatAlamat($alamat) function formatRupiah($number)
{ {
return ($alamat->address ? $alamat->address . ', ' : '') . $number = (float)$number;
(isset($alamat->village) ? $alamat->village->name . ', ' : '') . return 'Rp ' . number_format($number, 2, ',', '.');
(isset($alamat->city) ? $alamat->city->name . ', ' : '') . }
(isset($alamat->province) ? $alamat->province->name . ', ' : '') .
($alamat->postal_code ?? '');
}
// andy add
function checkActiveDateRangePenawaran($id)
{
$penawaran = PenawaranTender::find($id);
$start_date = strtotime($penawaran->start_date); function formatAlamat($alamat)
$end_date = strtotime($penawaran->end_date); {
$todays_date = strtotime(now()); return ($alamat->address ? $alamat->address . ', ' : '') . (isset($alamat->village) ? $alamat->village->name . ', ' : '') . (isset($alamat->city) ? $alamat->city->name . ', ' : '') . (isset($alamat->province) ? $alamat->province->name . ', ' : '') . ($alamat->postal_code ?? '');
}
// andy add
function checkActiveDateRangePenawaran($id)
{
$penawaran = PenawaranTender::find($id);
$start_date = strtotime($penawaran->start_date);
$end_date = strtotime($penawaran->end_date);
$todays_date = strtotime(now());
$allow = true;
if ($todays_date >= $start_date && $todays_date <= $end_date) {
//Penawaran dibuka
$allow = true; $allow = true;
} else { if ($todays_date >= $start_date && $todays_date <= $end_date) {
if ($todays_date < $start_date) { //Penawaran dibuka
//Penawaran Belum dibuka
$allow = true; $allow = true;
} else { } else {
//Penawaran sudah ditutup if ($todays_date < $start_date) {
//Penawaran Belum dibuka
$allow = true;
} else {
//Penawaran sudah ditutup
$allow = false;
}
}
return $allow;
}
function checkKelengkapanDetailKJPP($id)
{
$allow = true;
// DB::enableQueryLog();
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
$query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where(
function ($query) {
// no_proposal
$query->orWhere('no_proposal', '', "");
$query->orWhereNull('no_proposal');
// tgl_proposal
$query->orWhere('tgl_proposal', '', "");
$query->orWhereNull('tgl_proposal');
$query->orWhere('biaya_penawaran', '', "");
$query->orWhereNull('biaya_penawaran');
$query->orWhere('attachment', '', "");
$query->orWhereNull('attachment');
$query->orWhere('dokumen_persetujuan', '', "");
$query->orWhereNull('dokumen_persetujuan');
},
)->get();
// $sql = DB::getQueryLog();
if (sizeof($query) > 0) {
$allow = false; $allow = false;
} }
return $allow;
} }
return $allow; // convert
} function convertSlug($slug)
{
$words = explode('-', $slug);
function checkKelengkapanDetailKJPP($id) foreach ($words as $index => $word) {
{ $words[$index] = strtoupper($word);
$allow = true; }
// DB::enableQueryLog();
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
$query = PenawaranDetailTender::select('id')
->where('penawaran_id', '=', $id)
->where('status','=',1)
->where(function ($query) {
// no_proposal
$query->orWhere('no_proposal', '', "");
$query->orWhereNull('no_proposal');
// tgl_proposal
$query->orWhere('tgl_proposal', '', "");
$query->orWhereNull('tgl_proposal');
$query->orWhere('biaya_penawaran', '', "");
$query->orWhereNull('biaya_penawaran');
$query->orWhere('attachment', '', ""); return implode(' ', $words);
$query->orWhereNull('attachment');
$query->orWhere('dokumen_persetujuan', '', "");
$query->orWhereNull('dokumen_persetujuan');
})->get();
// $sql = DB::getQueryLog();
if (sizeof($query) > 0) {
$allow = false;
} }
return $allow; // andy add
}
// convert
function convertSlug($slug) {
$words = explode('-', $slug);
foreach ($words as $index => $word) { function hitungHariKerja($tanggalMulai, $tanggalSelesai)
$words[$index] = strtoupper($word); {
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
$hariKerja = 0;
$tanggalSekarang = $tanggalMulai->copy();
// Ambil semua tanggal libur dari tabel holiday calendar
$tanggalLibur = HolidayCalendar::whereBetween('date', [$tanggalMulai, $tanggalSelesai])->pluck('date')->map(
function ($item) {
return Carbon::parse($item)->format('Y-m-d');
},
)->toArray();
while ($tanggalSekarang <= $tanggalSelesai) {
// Cek apakah hari ini bukan Sabtu atau Minggu dan bukan hari libur
if (!$tanggalSekarang->isWeekend() && !in_array($tanggalSekarang->format('Y-m-d'), $tanggalLibur)) {
$hariKerja++;
}
$tanggalSekarang->addDay();
}
return $hariKerja;
} }
return implode(' ', $words);
}
// andy add

View File

@@ -3,13 +3,20 @@
namespace Modules\Lpj\Http\Controllers; namespace Modules\Lpj\Http\Controllers;
use Exception; use Exception;
use Barryvdh\DomPDF\PDF;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Modules\Lpj\Models\KJPP; use Modules\Lpj\Models\KJPP;
use Modules\Location\Models\City;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Permohonan;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use Modules\Location\Models\Village;
use Modules\Lpj\Models\JenisLaporan; 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\PenawaranTender;
use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaianKJPP; use Modules\Lpj\Models\TujuanPenilaianKJPP;
@@ -66,12 +73,14 @@ class TenderController extends Controller
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
// Add created_by/updated_by from the authenticated user // Add created_by/updated_by from the authenticated user
$userId = auth()->user()->id; $userId = Auth::user()->id;
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi; $validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
$validated['status'] = $request->input('status') ?? 'tender'; $validated['status'] = $request->input('status') ?? 'tender';
$validated['updated_by'] = $userId; // Updating the record $validated['updated_by'] = $userId; // Updating the record
$validated['end_date'] = $request->input('end_date') . ' 17:00:00';
// dd($validated['end_date']);
$permohonan->update($validated); $permohonan->update($validated);
// Adding created_by for the new PenawaranTender record // Adding created_by for the new PenawaranTender record
@@ -117,6 +126,15 @@ class TenderController extends Controller
$penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists(); $penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists();
$penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
if (!$penawaran1) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
}
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); // dd($penawaran1->id);
if ($penawaran1) { if ($penawaran1) {
$penawaran = $penawaran1; $penawaran = $penawaran1;
@@ -141,8 +159,18 @@ class TenderController extends Controller
{ {
// Find the specific penawaran by its ID // Find the specific penawaran by its ID
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $penawaran = PenawaranTender::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!');
}
$permohonan = Permohonan::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!');
}
$status = StatusPermohonan::all(); $status = StatusPermohonan::all();
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
$jenis_laporan = JenisLaporan::all(); $jenis_laporan = JenisLaporan::all();
@@ -152,6 +180,8 @@ class TenderController extends Controller
$kjpp = KJPP::all(); $kjpp = KJPP::all();
// dd($penawaran);
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan')); return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan'));
} }
@@ -171,13 +201,15 @@ class TenderController extends Controller
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
// Ambil ID user yang sedang login // Ambil ID user yang sedang login
$userId = auth()->user()->id; $userId = Auth::user()->id;
// Jangan ubah created_by untuk data yang sudah ada // Jangan ubah created_by untuk data yang sudah ada
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi; $validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
$validated['status'] = $request->input('status') ?? 'tender'; $validated['status'] = $request->input('status') ?? 'tender';
$validated['created_by'] = $userId; $validated['created_by'] = $userId;
$validated['updated_by'] = $userId; // Hanya update 'updated_by' $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 // Update data penawaran dan permohonan
$penawaran->update($validated); $penawaran->update($validated);
@@ -228,7 +260,7 @@ class TenderController extends Controller
DB::commit(); DB::commit();
return redirect() return redirect()
->route('tender.penawaran.index') ->route('tender.penawaran.ulang.index')
->with('success', 'Data Penawaran updated successfully'); ->with('success', 'Data Penawaran updated successfully');
} catch (Exception $e) { } catch (Exception $e) {
// Rollback jika ada kesalahan // Rollback jika ada kesalahan
@@ -247,19 +279,46 @@ class TenderController extends Controller
public function showSuratTender($noreg) public function showSuratTender($noreg)
{ {
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran // Kalau tidak ketemu nomor registrasi dengan tabel penawaran
if (!$penawaran) { if (!$penawaran) {
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg]) return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); ->with('error', 'Anda Belum Membuat Penawaran. 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!');
}
// 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();
date_default_timezone_set('Asia/Jakarta');
$now = date('Y-m-d H:i:s');
// Jika batas tanggal penawaran sudah lewat // 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]) return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!'); ->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) public function datatablesPenawaran(Request $request)
@@ -414,4 +473,31 @@ class TenderController extends Controller
// Kembalikan hasil pengecekan sebagai JSON // Kembalikan hasil pengecekan sebagai JSON
return response()->json(['exists' => $exists]); 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

@@ -0,0 +1,10 @@
<?php
namespace Modules\Lpj\Models;
use Modules\Basicdata\Models\HolidayCalendar as BasicdataHolidayCalendar;
class HolidayCalendar extends BasicdataHolidayCalendar
{
}

View File

@@ -22,4 +22,9 @@ class PenawaranDetailTender extends Model
{ {
return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id'); 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 // menambahkan relasi tujuan penilaian KJPP
public function tujuanPenilaianKjpp() 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() public function permohonan()
@@ -46,6 +46,4 @@ class PenawaranTender extends Model
{ {
return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id'); return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id');
} }
} }

View File

@@ -2,6 +2,7 @@
namespace Modules\Lpj\Models; namespace Modules\Lpj\Models;
use Illuminate\Support\Facades\Storage;
use Modules\Lpj\Database\Factories\PermohonanFactory; use Modules\Lpj\Database\Factories\PermohonanFactory;
use Modules\Lpj\Services\PermohonanHistoryService; use Modules\Lpj\Services\PermohonanHistoryService;
use Modules\Usermanagement\Models\User; use Modules\Usermanagement\Models\User;
@@ -39,7 +40,6 @@ class Permohonan extends Base
'registrasi_at', 'registrasi_at',
'jenis_penilaian_id', 'jenis_penilaian_id',
'region_id', 'region_id',
'attachment'
]; ];
protected static function boot() protected static function boot()
@@ -70,12 +70,7 @@ class Permohonan extends Base
$fileName = time() . '_' . $file->getClientOriginalName(); $fileName = time() . '_' . $file->getClientOriginalName();
$filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public');
// Delete old file if it exists $permohonan->dokumen = $filePath;
if ($permohonan->attachment) {
Storage::disk('public')->delete($permohonan->attachment);
}
$permohonan->attachment = $filePath;
} }
} }
@@ -87,7 +82,7 @@ class Permohonan extends Base
$keterangan = request()->input('keterangan'); // Get keterangan from request $keterangan = request()->input('keterangan'); // Get keterangan from request
$beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : []; $beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : [];
$afterRequest = $permohonan->toArray(); $afterRequest = $permohonan->toArray();
$file = $permohonan->attachment ? Storage::disk('public')->path($permohonan->attachment) : null; $file = $permohonan->dokumen ? Storage::disk('public')->path($permohonan->dokumen) : null;
$historyService->createHistory( $historyService->createHistory(
$permohonan, $permohonan,

View File

@@ -7,15 +7,8 @@ use Modules\Lpj\Models\PermohonanHistory;
class PermohonanHistoryService class PermohonanHistoryService
{ {
public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $file = null) public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $filePath = null)
{ {
$filePath = null;
if ($file) {
$filePath = $file->store('permohonan_history_files', 'public');
}
try { try {
$history = PermohonanHistory::create([ $history = PermohonanHistory::create([
'permohonan_id' => $permohonan->id, 'permohonan_id' => $permohonan->id,

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('penawaran', function (Blueprint $table) {
$table->datetime('end_date')->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('penawaran', function (Blueprint $table) {
$table->date('end_date')->change();
});
}
};

View File

@@ -12,34 +12,34 @@ class LpjDatabaseSeeder extends Seeder
public function run(): void public function run(): void
{ {
$this->call([ $this->call([
BranchSeeder::class, // BranchSeeder::class,
CurrencySeeder::class, // CurrencySeeder::class,
JenisFasilitasKreditSeeder::class, // JenisFasilitasKreditSeeder::class,
JenisLegalitasJaminanSeeder::class, // JenisLegalitasJaminanSeeder::class,
JenisJaminanSeeder::class, // JenisJaminanSeeder::class,
JenisDokumenSeeder::class, // JenisDokumenSeeder::class,
TujuanPenilaianSeeder::class, // TujuanPenilaianSeeder::class,
NilaiPlatformSeeder::class, // NilaiPlatformSeeder::class,
HubunganPemilikJaminanSeeder::class, // HubunganPemilikJaminanSeeder::class,
HubunganPenghuniJaminanSeeder::class, // HubunganPenghuniJaminanSeeder::class,
ArahMataAnginSeeder::class, // ArahMataAnginSeeder::class,
StatusPermohonanSeeder::class, // StatusPermohonanSeeder::class,
RegionSeeder::class, // RegionSeeder::class,
TeamsSeeder::class, // TeamsSeeder::class,
TeamUsersSeeder::class, // TeamUsersSeeder::class,
JenisPenilaianSeeder::class, // JenisPenilaianSeeder::class,
TujuanPenilaianKJPPSeeder::class, // TujuanPenilaianKJPPSeeder::class,
IjinUsahaSeeder::class, // IjinUsahaSeeder::class,
JenisLaporanSeeder::class, // JenisLaporanSeeder::class,
DebitureSeeder::class, // DebitureSeeder::class,
PermohonanSeeder::class, // PermohonanSeeder::class,
PemilikJaminanSeeder::class, PemilikJaminanSeeder::class,
DokumenJaminanSeeder::class, // DokumenJaminanSeeder::class,
DetailDokumenJaminanSeeder::class, // DetailDokumenJaminanSeeder::class,
KJPPSeeder::class, // KJPPSeeder::class,
PenawaranSeeder::class, // PenawaranSeeder::class,
DetailPenawaranSeeder::class, // DetailPenawaranSeeder::class,
PenilaianSeeder::class, // PenilaianSeeder::class,
]); ]);
} }
} }

View File

@@ -59,7 +59,7 @@
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": ["administrator", "admin"] "roles": ["administrator", "admin"]
} }
] ]
}, },
{ {
@@ -69,7 +69,7 @@
"classes": "", "classes": "",
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": ["administrator", "admin"], "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"],
"sub": [ "sub": [
{ {
"title": "Otorisasi Penawaran", "title": "Otorisasi Penawaran",
@@ -77,7 +77,7 @@
"classes": "", "classes": "",
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": ["administrator", "admin"] "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"]
} }
] ]
}, },

View File

@@ -15,8 +15,6 @@
Tambah Data Penawaran Tambah Data Penawaran
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary"
title="Detail"><i class="ki-outline ki-abstract-26"></i> Detail</a>
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i <a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> class="ki-filled ki-exit-left"></i>
Back</a> Back</a>

View File

@@ -19,7 +19,7 @@
<a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary" title="Detail"> <a href="{{ route('tender.penawaran.show', $noreg) }}" class="btn btn-xs btn-primary" title="Detail">
<i class="ki-outline ki-abstract-26"></i> Detail <i class="ki-outline ki-abstract-26"></i> Detail
</a> </a>
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"> <a href="{{ route('tender.penawaran.ulang.index') }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back <i class="ki-filled ki-exit-left"></i> Back
</a> </a>
</div> </div>
@@ -39,8 +39,13 @@
Nama KJPP Sebelumnya Nama KJPP Sebelumnya
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
@php
$nama_kjpp = $penawaran->nama_kjpp_sebelumnya;
$nama = explode(' - ', $nama_kjpp)[1] ?? '';
@endphp
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text" <input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
name="nama_kjpp_sebelumnya" readonly value="{{ $penawaran->nama_kjpp_sebelumnya ?? '' }}"> name="nama_kjpp_sebelumnya" readonly value="{{ $nama !== null ? $nama : '' }}">
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -49,7 +54,8 @@
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text" <input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
name="biaya_kjpp_sebelumnya" readonly value="{{ $penawaran->biaya_kjpp_sebelumnya ?? '' }}"> name="biaya_kjpp_sebelumnya" readonly
value="{{ $penawaran->biaya_kjpp_sebelumnya !== null ? formatRupiah($penawaran->biaya_kjpp_sebelumnya) : '' }}">
</div> </div>
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Tanggal Penilaian Sebelumnya Tanggal Penilaian Sebelumnya
@@ -57,7 +63,7 @@
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text" <input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
name="tanggal_penilaian_sebelumnya" readonly name="tanggal_penilaian_sebelumnya" readonly
value="{{ $penawaran->tanggal_penilaian_sebelumnya ?? '' }}"> value="{{ $penawaran->tanggal_penilaian_sebelumnya !== null ? formatTanggalIndonesia($penawaran->tanggal_penilaian_sebelumnya) : '' }}">
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -132,8 +138,8 @@
</div> </div>
- -
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input class="input @error('end_date') border-danger @enderror" type="date" name="end_date" <input class="input @error('end_date') border-danger @enderror" type="date" name="end_date"
value="{{ old('end_date', $penawaran->end_date) }}"> value="{{ old('end_date', $penawaran->end_date ? date('Y-m-d', strtotime($penawaran->end_date)) : '') }}">
@error('end_date') @error('end_date')
<em class="alert text-danger text-sm">{{ $message }}</em> <em class="alert text-danger text-sm">{{ $message }}</em>
@enderror @enderror

View File

@@ -134,9 +134,6 @@
} else { } else {
// Jika tidak ada, tampilkan tombol "Tambah Penawaran" // Jika tidak ada, tampilkan tombol "Tambah Penawaran"
actionDiv.innerHTML = ` actionDiv.innerHTML = `
<a class="btn btn-sm btn-icon btn-clear btn-warning" title="Detail" href="/tender/penawaran/${nomor_registrasi}/show">
<i class="ki-outline ki-eye"></i>
</a>
<a href="/tender/penawaran/${nomor_registrasi}/create" class="btn btn-sm btn-icon btn-clear btn-primary" title="Penawaran"> <a href="/tender/penawaran/${nomor_registrasi}/create" class="btn btn-sm btn-icon btn-clear btn-primary" title="Penawaran">
<i class="ki-outline ki-notepad-edit"></i> <i class="ki-outline ki-notepad-edit"></i>
</a> </a>

View File

@@ -20,8 +20,14 @@
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-primary" <a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-primary"
title="Penawaran"><i class="ki-filled ki-arrow-circle-right"></i> Tambah Penawaran</a> title="Penawaran"><i class="ki-filled ki-arrow-circle-right"></i> Tambah Penawaran</a>
@endif @endif
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i @if ($penawaranExists)
class="ki-filled ki-exit-left"></i> Back</a> <a href="{{ route('tender.penawaran.ulang.index') }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@endif
@if (!$penawaranExists)
<a href="{{ route('tender.penawaran.index') }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@endif
</div> </div>
</div> </div>
<div class="card-body grid gap-5"> <div class="card-body grid gap-5">

View File

@@ -12,43 +12,148 @@
Surat Tender Surat Tender
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
@if (isset($penawaran->nomor_registrasi)) <a href="{{ route('tender.penawaran.downloadSuratTender', $noreg) }}" class="btn btn-xs btn-light">
<a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i <img src="{{ asset('img/pdf.png') }}" width="25" alt="pdf"></img>Download
class="ki-filled ki-exit-left"></i> Back</a> </span>
@else @if (isset($penawaran->nomor_registrasi))
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i <a href="{{ route('tender.penawaran.editPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a> class="ki-filled ki-exit-left"></i> Back</a>
@endif @else
<a href="{{ route('tender.penawaran.createPenawaran', $noreg) }}" class="btn btn-xs btn-info"><i
class="ki-filled ki-exit-left"></i> Back</a>
@endif
</div> </div>
</div> </div>
<div class="card-body grid gap-5"> <div class="card-body grid gap-5">
<p>Dear <p>Dear
<span class="font-bold">{{ ucwords(auth()->user()->name) ?? 'Tidak Ada' }}</span> <span class="font-bold">
@php
$allPeople = [];
foreach ($penawaran->penawaranKjpp as $kjpp) {
if ($kjpp->kjpp->nama_pic_admin) {
$allPeople[] = ucwords($kjpp->kjpp->nama_pic_admin);
}
if ($kjpp->kjpp->detail_nama_pic_admin) {
try {
$decoded = json_decode($kjpp->kjpp->detail_nama_pic_admin);
if ($decoded) {
foreach ($decoded as $admin) {
if (isset($admin->nama_pic_admin)) {
$allPeople[] = ucwords($admin->nama_pic_admin);
}
}
}
} catch (\Exception $e) {
// Handle invalid JSON silently
}
}
}
$allPeople = array_filter($allPeople);
$totalPeople = count($allPeople);
@endphp
@if ($totalPeople > 0)
@foreach ($allPeople as $index => $person)
{{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }}
@endforeach
@else
Tidak Ada
@endif
</span>
</p> </p>
<p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span <p>Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
class="font-bold">{{ ucwords($penawaran->permohonan->user->name) }}</span>, tujuan penilaian class="font-bold">{{ ucwords($permohonan->debiture->name) }}</span>, tujuan penilaian
untuk <span class="font-bold"> untuk <span class="font-bold">
@foreach ($penawaran->tujuanPenilaianKJPP as $tujuanPenilaianKJPP) {{ $penawaran->tujuanPenilaianKJPP->name }}
{{ $tujuanPenilaianKJPP->name }}
@endforeach
</span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>, </span>, laporan dalam bentuk <span class="font-bold">{{ $penawaran->jenisLaporan->name }}</span>,
dengan data-data sebagai berikut :</p> dengan data-data sebagai berikut :</p>
<ul> <ul>
<li>Aset Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li> <li>Aset Jaminan:
<li>Lokasi Jaminan: <span class="font-bold">[otomasi dari tabel permohonan]</span></li> <span class="font-bold">
<li>LT / LB: <span class="font-bold">[otomasi dari tabel permohonan]</span></li> @foreach ($permohonan->debiture->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
</span>
</li>
<li>Lokasi Jaminan:
<span class="font-bold">
@foreach ($permohonan->debiture->documents as $document)
{{ $document->address }}
@if (isset($document->jenisJaminan))
, Kel.
@foreach ($villages as $village)
{{ $village->name }}
@endforeach
, Kec.
@foreach ($districts as $district)
{{ $district->name }}
@endforeach
,
@foreach ($cities as $city)
{{ ucwords(strtolower($city->name)) }}
@endforeach
,
@foreach ($provinces as $province)
{{ $province->name }}
@endforeach
@endif
@endforeach
</span>
</li>
<li>Luas Tanah / Luas Bangunan:
<span class="font-bold">
@php
$luas_tanah = null;
$luas_bangunan = null;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
@php $luas_tanah = $details->luas_tanah; @endphp
@endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
@php $luas_bangunan = $details->luas_bangunan; @endphp
@endif
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</span>
</li>
</ul> </ul>
<p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p> <p>Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.</p>
<p>Mohon proposal dapat saya terima segera, sebelum <p>Mohon proposal dapat saya terima segera, sebelum
<span class="font-bold">{{ formatTanggalIndonesia($penawaran->end_date) }} pukul 17.00 WIB</span> <span class="font-bold">{{ formatTanggalIndonesia2($penawaran->end_date) }}</span>
</p> </p>
<p>Best Regards, <p>Best Regards,
<span class="font-bold">[otomasi dari nama dan tanda tangan user penginput]</span> <div class="font-bold">
Sub Direktorat Appraisal <img src="{{ asset('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<p>
{{ $permohonan->user->name }}
</p>
</div>
Sub Direktorat Appraisal
</p> </p>
<p>PT. Bank Artha Graha Internasional, Tbk.<br> <p>PT. Bank Artha Graha Internasional, Tbk.<br>
Gedung Bank Artha Graha, Lantai 3<br> Gedung Bank Artha Graha, Lantai 3<br>
Jl. Kwiitang Raya No 24-26, Jakarta Pusat - 10420.<br> Jl. Kwitang Raya No 24-26, Jakarta Pusat - 10420.<br>
Telp. 021 - 3903040 (H)</p> Telp. 021 - 3903040 (H)</p>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,178 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Surat Tender | {{ formatTanggalIndonesia(now()) }}</title>
<style>
body {
font-family: Calibri;
margin: 20px;
color: #333;
}
.container {
max-width: 800px;
margin: auto;
line-height: 1.6;
}
.content {
margin-top: 20px;
white-space: pre-line;
/* To handle line breaks in text */
}
.content-max {
margin-top: 20px;
max-width: 800px;
}
.flex-wrap {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.important {
font-weight: bold;
color: black;
}
.signature {
margin-top: 40px;
font-family: 'Brush Script MT', cursive;
font-size: 1.2em;
}
.footer {
margin-top: 20px;
font-size: 0.9em;
color: #555;
}
</style>
</head>
<body>
<div class="container">
Dear <span class="important">
@php
$allPeople = [];
foreach ($penawaran->penawaranKjpp as $kjpp) {
if ($kjpp->kjpp->nama_pic_admin) {
$allPeople[] = ucwords($kjpp->kjpp->nama_pic_admin);
}
if ($kjpp->kjpp->detail_nama_pic_admin) {
try {
$decoded = json_decode($kjpp->kjpp->detail_nama_pic_admin);
if ($decoded) {
foreach ($decoded as $admin) {
if (isset($admin->nama_pic_admin)) {
$allPeople[] = ucwords($admin->nama_pic_admin);
}
}
}
} catch (\Exception $e) {
// Handle invalid JSON silently
}
}
}
$allPeople = array_filter($allPeople);
$totalPeople = count($allPeople);
@endphp
@if ($totalPeople > 0)
@foreach ($allPeople as $index => $person)
{{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }}
@endforeach
@else
Tidak Ada
@endif
</span>
<div class="content">
Mohon untuk dibuatkan proposal jasa appraisal atas nama <span
class="important">{{ $permohonan->debiture->name }}</span>, tujuan penilaian untuk <span
class="important">{{ $penawaran->tujuanPenilaianKJPP->name }}</span>, laporan dalam bentuk <span
class="important">{{ $penawaran->jenisLaporan->name }}</span>, dengan data-data sebagai berikut:
</div>
<div class="content-max">
Aset Jaminan: @foreach ($permohonan->debiture->documents as $document)
{{ $document->jenisJaminan->name }}
@endforeach
<span class="flex-wrap">Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document)
{{ $document->address }}, Kel. @foreach ($villages as $village)
{{ $village->name }}
@endforeach, Kec. @foreach ($districts as $district)
{{ $district->name }}
@endforeach,@foreach ($cities as $city)
{{ ucwords(strtolower($city->name)) }}
@endforeach,@foreach ($provinces as $province)
{{ $province->name }}
@endforeach
@endforeach
</span>
Luas Tanah / Luas Bangunan:
@php
$luas_tanah = null;
$luas_bangunan = null;
@endphp
@foreach ($permohonan->debiture->documents as $document)
@foreach ($document->detail as $detail)
@php
$details = json_decode($detail->details);
@endphp
@if (is_object($details))
@if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
@php $luas_tanah = $details->luas_tanah; @endphp
@endif
@if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
@php $luas_bangunan = $details->luas_bangunan; @endphp
@endif
@endif
@endforeach
@endforeach
@if ($luas_tanah !== null && $luas_bangunan !== null)
{{ $luas_tanah }} m<sup>2</sup> / {{ $luas_bangunan }} m<sup>2</sup>
@elseif ($luas_tanah !== null)
{{ $luas_tanah }} m<sup>2</sup>
@elseif ($luas_bangunan !== null)
{{ $luas_bangunan }} m<sup>2</sup>
@endif
</div>
<div class="content">
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. <br />
Mohon proposal dapat saya terima segera, sebelum <span
class="important">{{ formatTanggalIndonesia2($penawaran->end_date) }}</span>
</div>
<div class="signature">
Best Regards,<br />
<img src="{{ public_path('storage/signatures/' . $permohonan->user->id . '/' . $permohonan->user->sign) }}"
alt="{{ $permohonan->user->name }}" width="200">
<p>
{{ $permohonan->user->name }}
</p>
</div>
<div class="footer">
PT. Bank Artha Graha Internasional, Tbk.<br>
Gedung Bank Artha Graha, Lantai 3<br>
Jl. Kwitang Raya No 24-26, Jakarta Pusat - 10420.<br>
Telp. 021 - 3903040 (H)
</div>
</div>
</body>
</html>

View File

@@ -9,7 +9,7 @@
@include('lpj::component.detail-jaminan',['backLink' => 'authorization.index']) @include('lpj::component.detail-jaminan',['backLink' => 'authorization.index'])
<div class="card"> <div class="card">
<form action="{{ route('authorization.update', $permohonan->id) }}" method="POST" id="authorizationForm"> <form action="{{ route('authorization.update', $permohonan->id) }}" method="POST" id="authorizationForm" enctype="multipart/form-data">
<input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_method" value="PUT">
@csrf @csrf
<div class="card-body lg:py-7.5"> <div class="card-body lg:py-7.5">
@@ -27,7 +27,7 @@
Upload File Revisi Upload File Revisi
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="file" class="file-input" id="revisionFile" name="revisionFile"> <input type="file" class="file-input" id="revisionFile" name="attachment">
<em class="alert text-danger text-sm hidden" id="file-message"></em> <em class="alert text-danger text-sm hidden" id="file-message"></em>
</div> </div>
</div> </div>
@@ -65,7 +65,7 @@
keteranganMessage.textContent = ''; keteranganMessage.textContent = '';
} }
if (!revisionFile.files.length) { if (event.submitter === revisiBtn && !revisionFile.files.length) {
event.preventDefault(); event.preventDefault();
fileMessage.textContent = 'File revisi harus diunggah.'; fileMessage.textContent = 'File revisi harus diunggah.';
fileMessage.classList.remove('hidden'); fileMessage.classList.remove('hidden');

View File

@@ -6,7 +6,7 @@
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan',['backLink' => 'prmohonan.index']) @include('lpj::component.detail-jaminan', ['backLink' => 'permohonan.index'])
<div class="card"> <div class="card">
<form action="{{ route('permohonan.print', $permohonan->id) }}" method="GET"> <form action="{{ route('permohonan.print', $permohonan->id) }}" method="GET">

View File

@@ -1,21 +1,22 @@
<?php <?php
use Illuminate\Support\Facades\Route;
use Modules\Lpj\Http\Controllers\SpkController;
use Modules\Lpj\Http\Controllers\RegistrasiController; use Modules\Lpj\Http\Controllers\RegistrasiController;
use Modules\Lpj\Http\Controllers\ProsesPenawaranController; use Modules\Lpj\Http\Controllers\ProsesPenawaranController;
use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController;
use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController;
use Modules\Lpj\Http\Controllers\SpkController;
use Modules\Lpj\Http\Controllers\RegistrasiFinalController; use Modules\Lpj\Http\Controllers\RegistrasiFinalController;
use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController;
use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController;
Route::middleware(['auth'])->group(function () { Route::middleware(['auth'])->group(function () {
// andy add // andy add
// Route::name('registrasi.')->prefix('registrasi')->group(function () { // Route::name('registrasi.')->prefix('registrasi')->group(function () {
Route::controller(RegistrasiController::class)->group(function(){ Route::controller(RegistrasiController::class)->group(function () {
// Route::get('/', [RegistrasiController::class, 'index'])->name('registrasi.index'); // Route::get('/', [RegistrasiController::class, 'index'])->name('registrasi.index');
Route::get('/registrasi', 'index')->name('registrasi.index'); Route::get('/registrasi', 'index')->name('registrasi.index');
Route::get('/registrasi/datatables', 'dataForDatatables')->name('registrasi.datatables'); Route::get('/registrasi/datatables', 'dataForDatatables')->name('registrasi.datatables');
// show data // show data
Route::get('/registrasi/{registrasi}', 'show')->name('registrasi.show'); Route::get('/registrasi/{registrasi}', 'show')->name('registrasi.show');
Route::post('registrasi/showData', 'setData')->name('registrasi.showData'); Route::post('registrasi/showData', 'setData')->name('registrasi.showData');
@@ -23,49 +24,45 @@ Route::middleware(['auth'])->group(function () {
Route::post('registrasi/setData', 'setData')->name('registrasi.setData'); Route::post('registrasi/setData', 'setData')->name('registrasi.setData');
Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit'); Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit');
Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update'); Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update');
}); });
// andy add // andy add
Route::name('tender.')->prefix('tender')->group(function () { Route::name('tender.')->prefix('tender')->group(function () {
// Proses Penawaran // Proses Penawaran
Route::controller(ProsesPenawaranController::class)->group(function(){ Route::controller(ProsesPenawaranController::class)->group(function () {
Route::get('prosespenawaran', 'index')->name('prosespenawaran.index'); Route::get('prosespenawaran', 'index')->name('prosespenawaran.index');
Route::get('prosespenawaran/datatables', 'dataForDatatables')->name('prosespenawaran.datatables'); Route::get('prosespenawaran/datatables', 'dataForDatatables')->name('prosespenawaran.datatables');
Route::get('prosespenawaran/datatableskjppList_1', 'dataForDatatablesKJPPList_1')->name('prosespenawaran.datatableskjppList_1'); Route::get('prosespenawaran/datatableskjppList_1', 'dataForDatatablesKJPPList_1')->name('prosespenawaran.datatableskjppList_1');
Route::get('/prosespenawaran/{prosespenawaran}', 'show')->name('prosespenawaran.show');
// show data Route::get('prosespenawaran/{prosespenawaran}/edit', 'edit')->name('prosespenawaran.edit');
Route::get('/prosespenawaran/{prosespenawaran}', 'show')->name('prosespenawaran.show');
Route::post('prosespenawaran/setData', 'setData')->name('prosespenawaran.setData');
Route::get('prosespenawaran/{prosespenawaran}/edit', 'edit')->name('prosespenawaran.edit');
// update one Route::post('prosespenawaran/setData', 'setData')->name('prosespenawaran.setData');
Route::put('/prosespenawaran/{prosespenawaran}', 'update')->name('prosespenawaran.update');
// update all
Route::put('/prosespenawaranAll/{prosespenawaranAll}', 'updateAll')->name('prosespenawaran.updateAll');
// update draft
Route::put('/prosespenawaranDraft/{prosespenawaranDraft}', 'updateDraft')->name('prosespenawaran.updateDraft');
// delete KJPP, status set = 0
Route::put('/prosespenawaranKJPPStatus/{prosespenawaranKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaran.updateKJPPStatus');
// add KJPP to detail_penawaran
Route::post('prosespenawaran/store', 'store')->name('prosespenawaran.store');
Route::post('prosespenawaran/storeUlang', 'storeUlang')->name('prosespenawaran.storeUlang');
// edit proses penawaran ulang // update one
Route::get('prosespenawaran/{prosespenawaran}/editulang', 'editulang')->name('prosespenawaran.editulang'); Route::put('/prosespenawaran/{prosespenawaran}', 'update')->name('prosespenawaran.update');
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang'); // update all
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang'); Route::put('/prosespenawaranAll/{prosespenawaranAll}', 'updateAll')->name('prosespenawaran.updateAll');
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang'); // update draft
Route::put('/prosespenawaranDraft/{prosespenawaranDraft}', 'updateDraft')->name('prosespenawaran.updateDraft');
// delete KJPP, status set = 0
Route::put('/prosespenawaranKJPPStatus/{prosespenawaranKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaran.updateKJPPStatus');
// add KJPP to detail_penawaran
Route::post('prosespenawaran/store', 'store')->name('prosespenawaran.store');
Route::post('prosespenawaran/storeUlang', 'storeUlang')->name('prosespenawaran.storeUlang');
// edit proses penawaran ulang
Route::get('prosespenawaran/{prosespenawaran}/editulang', 'editulang')->name('prosespenawaran.editulang');
Route::post('prosespenawaran/setDataUlang', 'setDataUlang')->name('prosespenawaran.setDataUlang');
Route::put('/prosespenawaran2/{prosespenawaran2}', 'updateulang')->name('prosespenawaran.updateulang');
Route::put('/prosespenawaranKJPPStatusUlang/{prosespenawaranKJPPStatusUlang}', 'updateKJPPStatusUlang')->name('prosespenawaran.updateKJPPStatusUlang');
}); });
// Proses Penawaran Ulang // Proses Penawaran Ulang
Route::controller(ProsesPenawaranUlangController::class)->group(function(){ Route::controller(ProsesPenawaranUlangController::class)->group(function () {
Route::get('prosespenawaranulang', 'index')->name('prosespenawaranulang.index'); Route::get('prosespenawaranulang', 'index')->name('prosespenawaranulang.index');
Route::get('prosespenawaranulang/datatables', 'dataForDatatables')->name('prosespenawaranulang.datatables'); Route::get('prosespenawaranulang/datatables', 'dataForDatatables')->name('prosespenawaranulang.datatables');
Route::get('prosespenawaranulang/{prosespenawaranulang}/edit', 'edit')->name('prosespenawaranulang.edit'); Route::get('prosespenawaranulang/{prosespenawaranulang}/edit', 'edit')->name('prosespenawaranulang.edit');
@@ -76,14 +73,13 @@ Route::middleware(['auth'])->group(function () {
// update KJPP data, detail penawaran // update KJPP data, detail penawaran
Route::put('/prosespenawaranulang/{prosespenawaranulang}', 'update')->name('prosespenawaranulang.update'); Route::put('/prosespenawaranulang/{prosespenawaranulang}', 'update')->name('prosespenawaranulang.update');
// delete KJPP, status set = 0 // delete KJPP, status set = 0
Route::put('/prosespenawaranulangKJPPStatus/{prosespenawaranulangKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaranulang.updateKJPPStatus'); Route::put('/prosespenawaranulangKJPPStatus/{prosespenawaranulangKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaranulang.updateKJPPStatus');
}); });
}); });
Route::name('otorisasitender.')->prefix('otorisasitender')->group(function () { Route::name('otorisasitender.')->prefix('otorisasitender')->group(function () {
Route::controller(OtorisasiPenawaranController::class)->group(function(){ Route::controller(OtorisasiPenawaranController::class)->group(function () {
Route::get('penawaran', 'index')->name('penawaran.index'); Route::get('penawaran', 'index')->name('penawaran.index');
Route::get('penawaran/datatables', 'dataForDatatables')->name('penawaran.datatables'); Route::get('penawaran/datatables', 'dataForDatatables')->name('penawaran.datatables');
Route::get('penawaran/{penawaran}/edit', 'edit')->name('penawaran.edit'); Route::get('penawaran/{penawaran}/edit', 'edit')->name('penawaran.edit');
@@ -94,23 +90,22 @@ Route::middleware(['auth'])->group(function () {
// update KJPP data, detail penawaran // update KJPP data, detail penawaran
Route::put('/otorisasiPenawaranKJPP/{penawaran}', 'otorisasiPenawaranKJPP')->name('penawaran.otorisasiPenawaranKJPP'); Route::put('/otorisasiPenawaranKJPP/{penawaran}', 'otorisasiPenawaranKJPP')->name('penawaran.otorisasiPenawaranKJPP');
}); });
}); });
Route::controller(SpkController::class)->group(function(){ Route::controller(SpkController::class)->group(function () {
Route::get('/spk/dokumennya', 'dokumennya')->name('spk.dokumennya'); Route::get('/spk/dokumennya', 'dokumennya')->name('spk.dokumennya');
Route::get('/spk', 'index')->name('spk.index'); Route::get('/spk', 'index')->name('spk.index');
Route::get('/spk/datatables', 'dataForDatatables')->name('spk.datatables'); Route::get('/spk/datatables', 'dataForDatatables')->name('spk.datatables');
Route::get('/spk/{spk}', 'show')->name('spk.show'); Route::get('/spk/{spk}', 'show')->name('spk.show');
Route::get('/spk/{spk}/edit', 'edit')->name('spk.edit'); Route::get('/spk/{spk}/edit', 'edit')->name('spk.edit');
Route::put('/spk/{spk}', 'update')->name('spk.update'); Route::put('/spk/{spk}', 'update')->name('spk.update');
Route::get('spk/{spk}/download', 'download')->name('spk.download'); Route::get('spk/{spk}/download', 'download')->name('spk.download');
}); });
Route::controller(RegistrasiFinalController::class)->group(function(){ Route::controller(RegistrasiFinalController::class)->group(function () {
Route::get('/registrasifinal', 'index')->name('registrasifinal.index'); Route::get('/registrasifinal', 'index')->name('registrasifinal.index');
Route::get('/registrasifinal/datatables', 'dataForDatatables')->name('registrasifinal.datatables'); Route::get('/registrasifinal/datatables', 'dataForDatatables')->name('registrasifinal.datatables');
Route::get('/registrasifinal/{registrasifinal}', 'show')->name('registrasifinal.show'); Route::get('/registrasifinal/{registrasifinal}', 'show')->name('registrasifinal.show');
@@ -121,4 +116,3 @@ Route::middleware(['auth'])->group(function () {
Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update'); Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update');
}); });
}); });

View File

@@ -393,6 +393,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name( Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name(
'penawaran.showSuratTender' 'penawaran.showSuratTender'
); );
Route::get('penawaran/{noreg}/suratTender/downloadpdf', [TenderController::class, 'downloadSuratTender'])->name('penawaran.downloadSuratTender');
// Penawaran Ulang // Penawaran Ulang
Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name( Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name(