Merge remote-tracking branch 'origin/tender' into staging
# Conflicts: # module.json # routes/breadcrumbs.php
This commit is contained in:
@@ -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,6 +41,7 @@ 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'));
|
||||
@@ -50,27 +54,38 @@ class TenderController extends Controller
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
if ($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);
|
||||
$penawaranId = PenawaranTender::create($validated);
|
||||
|
||||
PenawaranTender::create($validated);
|
||||
$kjpps = $request->input('kjpp', []);
|
||||
|
||||
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,27 +95,86 @@ 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'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit($id)
|
||||
public function penawaran_edit($id)
|
||||
{
|
||||
return view('lpj::edit');
|
||||
// Find the specific penawaran by its ID
|
||||
$penawaran = PenawaranTender::find($id);
|
||||
|
||||
$status = StatusPermohonan::all();
|
||||
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||
$jenis_laporan = JenisLaporan::all();
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)->pluck('id')->toArray();
|
||||
|
||||
$kjpp = KJPP::all();
|
||||
|
||||
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id', 'kjpps'));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
public function penawaran_update(TenderPenawaranRequest $request, $id)
|
||||
{
|
||||
//
|
||||
$validated = $request->validated();
|
||||
|
||||
// dd($validated);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
$penawaran = PenawaranTender::find($id);
|
||||
|
||||
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
|
||||
|
||||
$validated['status'] = $request->input('status') ?? 'Tender';
|
||||
|
||||
$penawaran->update($validated);
|
||||
|
||||
$kjpps = $request->input('kjpp', []);
|
||||
|
||||
foreach ($penawaran->penawaranKjpp as $kjpp) {
|
||||
$kjpp->delete(); // Assuming penawaranKjpp is a relationship on the PenawaranTender model
|
||||
}
|
||||
|
||||
foreach ($kjpps as $kjpp) {
|
||||
PenawaranDetailTender::create([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp_rekanan_id' => $kjpp
|
||||
]);
|
||||
}
|
||||
|
||||
// Commit the transaction
|
||||
DB::commit();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.index')
|
||||
->with('success', 'Data Penawaran created successfully');
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', $id)
|
||||
->with('error', 'Validation failed: ' . $e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
|
||||
@@ -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.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
19
app/Models/PenawaranDetailTender.php
Normal file
19
app/Models/PenawaranDetailTender.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\PenawaranDetailTenderFactory;
|
||||
|
||||
class PenawaranDetailTender extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $table = 'detail_penawaran';
|
||||
|
||||
protected $guarded = ['id'];
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class PenawaranTender extends Model
|
||||
@@ -15,4 +16,9 @@ class PenawaranTender extends Model
|
||||
protected $table = 'penawaran';
|
||||
|
||||
protected $guarded = ['id'];
|
||||
|
||||
public function penawaranKjpp()
|
||||
{
|
||||
return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user