From ed4a381c20ff28a0ec534c8228435ebf2edad45c Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Tue, 8 Oct 2024 17:15:00 +0700 Subject: [PATCH] Memperbaiki fitur menu tender di bagian data penawaran --- app/Http/Controllers/TenderController.php | 56 +++++++++++++++---- app/Http/Requests/TenderPenawaranRequest.php | 11 +++- ...24_10_08_075401_update_penawaran_table.php | 30 ++++++++++ ...8_075434_update_detail_penawaran_table.php | 30 ++++++++++ resources/views/penawaran/create.blade.php | 16 ++++-- resources/views/penawaran/edit.blade.php | 9 ++- resources/views/penawaran/index.blade.php | 47 ++++++++++++---- resources/views/penawaran/show.blade.php | 30 ++++++---- .../views/penawaran_ulang/index.blade.php | 11 +++- .../views/penawaran_ulang/show.blade.php | 2 +- 10 files changed, 201 insertions(+), 41 deletions(-) create mode 100644 database/migrations/2024_10_08_075401_update_penawaran_table.php create mode 100644 database/migrations/2024_10_08_075434_update_detail_penawaran_table.php diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index e302c08..d98f7e9 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -5,8 +5,6 @@ namespace Modules\Lpj\Http\Controllers; use Exception; use Illuminate\Http\Request; use Modules\Lpj\Models\KJPP; -use Illuminate\Http\Response; -use Modules\Lpj\Models\Penawaran; use Illuminate\Support\Facades\DB; use Modules\Lpj\Models\Permohonan; use App\Http\Controllers\Controller; @@ -36,8 +34,14 @@ class TenderController extends Controller */ public function penawaran_create($noreg) { - $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $penawaranExists = PenawaranTender::where('nomor_registrasi', '=', $noreg)->exists(); + // Jika nomor_registrasi sudah ada, kembalikan respon 403 Forbidden + if ($penawaranExists) { + abort(403, 'Penawaran dengan nomor registrasi ini sudah ada.'); + } + + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); $status = StatusPermohonan::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); @@ -45,7 +49,7 @@ class TenderController extends Controller $kjpp = KJPP::all(); - return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg')); + return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'noreg', 'permohonan')); } /** @@ -58,12 +62,19 @@ class TenderController extends Controller DB::beginTransaction(); try { - $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); - $validated['nomor_registrasi'] = $penawaran->nomor_registrasi; + // Add created_by/updated_by from the authenticated user + $userId = auth()->user()->id; - $validated['status'] = $request->input('status') ?? 'Tender'; + $validated['nomor_registrasi'] = $permohonan->nomor_registrasi; + $validated['status'] = $request->input('status') ?? 'tender'; + $validated['updated_by'] = $userId; // Updating the record + $permohonan->update($validated); + + // Adding created_by for the new PenawaranTender record + $validated['created_by'] = $userId; $penawaranId = PenawaranTender::create($validated); $kjpps = $request->input('kjpp', []); @@ -71,7 +82,9 @@ class TenderController extends Controller foreach ($kjpps as $kjpp) { PenawaranDetailTender::create([ 'penawaran_id' => $penawaranId->id, - 'kjpp_rekanan_id' => $kjpp + 'kjpp_rekanan_id' => $kjpp, + 'created_by' => $userId, // Set created_by for details + 'updated_by' => $userId ]); } @@ -100,6 +113,8 @@ class TenderController extends Controller $tujuan_penilaian_kjpp = null; $jenis_laporan = null; + $penawaranExists = PenawaranTender::where('nomor_registrasi', $noreg)->exists(); + $penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); // dd($penawaran1->id); if ($penawaran1) { @@ -115,7 +130,7 @@ class TenderController extends Controller // dd($kjpps); - return view('lpj::penawaran.show', compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan')); + return view('lpj::penawaran.show', compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'penawaranExists')); } /** @@ -125,6 +140,7 @@ class TenderController extends Controller { // Find the specific penawaran by its ID $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); $status = StatusPermohonan::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); @@ -135,7 +151,7 @@ class TenderController extends Controller $kjpp = KJPP::all(); - return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps')); + return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan')); } @@ -151,9 +167,20 @@ class TenderController extends Controller try { // Ambil data penawaran berdasarkan nomor registrasi $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + // Ambil ID user yang sedang login + $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' + + // Update data penawaran dan permohonan $penawaran->update($validated); + $permohonan->update($validated); $kjpps = $request->input('kjpp', []); @@ -162,6 +189,8 @@ class TenderController extends Controller if (!in_array($kjpp->kjpp_rekanan_id, $kjpps)) { // Ubah status KJPP lama menjadi 0 $kjpp->status = 0; + $kjpp->created_by = $userId; + $kjpp->updated_by = $userId; // Set updated_by $kjpp->save(); } } @@ -172,10 +201,14 @@ class TenderController extends Controller ->where('kjpp_rekanan_id', $kjpp) ->first(); + // dd($existingDetail); + if ($existingDetail) { // Jika KJPP sudah ada, pastikan statusnya aktif (1) if ($existingDetail->status == 0) { $existingDetail->status = 1; + $existingDetail->created_by = $userId; + $existingDetail->updated_by = $userId; // Set updated_by $existingDetail->save(); } } else { @@ -184,6 +217,8 @@ class TenderController extends Controller 'penawaran_id' => $penawaran->id, 'kjpp_rekanan_id' => $kjpp, 'status' => 1, // Default status untuk KJPP baru adalah 1 + 'created_by' => $userId, // Set created_by untuk data baru + 'updated_by' => $userId, // Set updated_by juga ]); } } @@ -207,6 +242,7 @@ class TenderController extends Controller + /** * Remove the specified resource from storage. */ diff --git a/app/Http/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php index f05313f..6472638 100644 --- a/app/Http/Requests/TenderPenawaranRequest.php +++ b/app/Http/Requests/TenderPenawaranRequest.php @@ -61,16 +61,25 @@ class TenderPenawaranRequest extends FormRequest $validator->after(function ($validator) { $startDate = strtotime($this->input('start_date')); $endDate = strtotime($this->input('end_date')); + $today = strtotime(date('Y-m-d')); if ($endDate < $startDate) { $validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.'); } + if ($startDate < $today) { + $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.'); + } + // Validasi minimal 3 pilihan pada nama_kjpp $namaKjpp = $this->input('kjpp', []); + // jika nama KJPP itu kosong + if (empty($namaKjpp)) { + $validator->errors()->add('kjpp', 'Nama KJPP wajib diisi.'); + } // jika terisi kurang dari 3 item - if (is_array($namaKjpp) && count($namaKjpp) < 3) { + elseif (is_array($namaKjpp) && count($namaKjpp) < 3) { $validator->errors()->add('kjpp', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.'); } }); diff --git a/database/migrations/2024_10_08_075401_update_penawaran_table.php b/database/migrations/2024_10_08_075401_update_penawaran_table.php new file mode 100644 index 0000000..34e6978 --- /dev/null +++ b/database/migrations/2024_10_08_075401_update_penawaran_table.php @@ -0,0 +1,30 @@ +unsignedBigInteger('created_by')->nullable()->after('created_at'); + $table->unsignedBigInteger('updated_by')->nullable()->after('updated_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran', function (Blueprint $table) { + $table->dropColumn('created_by'); + $table->dropColumn('updated_by'); + }); + } +}; diff --git a/database/migrations/2024_10_08_075434_update_detail_penawaran_table.php b/database/migrations/2024_10_08_075434_update_detail_penawaran_table.php new file mode 100644 index 0000000..f4ce896 --- /dev/null +++ b/database/migrations/2024_10_08_075434_update_detail_penawaran_table.php @@ -0,0 +1,30 @@ +unsignedBigInteger('created_by')->nullable()->after('created_at'); + $table->unsignedBigInteger('updated_by')->nullable()->after('updated_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_penawaran', function (Blueprint $table) { + $table->dropColumn('created_by'); + $table->dropColumn('updated_by'); + }); + } +}; diff --git a/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index 8f3161b..bc023e5 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -29,7 +29,7 @@
+ name="nomor_registrasi" readonly value="{{ $permohonan->nomor_registrasi ?? '-' }}">
@@ -38,7 +38,7 @@
+ name="nama_kjpp_sebelumnya" readonly value="">
@@ -47,15 +47,14 @@
+ name="biaya_kjpp_sebelumnya" readonly value="">
+ name="tanggal_penilaian_sebelumnya" readonly value="">
@@ -207,5 +206,12 @@ outline: none; box-shadow: none; } + + @media (prefers-color-scheme: dark) { + input.input-custom { + background: none; + color: var(--tw-gray-600); + } + } @endpush diff --git a/resources/views/penawaran/edit.blade.php b/resources/views/penawaran/edit.blade.php index 1369e67..d94e8d9 100644 --- a/resources/views/penawaran/edit.blade.php +++ b/resources/views/penawaran/edit.blade.php @@ -31,7 +31,7 @@
+ name="nomor_registrasi" readonly value="{{ $permohonan->nomor_registrasi ?? '-' }}">
@@ -212,5 +212,12 @@ outline: none; box-shadow: none; } + + @media (prefers-color-scheme: dark) { + input.input-custom { + background: none; + color: var(--tw-gray-600); + } + } @endpush diff --git a/resources/views/penawaran/index.blade.php b/resources/views/penawaran/index.blade.php index 897182e..e306437 100644 --- a/resources/views/penawaran/index.blade.php +++ b/resources/views/penawaran/index.blade.php @@ -107,6 +107,12 @@ return months[month - 1]; } + + function capitalizeWords(str) { + return str.replace(/\b\w/g, function(char) { + return char.toUpperCase(); + }); + }