penggabungan feature Data Penawaran ke dalam feature Proses Penawaran. Dan merapihkan tampilan index

This commit is contained in:
Andy Chaerudin
2024-11-20 14:49:48 +07:00
parent 38a8fb2d7d
commit 5aaecb5c4f
17 changed files with 726 additions and 74 deletions

View File

@@ -13,12 +13,16 @@ use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Http\Requests\ProsesPenawaranRequest;
use Modules\Lpj\Models\JenisLaporan;
use Modules\Lpj\Models\KJPP;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranDetailTenderLog;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaianKJPP;
class ProsesPenawaranController extends Controller
{
@@ -40,7 +44,51 @@ class ProsesPenawaranController extends Controller
}
// Retrieve data from the database
$query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
// $query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
// penawaran need union with permohonan
$query = PenawaranTender::query()->whereIn('penawaran.status', ['tender', 'proposal-tender'])
->select('penawaran.id',
'penawaran.nomor_registrasi',
'penawaran.code as penawaran_code',
'penawaran.start_date',
'penawaran.end_date',
'penawaran.status as statusnya',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name'
)
->withCount('penawarandetails')
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id', '=', 'penawaran.tujuan_penilaian_kjpp_id');
$permohonanQuery = Permohonan::whereIn('permohonan.status', ['registered'])->where('permohonan.jenis_penilaian_id', '=', 2)
->select('permohonan.id',
'permohonan.nomor_registrasi',
DB::raw('"" as penawaran_code'),
DB::raw('"" as start_date'),
DB::raw('"" as end_date'),
'permohonan.status as statusnya',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
DB::raw('"" as tujuan_penilaian_kjpp_name'),
DB::raw('"-" as penawarandetails_count'))
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id');
$query->union($permohonanQuery);
// penawaran need union with permohonan
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
@@ -76,8 +124,29 @@ class ProsesPenawaranController extends Controller
$filteredRecords = $query->count();
// Get the data for the current page
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
// $data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
$data = $query->get();
// format date
$i = 0;
foreach ($data as $obj) {
// tanggal_permohonan
if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
}
// date_range
$data[$i]->date_range = "-";
if ($obj->start_date && $obj->end_date)
{
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
Carbon::parse($obj->end_date)->format('d M Y');
}
$i++;
}
// format date
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
@@ -826,4 +895,77 @@ class ProsesPenawaranController extends Controller
return response()->json($data);
}
// merger permohonan
/**
* Show the form for creating a new resource.
*/
public function createPenawaran($id)
{
// id ==> permohonan.id
$permohonan = Permohonan::find($id);
// dd($permohonan);
$status = StatusPermohonan::all();
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
$jenis_laporan = JenisLaporan::all();
$kjpp = KJPP::all();
return view('lpj::prosespenawaran.createPenawaran', compact('id', 'status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'permohonan'));
}
public function storePenawaran(ProsesPenawaranRequest $request, $id)
{
$validated = $request->validated();
DB::beginTransaction();
try {
$permohonan = Permohonan::find($id);
$userId = Auth::user()->id;
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
$validated['status'] = 'tender';
$validated['updated_by'] = $userId; // Updating the record
$validated['end_date'] = $request->input('end_date') . ' 23:59:59';
$permohonan->update($validated);
// Adding created_by for the new penawaran record
$validated['created_by'] = $userId;
$validated['code'] = onLastnumberCodePenawaran();
$penawaran = PenawaranTender::create($validated);
$kjpps = $request->input('kjpp', []);
foreach ($kjpps as $kjpp) {
PenawaranDetailTender::create([
'penawaran_id' => $penawaran->id,
'kjpp_rekanan_id' => $kjpp,
'created_by' => $userId, // Set created_by for details
'updated_by' => $userId
]);
}
// Commit the transaction
DB::commit();
return redirect()
->route('tender.prosespenawaran.index')
->with('success', 'Data Penawaran created successfully');
} catch (Exception $e) {
DB::rollBack();
return redirect()
->route('tender.prosespenawaran.createPenawaran', $id)
->with('error', 'Validation failed: ' . $e);
}
}
public function showPermohonan($id)
{
$permohonan = Permohonan::find($id);
return view('lpj::prosespenawaran.showPermohonan', compact('id', 'permohonan'));
}
// merger permohonan
}