From f0c2f873c4706b57310ed571a0ba07a510139e12 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 4 Oct 2024 17:25:41 +0700 Subject: [PATCH] Membuat Menu Tender di Data Penawaran: Tambah Data Penawaran dan Detail Data Penawaran --- app/Http/Controllers/TenderController.php | 61 +++++-- app/Http/Requests/TenderPenawaranRequest.php | 17 +- app/Models/PenawaranDetailTender.php | 19 +++ ...24_10_04_072406_update_penawaran_table.php | 28 +++ ...4_080210_update_detail_penawaran_table.php | 32 ++++ module.json | 8 - resources/views/penawaran/create.blade.php | 143 ++++++++-------- resources/views/penawaran/index.blade.php | 12 +- resources/views/penawaran/show.blade.php | 160 +++++++++++++++--- 9 files changed, 341 insertions(+), 139 deletions(-) create mode 100644 app/Models/PenawaranDetailTender.php create mode 100644 database/migrations/2024_10_04_072406_update_penawaran_table.php create mode 100644 database/migrations/2024_10_04_080210_update_detail_penawaran_table.php diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 4fca97d..2e26ed1 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -2,19 +2,22 @@ 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; use Maatwebsite\Excel\Facades\Excel; -use Modules\Lpj\Models\PenawaranTender; -use Modules\Lpj\Exports\PenawaranTenderExport; -use Modules\Lpj\Http\Requests\TenderPenawaranRequest; use Modules\Lpj\Models\JenisLaporan; -use Modules\Lpj\Models\KJPP; -use Modules\Lpj\Models\Permohonan; +use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaianKJPP; +use Modules\Lpj\Models\PenawaranDetailTender; +use Modules\Lpj\Exports\PenawaranTenderExport; +use Modules\Lpj\Http\Requests\TenderPenawaranRequest; class TenderController extends Controller { @@ -38,9 +41,11 @@ class TenderController extends Controller $status = StatusPermohonan::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); $jenis_laporan = JenisLaporan::all(); - $kjpp = KJPP::all(); - return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id')); + $kjpps = PenawaranDetailTender::pluck('kjpp_rekanan_id')->toArray(); + $kjpp = KJPP::whereNotIn('id', $kjpps)->get(); + + return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id', 'kjpps')); } /** @@ -50,27 +55,42 @@ class TenderController extends Controller { $validated = $request->validated(); - if ($validated) { + // dd($validated); + + DB::beginTransaction(); + + try { $penawaran = PenawaranTender::find($id); $validated['nomor_registrasi'] = $penawaran->nomor_registrasi; - // Mengatasi null untuk nama_kjpp_sebelumnya, biaya_kjpp_sebelumnya, dan tanggal_penilaian_sebelumnya - $validated['nama_kjpp_sebelumnya'] = json_encode($request->input('nama_kjpp_sebelumnya') ?? []); - $validated['biaya_kjpp_sebelumnya'] = $request->input('biaya_kjpp_sebelumnya') ?? ''; - $validated['tanggal_penilaian_sebelumnya'] = $request->input('tanggal_penilaian_sebelumnya') ?? ''; + $validated['status'] = $request->input('status') ?? 'Tender'; + // dd($validated['status']); - // dd($validated); + $penawaranId = PenawaranTender::create($validated); - PenawaranTender::create($validated); + $kjpps = $request->input('kjpp', []); + + // loop untuk insert data users ke tabel teams_users + foreach ($kjpps as $kjpp) { + PenawaranDetailTender::create([ + 'penawaran_id' => $penawaranId->id, + 'kjpp_rekanan_id' => $kjpp + ]); + } + + // Commit the transaction + DB::commit(); return redirect() ->route('tender.penawaran.index') ->with('success', 'Data Penawaran created successfully'); - } else { + } catch (Exception $e) { + DB::rollBack(); + return redirect() ->route('tender.penawaran.createPenawaran', $id) - ->with('error', 'Validation failed'); + ->with('error', 'Validation failed: ' . $e); } } @@ -80,9 +100,14 @@ class TenderController extends Controller public function penawaran_show($id) { $penawaran = PenawaranTender::find($id); - $kjpps = KJPP::find($id); + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray(); + $kjpps = KJPP::whereIn('id', $detail_penawaran)->get(); + $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::where('id', $penawaran->tujuan_penilaian_kjpp_id)->get(); + $jenis_laporan = JenisLaporan::where('id', $penawaran->jenis_laporan_id)->get(); - return view('lpj::penawaran.show', compact('id', 'penawaran', 'kjpps')); + // dd($kjpps); + + return view('lpj::penawaran.show', compact('id', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan')); } /** diff --git a/app/Http/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php index 63e0b8b..3ea1309 100644 --- a/app/Http/Requests/TenderPenawaranRequest.php +++ b/app/Http/Requests/TenderPenawaranRequest.php @@ -12,17 +12,17 @@ class TenderPenawaranRequest extends FormRequest public function rules(): array { $rules = [ - 'nama_kjpp_sebelumnya' => 'nullable|array', - 'nama_kjpp_sebelumnya.*' => 'exists:kjpp,name', + 'nama_kjpp_sebelumnya' => 'nullable', 'biaya_kjpp_sebelumnya' => 'nullable|numeric', 'tanggal_penilaian_sebelumnya' => 'nullable', 'nomor_registrasi' => 'required', + 'kjpp.*' => 'exists:kjpp,id', 'tujuan_penilaian_kjpp_id' => 'required', 'jenis_laporan_id' => 'required', 'start_date' => 'required', 'end_date' => 'required', 'catatan' => 'nullable', - 'status' => 'required' + 'status' => 'nullable' ]; if ($this->method() == 'PUT') { @@ -53,7 +53,6 @@ class TenderPenawaranRequest extends FormRequest 'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!', 'start_date.required' => 'Tanggal Awal Wajib diisi!', 'end_date.required' => 'Tanggal Akhir Wajib diisi!', - 'status.required' => 'Status Wajib diisi!' ]; } @@ -67,12 +66,12 @@ class TenderPenawaranRequest extends FormRequest $validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.'); } - // Validasi minimal 3 pilihan pada nama_kjpp_sebelumnya - $namaKjppSebelumnya = $this->input('nama_kjpp_sebelumnya', []); + // Validasi minimal 3 pilihan pada nama_kjpp + $namaKjpp = $this->input('kjpp', []); - // Abaikan jika array kosong, tetapi validasi jika terisi kurang dari 3 item - if (!empty($namaKjppSebelumnya) && is_array($namaKjppSebelumnya) && count($namaKjppSebelumnya) < 3) { - $validator->errors()->add('nama_kjpp_sebelumnya', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.'); + // jika terisi kurang dari 3 item + if (is_array($namaKjpp) && count($namaKjpp) < 3) { + $validator->errors()->add('kjpp', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.'); } }); } diff --git a/app/Models/PenawaranDetailTender.php b/app/Models/PenawaranDetailTender.php new file mode 100644 index 0000000..85b2532 --- /dev/null +++ b/app/Models/PenawaranDetailTender.php @@ -0,0 +1,19 @@ +string('status')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran', function (Blueprint $table) { + $table->string('status')->change(); + }); + } +}; diff --git a/database/migrations/2024_10_04_080210_update_detail_penawaran_table.php b/database/migrations/2024_10_04_080210_update_detail_penawaran_table.php new file mode 100644 index 0000000..25e6d73 --- /dev/null +++ b/database/migrations/2024_10_04_080210_update_detail_penawaran_table.php @@ -0,0 +1,32 @@ +string('biaya_penawaran')->nullable()->change(); + $table->string('attachment')->nullable()->change(); + $table->string('dokumen_persetujuan')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_penawaran', function (Blueprint $table) { + $table->string('biaya_penawaran')->change(); + $table->string('attachment')->change(); + $table->string('dokumen_persetujuan')->change(); + }); + } +}; diff --git a/module.json b/module.json index 14514c4..7222a11 100644 --- a/module.json +++ b/module.json @@ -42,14 +42,6 @@ "attributes": [], "permission": "", "roles": [] - }, - { - "title": "Data Penawaran Ulang", - "path": "tender.penawaran_ulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] } ] }, diff --git a/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index 7f41fd6..7891851 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -28,11 +28,34 @@ Nomor Registrasi
- - @error('nomor_registrasi') - {{ $message }} - @enderror + +
+ +
+ +
+ +
+
+
+ +
+ +
+ +
+
@@ -49,44 +72,22 @@
- + @foreach ($kjpp as $row) - + @if (isset($kjpp)) + + @endif @endforeach - @error('nama_kjpp_sebelumnya') - {{ $message }} - @enderror -
-
-
- -
- - @error('biaya_kjpp_sebelumnya') - {{ $message }} - @enderror -
- -
- - @error('tanggal_penilaian_sebelumnya') + @error('kjpp') {{ $message }} @enderror
@@ -113,6 +114,39 @@ {{ $message }} @enderror
+ +
+ +
+ + @error('start_date') + {{ $message }} + @enderror +
+ - +
+ + @error('end_date') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+
@@ -137,39 +171,8 @@
-
- - @error('start_date') - {{ $message }} - @enderror -
- -
- - @error('end_date') - {{ $message }} - @enderror -
-
-
- -
- - @error('catatan') - {{ $message }} - @enderror -
-
-
-