diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 2d2a379..6a4c032 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -1,10 +1,41 @@ address ? $alamat->address . ', ' : '') . - (isset($alamat->village) ? $alamat->village->name.', ' : '') . - (isset($alamat->city) ? $alamat->city->name.', ' : '') . - (isset($alamat->province) ? $alamat->province->name.', ' : '') . - ($alamat->postal_code ?? ''); - } +use Carbon\Carbon; + +function formatTanggalIndonesia($date) +{ + $carbonDate = 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) +{ + $number = (float) $number; + return 'Rp ' . number_format($number, 2, ',', '.'); +} + + +function formatAlamat($alamat) +{ + return ($alamat->address ? $alamat->address . ', ' : '') . + (isset($alamat->village) ? $alamat->village->name . ', ' : '') . + (isset($alamat->city) ? $alamat->city->name . ', ' : '') . + (isset($alamat->province) ? $alamat->province->name . ', ' : '') . + ($alamat->postal_code ?? ''); +} diff --git a/app/Http/Controllers/ProsesPenawaranController.php b/app/Http/Controllers/ProsesPenawaranController.php index 14be728..9063533 100644 --- a/app/Http/Controllers/ProsesPenawaranController.php +++ b/app/Http/Controllers/ProsesPenawaranController.php @@ -38,15 +38,15 @@ class ProsesPenawaranController extends Controller } // Retrieve data from the database - $query =PenawaranTender::query()->where('status','=','tender')->withCount('penawarandetails'); - + $query = PenawaranTender::query()->where('status', '=', 'tender')->withCount('penawarandetails'); + // 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('tujuanPenilaianKJPP', 'name', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } @@ -75,7 +75,7 @@ class ProsesPenawaranController extends Controller // Get the data for the current page //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - $data = $query->get(); + $data = $query->with(['tujuanPenilaianKJPP'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -109,26 +109,24 @@ class ProsesPenawaranController extends Controller if (request()->ajax()) { $id = $request->id; $penawaran = PenawaranTender::findOrFail($id); - $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') - ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') - ->where('detail_penawaran.status','=',1) - ->get(); + $penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id) + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') + ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') + ->where('detail_penawaran.status', '=', 1) + ->get(); $data['status'] = 'success'; if ($penawaran) { - $i=0; - foreach($penawrandetails as $obj) - { + $i = 0; + foreach ($penawrandetails as $obj) { // dd($obj->dokumen_persetujuan); - if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) - { + if ($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) { $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; $i++; } } - $kjpp=null; + $kjpp = null; $kjpp = KJPP::pluck('name', 'id'); $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; @@ -157,33 +155,30 @@ class ProsesPenawaranController extends Controller $tindakan = null; if (request()->ajax()) { $validator = ProsesPenawaranController::rulesEditnya($request, $id); - + if ($validator['fails']) { $data['message'] = $validator['errors']; $data['status'] = 'error'; - } - else - { + } else { try { - $dataku = ['updated_by' => Auth::id(), - 'updated_at' => now(), - 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran) - ]; + $dataku = [ + 'updated_by' => Auth::id(), + 'updated_at' => now(), + 'biaya_penawaran' => str_replace(".", "", $request->biaya_penawaran) + ]; - if ($request->hasFile('dokumen_persetujuan')) - { + if ($request->hasFile('dokumen_persetujuan')) { $file_tmp = $request->file('dokumen_persetujuan'); $folderPath = 'uploads/penawaran/'; - if ($file_tmp->isValid()) - { - $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + if ($file_tmp->isValid()) { + $myFile = $file_tmp->getClientOriginalName(); // nama file with extension $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension $extension = $file_tmp->getClientOriginalExtension(); // kjppID_penawaranID_namaFile_userID_time - $newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; - Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); + $newFileName = $request->kjpp_rekanan_id . '_' . $id . '_' . $file_name . '_' . Auth::user()->id . "_" . time() . '.' . $extension; + Storage::disk('public')->put($folderPath . '/' . $newFileName, file_get_contents($file_tmp)); $newFileNameWithPath = $folderPath . $newFileName; $dataku['attachment'] = $myFile; @@ -195,26 +190,20 @@ class ProsesPenawaranController extends Controller $data['status'] = 'success'; $data['detailpenawaran_id'] = $id; $data['message'] = 'Proses Penawarn KJPP successfully'; - } - else - { + } else { $data['status'] = 'error'; $data['message'] = 'Silahkan upload file pdf'; } - } - else - { + } else { $data['status'] = 'error'; $data['message'] = 'Silahkan upload file'; } - } catch (Exception $e) { - + $data['status'] = 'error'; $data['message'] = 'Proses Penawarn KJPP failed.'; } } - } else { $data['status'] = 'error'; $data['message'] = 'no ajax request'; @@ -251,58 +240,51 @@ class ProsesPenawaranController extends Controller */ public function updateAll(Request $request, $id): JsonResponse { - // init + // init $data = array(); $dataku = array(); $model = PenawaranTender::findOrFail($id); $checkActiveDateRange = $this->checkActiveDateRangePenawaran($model->start_date, $model->end_date); - + // cek masa aktif penawaran - if($checkActiveDateRange) - { - - $checkKelengkapanDetailKJPP = $this->checkKelengkapanDetailKJPP($id); - if($checkKelengkapanDetailKJPP) - { + if ($checkActiveDateRange) { + + $checkKelengkapanDetailKJPP = $this->checkKelengkapanDetailKJPP($id); + if ($checkKelengkapanDetailKJPP) { DB::beginTransaction(); try { - $dataku = ['status' => 'tendered', + $dataku = [ + 'status' => 'tendered', 'updated_by' => Auth::id(), 'updated_at' => now() ]; - - $dataPermohonan = ['status' => 'tendered', + + $dataPermohonan = [ + 'status' => 'tendered', 'updated_by' => Auth::id(), 'updated_at' => now() ]; - - $permohonan = Permohonan::where('nomor_registrasi','=', $model->nomor_registrasi)->first(); - - $model->update($dataku); - $permohonan->update($dataPermohonan); - + + $permohonan = Permohonan::where('nomor_registrasi', '=', $model->nomor_registrasi)->first(); + + $model->update($dataku); + $permohonan->update($dataPermohonan); + DB::commit(); $data['message'] = "Sukses melakukan Proses Penawaran"; $data['status'] = 'success'; - } catch (Exception $e) { DB::rollBack(); // dd($e); $data['message'] = "Gagal melakukan Proses Penawaran"; $data['status'] = 'error'; } - - } - else - { + } else { $data['message'] = "Silahkan lengkapi data KJPP"; $data['status'] = 'error'; } - - } - else - { + } else { $data['message'] = "Penawaran sudah di tutup"; $data['status'] = 'error'; } @@ -316,57 +298,48 @@ class ProsesPenawaranController extends Controller $end_date = strtotime($end_date1); $todays_date = strtotime(now()); - $allow=true; - if ($todays_date >= $start_date && $todays_date <= $end_date) - { + $allow = true; + if ($todays_date >= $start_date && $todays_date <= $end_date) { //Penawaran dibuka - $allow=true; - } - else - { - if($todays_date < $start_date) - { + $allow = true; + } else { + if ($todays_date < $start_date) { //Penawaran Belum dibuka - $allow=true; - } - else - { + $allow = true; + } else { //Penawaran sudah ditutup - $allow=false; + $allow = false; } } - - return $allow; + return $allow; } public function checkKelengkapanDetailKJPP($id) { - $allow=true; + $allow = true; // DB::enableQueryLog(); // detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap? $query = PenawaranDetailTender::select('id') - ->where('penawaran_id','=',$id) - ->where(function($query) { - $query->orWhere('biaya_penawaran', '', ""); - $query->orWhereNull('biaya_penawaran'); - - $query->orWhere('attachment', '', ""); - $query->orWhereNull('attachment'); + ->where('penawaran_id', '=', $id) + ->where(function ($query) { + $query->orWhere('biaya_penawaran', '', ""); + $query->orWhereNull('biaya_penawaran'); - $query->orWhere('dokumen_persetujuan', '', ""); - $query->orWhereNull('dokumen_persetujuan'); - })->get(); - // $sql = DB::getQueryLog(); - - - if (sizeof($query)>0) - { - $allow=false; - } + $query->orWhere('attachment', '', ""); + $query->orWhereNull('attachment'); + + $query->orWhere('dokumen_persetujuan', '', ""); + $query->orWhereNull('dokumen_persetujuan'); + })->get(); + // $sql = DB::getQueryLog(); + + + if (sizeof($query) > 0) { + $allow = false; + } return $allow; - } public function updateStatusPenawaranKJPP(Request $request, $id): JsonResponse @@ -377,19 +350,20 @@ class ProsesPenawaranController extends Controller try { $model = PenawaranDetailTender::findOrFail($id); - $data['id']=$id; + $data['id'] = $id; - $dataku = ['status' => '0', + $dataku = [ + 'status' => '0', 'updated_by' => Auth::id(), 'updated_at' => now() ]; - $model->update($dataku); + $model->update($dataku); $data['message'] = "Sukses delete Penawaran KJPP"; $data['status'] = 'success'; } catch (Exception $e) { - + // dd($e); $data['message'] = "Gagal delete Penawaran KJPP"; $data['status'] = 'error'; @@ -400,6 +374,6 @@ class ProsesPenawaranController extends Controller public function show($id) { $prosespenawaran = PenawaranTender::find($id); - return view('lpj::prosespenawaran.show', compact('id','prosespenawaran')); + return view('lpj::prosespenawaran.show', compact('id', 'prosespenawaran')); } } diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 22d6e1c..1ec30cb 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -395,11 +395,6 @@ class TenderController extends Controller ]); } - public function proses_penawaran_index() - { - return view('lpj::proses_penawaran/index'); - } - // Tambahkan method untuk API di controller public function checkPenawaranExistence($nomor_registrasi) { diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index dbf1c47..be2b5a8 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -3,6 +3,7 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; +use Modules\Lpj\Models\TujuanPenilaianKJPP; use Modules\Lpj\Models\PenawaranDetailTender; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasMany; // andy add @@ -17,7 +18,7 @@ class PenawaranTender extends Model protected $table = 'penawaran'; protected $guarded = ['id']; - + // andy add public function penawarandetails(): HasMany { @@ -29,4 +30,10 @@ class PenawaranTender extends Model { return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id'); } + + // menambahkan relasi tujuan penilaian KJPP + public function tujuanPenilaianKJPP() + { + return $this->hasMany(TujuanPenilaianKJPP::class, 'id', 'tujuan_penilaian_kjpp_id'); + } } diff --git a/module.json b/module.json index c4e4617..427bfca 100644 --- a/module.json +++ b/module.json @@ -98,7 +98,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "so"] + "roles": ["administrator", "senior-officer"] }, { "title": "Team Activity", @@ -107,7 +107,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"] + "roles": ["senior-officer"] }, { "title": "Otorisator", @@ -116,7 +116,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"], + "roles": ["senior-officer"], "sub": [ { "title": "Pelaporan", @@ -124,7 +124,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"] + "roles": ["senior-officer"] }, { "title": "Pembayaran", @@ -132,7 +132,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"] + "roles": ["senior-officer"] }, { "title": "Pembatalan", @@ -140,7 +140,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"] + "roles": ["senior-officer"] }, { "title": "SLA", @@ -148,7 +148,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["so"] + "roles": ["ssenior-officero"] } ] }, @@ -178,7 +178,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "so"] + "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "senior-officer"] } ], "master": [ @@ -293,7 +293,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "admin", "so"] + "roles": ["administrator", "admin", "senior-officer"] }, { "title": "Staff Appraisal", @@ -301,7 +301,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "so"] + "roles": ["administrator", "senior-officer"] }, { "title": "Jenis Penilaian", @@ -309,7 +309,7 @@ "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "admin", "so"] + "roles": ["administrator", "admin", "senior-officer"] }, { "title": "KJPP", diff --git a/resources/views/penawaran/show.blade.php b/resources/views/penawaran/show.blade.php index 3abf675..1e7b935 100644 --- a/resources/views/penawaran/show.blade.php +++ b/resources/views/penawaran/show.blade.php @@ -1,35 +1,3 @@ -@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') @@ -199,4 +167,6 @@ - @endsection + + +@endsection diff --git a/resources/views/proses_penawaran/index.blade.php b/resources/views/proses_penawaran/index.blade.php deleted file mode 100644 index a9f3007..0000000 --- a/resources/views/proses_penawaran/index.blade.php +++ /dev/null @@ -1,22 +0,0 @@ -@extends('layouts.main') - -@section('breadcrumbs') - {{ Breadcrumbs::render('tender.proses.penawaran') }} -@endsection - -@section('content') -
| - - | -- Nomor Registrasi - - | -- Kode Penawaran - - | -- Tanggal Penawaran - - | -- Tujuan Penilaian - - | -- Total KJPP - - | -- Status - - | -Action | -
|---|---|---|---|---|---|---|---|
| + + | ++ Nomor Registrasi + + | ++ Kode Penawaran + + | ++ Tanggal Penawaran + + | ++ Tujuan Penilaian KJPP + + | ++ Total KJPP + + | ++ Status + + | +Action | +