diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 7de57f0..e302c08 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -34,9 +34,10 @@ class TenderController extends Controller /** * Show the form for creating a new resource. */ - public function penawaran_create($id) + public function penawaran_create($noreg) { - $penawaran = PenawaranTender::find($id); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $status = StatusPermohonan::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); @@ -44,20 +45,20 @@ class TenderController extends Controller $kjpp = KJPP::all(); - return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id')); + return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg')); } /** * Store a newly created resource in storage. */ - public function penawaran_store(TenderPenawaranRequest $request, $id) + public function penawaran_store(TenderPenawaranRequest $request, $noreg) { $validated = $request->validated(); DB::beginTransaction(); try { - $penawaran = PenawaranTender::find($id); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $validated['nomor_registrasi'] = $penawaran->nomor_registrasi; @@ -84,7 +85,7 @@ class TenderController extends Controller DB::rollBack(); return redirect() - ->route('tender.penawaran.createPenawaran', $id) + ->route('tender.penawaran.createPenawaran', $noreg) ->with('error', 'Validation failed: ' . $e); } } @@ -92,89 +93,120 @@ class TenderController extends Controller /** * Show the specified resource. */ - public function penawaran_show($id) + public function penawaran_show($noreg) { - $penawaran = PenawaranTender::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(); + $penawaran = null; + $kjpps = null; + $tujuan_penilaian_kjpp = null; + $jenis_laporan = null; + + $penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + // dd($penawaran1->id); + if ($penawaran1) { + $penawaran = $penawaran1; + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran1->id)->where('status', '=', 1)->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(); + } else { + $penawaran2 = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + $penawaran = $penawaran2; + } // dd($kjpps); - return view('lpj::penawaran.show', compact('id', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan')); + return view('lpj::penawaran.show', compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan')); } /** * Show the form for editing the specified resource. */ - public function penawaran_edit($id) + public function penawaran_edit($noreg) { // Find the specific penawaran by its ID - $penawaran = PenawaranTender::find($id); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $status = StatusPermohonan::all(); $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); $jenis_laporan = JenisLaporan::all(); - $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray(); + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where('status', '=', 1)->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')); + return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps')); } /** * Update the specified resource in storage. */ - public function penawaran_update(TenderPenawaranRequest $request, $id) + public function penawaran_update(TenderPenawaranRequest $request, $noreg) { $validated = $request->validated(); - // dd($validated); - DB::beginTransaction(); try { - $penawaran = PenawaranTender::find($id); - + // Ambil data penawaran berdasarkan nomor registrasi + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); $validated['nomor_registrasi'] = $penawaran->nomor_registrasi; - - $validated['status'] = $request->input('status') ?? 'Tender'; - + $validated['status'] = $request->input('status') ?? 'tender'; $penawaran->update($validated); $kjpps = $request->input('kjpp', []); + // Ubah status KJPP lama menjadi 0 jika tidak ada dalam request foreach ($penawaran->penawaranKjpp as $kjpp) { - $kjpp->delete(); // Assuming penawaranKjpp is a relationship on the PenawaranTender model + if (!in_array($kjpp->kjpp_rekanan_id, $kjpps)) { + // Ubah status KJPP lama menjadi 0 + $kjpp->status = 0; + $kjpp->save(); + } } + // Tangani penambahan atau perubahan KJPP baru foreach ($kjpps as $kjpp) { - PenawaranDetailTender::create([ - 'penawaran_id' => $penawaran->id, - 'kjpp_rekanan_id' => $kjpp - ]); + $existingDetail = PenawaranDetailTender::where('penawaran_id', $penawaran->id) + ->where('kjpp_rekanan_id', $kjpp) + ->first(); + + if ($existingDetail) { + // Jika KJPP sudah ada, pastikan statusnya aktif (1) + if ($existingDetail->status == 0) { + $existingDetail->status = 1; + $existingDetail->save(); + } + } else { + // Buat data baru jika tidak ada dalam database + PenawaranDetailTender::create([ + 'penawaran_id' => $penawaran->id, + 'kjpp_rekanan_id' => $kjpp, + 'status' => 1, // Default status untuk KJPP baru adalah 1 + ]); + } } - // Commit the transaction + // Commit transaksi DB::commit(); return redirect() ->route('tender.penawaran.index') - ->with('success', 'Data Penawaran created successfully'); + ->with('success', 'Data Penawaran updated successfully'); } catch (Exception $e) { + // Rollback jika ada kesalahan DB::rollBack(); return redirect() - ->route('tender.penawaran.createPenawaran', $id) - ->with('error', 'Validation failed: ' . $e); + ->route('tender.penawaran.createPenawaran', $noreg) + ->with('error', 'Validation failed: ' . $e->getMessage()); } } + + /** * Remove the specified resource from storage. */ @@ -190,15 +222,19 @@ class TenderController extends Controller } // Retrieve data from the database - $query = PenawaranTender::query()->where('status', '=', 'Registered'); + $query = Permohonan::query()->where('status', '=', 'registered')->where('jenis_penilaian_id', '=', 2); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { - $q->where('code', 'LIKE', "%$search%"); - $q->orWhere('nama_kjpp_sebelumnya', 'LIKE', "%$search%"); - $q->orWhere('tanggal_penilaian_sebelumnya', 'LIKE', "%$search%"); + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } @@ -225,7 +261,7 @@ class TenderController extends Controller $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -247,16 +283,108 @@ class TenderController extends Controller public function exportPenawaran() { - return Excel::download(new PenawaranTenderExport, 'kjpp.xlsx'); + return Excel::download(new PenawaranTenderExport, 'penawarantender.xlsx'); + } + + // penawaran ulang + public function penawaran_ulang_index() + { + return view('lpj::penawaran_ulang/index'); + } + + public function datatablesPenawaranUlang(Request $request) + { + if (is_null($this->user) || !$this->user->can('penawaran_ulang.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where('status', '=', 'tender')->where('jenis_penilaian_id', '=', 2); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function penawaran_ulang_show($noreg) + { + $penawaran = null; + $kjpps = null; + $tujuan_penilaian_kjpp = null; + $jenis_laporan = null; + + $penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + // dd($penawaran1->id); + if ($penawaran1) { + $penawaran = $penawaran1; + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran1->id)->where('status', '=', 1)->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(); + } else { + $penawaran2 = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + $penawaran = $penawaran2; + } + + // dd($kjpps); + + return view('lpj::penawaran_ulang.show', compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan')); } public function proses_penawaran_index() { return view('lpj::proses_penawaran/index'); } - - public function penawaran_ulang_index() - { - return view('lpj::penawaran_ulang/index'); - } } diff --git a/app/Http/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php index 3ea1309..f05313f 100644 --- a/app/Http/Requests/TenderPenawaranRequest.php +++ b/app/Http/Requests/TenderPenawaranRequest.php @@ -26,7 +26,7 @@ class TenderPenawaranRequest extends FormRequest ]; if ($this->method() == 'PUT') { - $rules['code'] = 'required|max:50|unique:penawaran,code,' . $this->id; + $rules['code'] = 'required|max:50'; } else { $rules['code'] = 'required|max:50|unique:penawaran,code'; } diff --git a/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index 7891851..8f3161b 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -1,12 +1,12 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render(request()->route()->getName(), request()->route('id')) }} + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} @endsection @section('content')
-
+ @csrf
@@ -15,8 +15,8 @@ Tambah Data Penawaran
- Detail + Detail Back diff --git a/resources/views/penawaran/edit.blade.php b/resources/views/penawaran/edit.blade.php index 144cfa6..1369e67 100644 --- a/resources/views/penawaran/edit.blade.php +++ b/resources/views/penawaran/edit.blade.php @@ -1,22 +1,22 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render(request()->route()->getName(), request()->route('id')) }} + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} @endsection @section('content')
- + @csrf @method('PUT')
+ @@ -36,16 +38,32 @@ - - Nomor Penawaran + + Nomor Registrasi - - Nama KJPP Sebelumnya + + Tanggal Permohonan - - Tanggal Penilaian Sebelumnya + + User Pemohon + + + + Cabang Pemohon + + + + Debitur + + + + Tujuan Penilaian + + + + Status Action @@ -109,38 +127,50 @@ return checkbox.outerHTML.trim(); }, }, - code: { - title: 'Nomor Penawaran', + nomor_registrasi: { + title: 'Nomor Registrasi', }, - nama_kjpp_sebelumnya: { - title: 'Nama KJPP Sebelumnya', + tanggal_permohonan: { + title: 'Tanggal Permohonan', render: (item, data) => { - const nama = data.nama_kjpp_sebelumnya; - if (nama === null || nama === '') { - return 'Tidak Ada' - } else { - return nama; - } + return `${formatDate(new Date(data.tanggal_permohonan))}` } }, - tanggal_penilaian_sebelumnya: { - title: 'Tanggal Penilaian Sebelumnya', + user_id: { + title: 'User Pemohon', render: (item, data) => { - const tanggal = data.tanggal_penilaian_sebelumnya; - if (!tanggal) { - return 'Tidak ada'; - } - return formatDate(new Date(tanggal)); - } + return `${data.user.name}`; + }, + }, + branch_id: { + title: 'Cabang Pemohon', + render: (item, data) => { + return `${data.branch.name}`; + }, + }, + debitur_id: { + title: 'Debitur', + render: (item, data) => { + return `${data.debiture.name}`; + }, + }, + tujuan_penilaian_id: { + title: 'Tujuan Penilaian', + render: (item, data) => { + return `${data.tujuan_penilaian.name}`; + }, + }, + status: { + title: 'Status' }, actions: { title: 'Action', render: (item, data) => { return `
- + - + diff --git a/resources/views/penawaran/show.blade.php b/resources/views/penawaran/show.blade.php index 9716e4f..d0ed980 100644 --- a/resources/views/penawaran/show.blade.php +++ b/resources/views/penawaran/show.blade.php @@ -33,7 +33,7 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render(request()->route()->getName(), request()->route('id')) }} + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} @endsection @section('content') @@ -44,10 +44,10 @@ Detail Penawaran @@ -71,6 +71,20 @@

+
+ + @if (isset($penawaran->status)) +

+ {{ ucwords($penawaran->status) }} +

+ @else +

+ Tidak Ada +

+ @endif +
-
- - @if (isset($penawaran->status)) -

- {{ $penawaran->status }} -

- @else -

- Tidak Ada -

- @endif -
@endsection diff --git a/resources/views/penawaran_ulang/index.blade.php b/resources/views/penawaran_ulang/index.blade.php index 037539a..522488f 100644 --- a/resources/views/penawaran_ulang/index.blade.php +++ b/resources/views/penawaran_ulang/index.blade.php @@ -7,16 +7,185 @@ @section('content')
-
-
+
+

Data Penawaran Ulang

- +
+
+ +
+ +
- {{-- @include('lpj::debitur.form') --}} +
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
+
+
@endsection + +@push('scripts') + + + +@endpush diff --git a/resources/views/penawaran_ulang/show.blade.php b/resources/views/penawaran_ulang/show.blade.php new file mode 100644 index 0000000..bdee9eb --- /dev/null +++ b/resources/views/penawaran_ulang/show.blade.php @@ -0,0 +1,196 @@ +@php + function formatTanggalIndonesia($date) + { + $carbonDate = \Carbon\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) + { + // Convert to float if the input is a string + $number = (float) $number; + + return 'Rp ' . number_format($number, 2, ',', '.'); + } +@endphp + + +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} +@endsection + +@section('content') +
+
+
+

+ Detail Penawaran Ulang +

+ +
+
+
+ +
+

+ {{ $penawaran->nomor_registrasi ?? '' }} +

+
+ +
+

+ {{ $penawaran->code ?? '' }} +

+
+
+
+ + @if (isset($penawaran->status)) +

+ {{ ucwords($penawaran->status) }} +

+ @else +

+ Tidak Ada +

+ @endif +
+
+ +
+ @if (isset($penawaran->nama_kjpp_sebelumnya) && !empty($penawaran->nama_kjpp_sebelumnya)) +
+ {{ $penawaran->nama_kjpp_sebelumnya }} +
+ @else +
+ Tidak ada +
+ @endif +
+ +

+ @if (isset($penawaran->biaya_kjpp_sebelumnya)) + {{ formatRupiah($penawaran->biaya_kjpp_sebelumnya) }} + @else + {{ formatRupiah(0) }} + @endif +

+
+
+ + @if (isset($penawaran->tanggal_penilaian_sebelumnya) && !empty($penawaran->tanggal_penilaian_sebelumnya)) +

+ {{ formatTanggalIndonesia($penawaran->tanggal_penilaian_sebelumnya) }} +

+ @else +

+ Tidak Ada +

+ @endif +
+
+ +

+ @if (isset($tujuan_penilaian_kjpp)) + @foreach ($tujuan_penilaian_kjpp as $tpk) + {{ $tpk->name }} + @endforeach + @else + Tidak Ada + @endif +

+ +

+ @if (isset($jenis_laporan)) + @foreach ($jenis_laporan as $jl) + {{ $jl->name }} + @endforeach + @else + Tidak Ada + @endif +

+
+
+ +

+ {{ formatTanggalIndonesia($penawaran->start_date) }} - + {{ formatTanggalIndonesia($penawaran->end_date) }} +

+
+
+ + @if (isset($penawaran->catatan)) +

+ {{ $penawaran->catatan }} +

+ @else +

+ Tidak Ada +

+ @endif +
+
+ +
+ @if (isset($kjpps) && !empty(json_decode($kjpps, true))) + @foreach ($kjpps as $kjpp) + @if (isset($kjpp)) +
+ {{ $kjpp->name }}
+ @endif + @endforeach + @else +
Tidak Ada
+ @endif +
+
+
+ @endsection diff --git a/routes/web.php b/routes/web.php index 6072efc..a7a6a19 100644 --- a/routes/web.php +++ b/routes/web.php @@ -410,17 +410,17 @@ Route::middleware(['auth'])->group(function () { Route::name('tender.')->prefix('tender')->group(function () { // Penawaran Route::get('penawaran', [TenderController::class, 'penawaran_index'])->name('penawaran.index'); - Route::get('penawaran/{id}/show', [TenderController::class, 'penawaran_show'])->name('penawaran.show'); - Route::get('penawaran/{id}/create', [TenderController::class, 'penawaran_create'])->name( + Route::get('penawaran/{noreg}/show', [TenderController::class, 'penawaran_show'])->name('penawaran.show'); + Route::get('penawaran/{noreg}/create', [TenderController::class, 'penawaran_create'])->name( 'penawaran.createPenawaran', ); - Route::post('penawaran/{id}/store', [TenderController::class, 'penawaran_store'])->name( + Route::post('penawaran/{noreg}/store', [TenderController::class, 'penawaran_store'])->name( 'penawaran.storePenawaran', ); - Route::get('penawaran/{id}/edit', [TenderController::class, 'penawaran_edit'])->name( + Route::get('penawaran/{noreg}/edit', [TenderController::class, 'penawaran_edit'])->name( 'penawaran.editPenawaran', ); - Route::put('penawaran/{id}/update', [TenderController::class, 'penawaran_update'])->name( + Route::put('penawaran/{noreg}/update', [TenderController::class, 'penawaran_update'])->name( 'penawaran.updatePenawaran', ); Route::get('penawaran/exportPenawaran', [TenderController::class, 'exportPenawaran'])->name( @@ -430,15 +430,19 @@ Route::middleware(['auth'])->group(function () { 'penawaran.datatables', ); + // Penawaran Ulang + Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name( + 'penawaran.ulang.index', + ); + Route::get('penawaran/ulang/{noreg}/show', [TenderController::class, 'penawaran_ulang_show'])->name('penawaran.ulang.show'); + Route::get('penawaran/ulang/datatables', [TenderController::class, 'datatablesPenawaranUlang'])->name( + 'penawaran.ulang.datatables', + ); + // Proses Penawaran Route::get('proses_penawaran', [TenderController::class, 'proses_penawaran_index'])->name( 'proses_penawaran.index', ); - - // Penawaran Ulang - Route::get('penawaran_ulang', [TenderController::class, 'penawaran_ulang_index'])->name( - 'penawaran_ulang.index', - ); }); Route::name('penilaian.')->prefix('penilaian')->group(function () {