Merge branch 'staging' into feature/senior-officer
This commit is contained in:
@@ -1,10 +1,41 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
function formatAlamat($alamat) {
|
use Carbon\Carbon;
|
||||||
return
|
|
||||||
($alamat->address ? $alamat->address . ', ' : '') .
|
function formatTanggalIndonesia($date)
|
||||||
(isset($alamat->village) ? $alamat->village->name.', ' : '') .
|
{
|
||||||
(isset($alamat->city) ? $alamat->city->name.', ' : '') .
|
$carbonDate = Carbon::parse($date);
|
||||||
(isset($alamat->province) ? $alamat->province->name.', ' : '') .
|
$indonesianMonths = [
|
||||||
($alamat->postal_code ?? '');
|
'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 ?? '');
|
||||||
|
}
|
||||||
|
|||||||
@@ -38,15 +38,15 @@ class ProsesPenawaranController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve data from the database
|
// 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
|
// Apply search filter if provided
|
||||||
if ($request->has('search') && !empty($request->get('search'))) {
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
$search = $request->get('search');
|
$search = $request->get('search');
|
||||||
$query->where(function ($q) use ($search) {
|
$query->where(function ($q) use ($search) {
|
||||||
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaianKJPP', 'name', 'LIKE', '%' . $search . '%');
|
||||||
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ class ProsesPenawaranController extends Controller
|
|||||||
|
|
||||||
// Get the data for the current page
|
// Get the data for the current page
|
||||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
$data = $query->get();
|
$data = $query->with(['tujuanPenilaianKJPP'])->get();
|
||||||
|
|
||||||
// Calculate the page count
|
// Calculate the page count
|
||||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
@@ -109,26 +109,24 @@ class ProsesPenawaranController extends Controller
|
|||||||
if (request()->ajax()) {
|
if (request()->ajax()) {
|
||||||
$id = $request->id;
|
$id = $request->id;
|
||||||
$penawaran = PenawaranTender::findOrFail($id);
|
$penawaran = PenawaranTender::findOrFail($id);
|
||||||
$penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id)
|
$penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id)
|
||||||
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
|
->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id')
|
||||||
->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
|
->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
|
||||||
->where('detail_penawaran.status','=',1)
|
->where('detail_penawaran.status', '=', 1)
|
||||||
->get();
|
->get();
|
||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
if ($penawaran) {
|
if ($penawaran) {
|
||||||
$i=0;
|
$i = 0;
|
||||||
foreach($penawrandetails as $obj)
|
foreach ($penawrandetails as $obj) {
|
||||||
{
|
|
||||||
// dd($obj->dokumen_persetujuan);
|
// 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_path = Storage::url($obj->dokumen_persetujuan);
|
||||||
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
|
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$kjpp=null;
|
$kjpp = null;
|
||||||
$kjpp = KJPP::pluck('name', 'id');
|
$kjpp = KJPP::pluck('name', 'id');
|
||||||
$data['penawaran'] = $penawaran;
|
$data['penawaran'] = $penawaran;
|
||||||
$data['penawrandetails'] = $penawrandetails;
|
$data['penawrandetails'] = $penawrandetails;
|
||||||
@@ -157,33 +155,30 @@ class ProsesPenawaranController extends Controller
|
|||||||
$tindakan = null;
|
$tindakan = null;
|
||||||
if (request()->ajax()) {
|
if (request()->ajax()) {
|
||||||
$validator = ProsesPenawaranController::rulesEditnya($request, $id);
|
$validator = ProsesPenawaranController::rulesEditnya($request, $id);
|
||||||
|
|
||||||
if ($validator['fails']) {
|
if ($validator['fails']) {
|
||||||
$data['message'] = $validator['errors'];
|
$data['message'] = $validator['errors'];
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$dataku = ['updated_by' => Auth::id(),
|
$dataku = [
|
||||||
'updated_at' => now(),
|
'updated_by' => Auth::id(),
|
||||||
'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran)
|
'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');
|
$file_tmp = $request->file('dokumen_persetujuan');
|
||||||
$folderPath = 'uploads/penawaran/';
|
$folderPath = 'uploads/penawaran/';
|
||||||
if ($file_tmp->isValid())
|
if ($file_tmp->isValid()) {
|
||||||
{
|
$myFile = $file_tmp->getClientOriginalName(); // nama file with extension
|
||||||
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
|
|
||||||
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
|
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
|
||||||
|
|
||||||
$extension = $file_tmp->getClientOriginalExtension();
|
$extension = $file_tmp->getClientOriginalExtension();
|
||||||
// kjppID_penawaranID_namaFile_userID_time
|
// kjppID_penawaranID_namaFile_userID_time
|
||||||
$newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
|
$newFileName = $request->kjpp_rekanan_id . '_' . $id . '_' . $file_name . '_' . Auth::user()->id . "_" . time() . '.' . $extension;
|
||||||
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
|
Storage::disk('public')->put($folderPath . '/' . $newFileName, file_get_contents($file_tmp));
|
||||||
|
|
||||||
$newFileNameWithPath = $folderPath . $newFileName;
|
$newFileNameWithPath = $folderPath . $newFileName;
|
||||||
$dataku['attachment'] = $myFile;
|
$dataku['attachment'] = $myFile;
|
||||||
@@ -195,26 +190,20 @@ class ProsesPenawaranController extends Controller
|
|||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
$data['detailpenawaran_id'] = $id;
|
$data['detailpenawaran_id'] = $id;
|
||||||
$data['message'] = 'Proses Penawarn KJPP successfully';
|
$data['message'] = 'Proses Penawarn KJPP successfully';
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message'] = 'Silahkan upload file pdf';
|
$data['message'] = 'Silahkan upload file pdf';
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message'] = 'Silahkan upload file';
|
$data['message'] = 'Silahkan upload file';
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message'] = 'Proses Penawarn KJPP failed.';
|
$data['message'] = 'Proses Penawarn KJPP failed.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
$data['message'] = 'no ajax request';
|
$data['message'] = 'no ajax request';
|
||||||
@@ -251,58 +240,51 @@ class ProsesPenawaranController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function updateAll(Request $request, $id): JsonResponse
|
public function updateAll(Request $request, $id): JsonResponse
|
||||||
{
|
{
|
||||||
// init
|
// init
|
||||||
$data = array();
|
$data = array();
|
||||||
$dataku = array();
|
$dataku = array();
|
||||||
$model = PenawaranTender::findOrFail($id);
|
$model = PenawaranTender::findOrFail($id);
|
||||||
$checkActiveDateRange = $this->checkActiveDateRangePenawaran($model->start_date, $model->end_date);
|
$checkActiveDateRange = $this->checkActiveDateRangePenawaran($model->start_date, $model->end_date);
|
||||||
|
|
||||||
// cek masa aktif penawaran
|
// cek masa aktif penawaran
|
||||||
if($checkActiveDateRange)
|
if ($checkActiveDateRange) {
|
||||||
{
|
|
||||||
|
$checkKelengkapanDetailKJPP = $this->checkKelengkapanDetailKJPP($id);
|
||||||
$checkKelengkapanDetailKJPP = $this->checkKelengkapanDetailKJPP($id);
|
if ($checkKelengkapanDetailKJPP) {
|
||||||
if($checkKelengkapanDetailKJPP)
|
|
||||||
{
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
try {
|
try {
|
||||||
$dataku = ['status' => 'tendered',
|
$dataku = [
|
||||||
|
'status' => 'tendered',
|
||||||
'updated_by' => Auth::id(),
|
'updated_by' => Auth::id(),
|
||||||
'updated_at' => now()
|
'updated_at' => now()
|
||||||
];
|
];
|
||||||
|
|
||||||
$dataPermohonan = ['status' => 'tendered',
|
$dataPermohonan = [
|
||||||
|
'status' => 'tendered',
|
||||||
'updated_by' => Auth::id(),
|
'updated_by' => Auth::id(),
|
||||||
'updated_at' => now()
|
'updated_at' => now()
|
||||||
];
|
];
|
||||||
|
|
||||||
$permohonan = Permohonan::where('nomor_registrasi','=', $model->nomor_registrasi)->first();
|
$permohonan = Permohonan::where('nomor_registrasi', '=', $model->nomor_registrasi)->first();
|
||||||
|
|
||||||
$model->update($dataku);
|
$model->update($dataku);
|
||||||
$permohonan->update($dataPermohonan);
|
$permohonan->update($dataPermohonan);
|
||||||
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
|
|
||||||
$data['message'] = "Sukses melakukan Proses Penawaran";
|
$data['message'] = "Sukses melakukan Proses Penawaran";
|
||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
// dd($e);
|
// dd($e);
|
||||||
$data['message'] = "Gagal melakukan Proses Penawaran";
|
$data['message'] = "Gagal melakukan Proses Penawaran";
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$data['message'] = "Silahkan lengkapi data KJPP";
|
$data['message'] = "Silahkan lengkapi data KJPP";
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$data['message'] = "Penawaran sudah di tutup";
|
$data['message'] = "Penawaran sudah di tutup";
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
}
|
}
|
||||||
@@ -316,57 +298,48 @@ class ProsesPenawaranController extends Controller
|
|||||||
$end_date = strtotime($end_date1);
|
$end_date = strtotime($end_date1);
|
||||||
$todays_date = strtotime(now());
|
$todays_date = strtotime(now());
|
||||||
|
|
||||||
$allow=true;
|
$allow = true;
|
||||||
if ($todays_date >= $start_date && $todays_date <= $end_date)
|
if ($todays_date >= $start_date && $todays_date <= $end_date) {
|
||||||
{
|
|
||||||
//Penawaran dibuka
|
//Penawaran dibuka
|
||||||
$allow=true;
|
$allow = true;
|
||||||
}
|
} else {
|
||||||
else
|
if ($todays_date < $start_date) {
|
||||||
{
|
|
||||||
if($todays_date < $start_date)
|
|
||||||
{
|
|
||||||
//Penawaran Belum dibuka
|
//Penawaran Belum dibuka
|
||||||
$allow=true;
|
$allow = true;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
//Penawaran sudah ditutup
|
//Penawaran sudah ditutup
|
||||||
$allow=false;
|
$allow = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $allow;
|
|
||||||
|
|
||||||
|
return $allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkKelengkapanDetailKJPP($id)
|
public function checkKelengkapanDetailKJPP($id)
|
||||||
{
|
{
|
||||||
$allow=true;
|
$allow = true;
|
||||||
// DB::enableQueryLog();
|
// DB::enableQueryLog();
|
||||||
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
||||||
$query = PenawaranDetailTender::select('id')
|
$query = PenawaranDetailTender::select('id')
|
||||||
->where('penawaran_id','=',$id)
|
->where('penawaran_id', '=', $id)
|
||||||
->where(function($query) {
|
->where(function ($query) {
|
||||||
$query->orWhere('biaya_penawaran', '', "");
|
$query->orWhere('biaya_penawaran', '', "");
|
||||||
$query->orWhereNull('biaya_penawaran');
|
$query->orWhereNull('biaya_penawaran');
|
||||||
|
|
||||||
$query->orWhere('attachment', '', "");
|
|
||||||
$query->orWhereNull('attachment');
|
|
||||||
|
|
||||||
$query->orWhere('dokumen_persetujuan', '', "");
|
$query->orWhere('attachment', '', "");
|
||||||
$query->orWhereNull('dokumen_persetujuan');
|
$query->orWhereNull('attachment');
|
||||||
})->get();
|
|
||||||
// $sql = DB::getQueryLog();
|
$query->orWhere('dokumen_persetujuan', '', "");
|
||||||
|
$query->orWhereNull('dokumen_persetujuan');
|
||||||
|
})->get();
|
||||||
if (sizeof($query)>0)
|
// $sql = DB::getQueryLog();
|
||||||
{
|
|
||||||
$allow=false;
|
|
||||||
}
|
if (sizeof($query) > 0) {
|
||||||
|
$allow = false;
|
||||||
|
}
|
||||||
|
|
||||||
return $allow;
|
return $allow;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateStatusPenawaranKJPP(Request $request, $id): JsonResponse
|
public function updateStatusPenawaranKJPP(Request $request, $id): JsonResponse
|
||||||
@@ -377,19 +350,20 @@ class ProsesPenawaranController extends Controller
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$model = PenawaranDetailTender::findOrFail($id);
|
$model = PenawaranDetailTender::findOrFail($id);
|
||||||
$data['id']=$id;
|
$data['id'] = $id;
|
||||||
|
|
||||||
$dataku = ['status' => '0',
|
$dataku = [
|
||||||
|
'status' => '0',
|
||||||
'updated_by' => Auth::id(),
|
'updated_by' => Auth::id(),
|
||||||
'updated_at' => now()
|
'updated_at' => now()
|
||||||
];
|
];
|
||||||
|
|
||||||
$model->update($dataku);
|
$model->update($dataku);
|
||||||
|
|
||||||
$data['message'] = "Sukses delete Penawaran KJPP";
|
$data['message'] = "Sukses delete Penawaran KJPP";
|
||||||
$data['status'] = 'success';
|
$data['status'] = 'success';
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|
||||||
// dd($e);
|
// dd($e);
|
||||||
$data['message'] = "Gagal delete Penawaran KJPP";
|
$data['message'] = "Gagal delete Penawaran KJPP";
|
||||||
$data['status'] = 'error';
|
$data['status'] = 'error';
|
||||||
@@ -400,6 +374,6 @@ class ProsesPenawaranController extends Controller
|
|||||||
public function show($id)
|
public function show($id)
|
||||||
{
|
{
|
||||||
$prosespenawaran = PenawaranTender::find($id);
|
$prosespenawaran = PenawaranTender::find($id);
|
||||||
return view('lpj::prosespenawaran.show', compact('id','prosespenawaran'));
|
return view('lpj::prosespenawaran.show', compact('id', 'prosespenawaran'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
// Tambahkan method untuk API di controller
|
||||||
public function checkPenawaranExistence($nomor_registrasi)
|
public function checkPenawaranExistence($nomor_registrasi)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany; // andy add
|
use Illuminate\Database\Eloquent\Relations\HasMany; // andy add
|
||||||
@@ -17,7 +18,7 @@ class PenawaranTender extends Model
|
|||||||
protected $table = 'penawaran';
|
protected $table = 'penawaran';
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
|
|
||||||
// andy add
|
// andy add
|
||||||
public function penawarandetails(): HasMany
|
public function penawarandetails(): HasMany
|
||||||
{
|
{
|
||||||
@@ -29,4 +30,10 @@ class PenawaranTender extends Model
|
|||||||
{
|
{
|
||||||
return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id');
|
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');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
module.json
22
module.json
@@ -98,7 +98,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "so"]
|
"roles": ["administrator", "senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Team Activity",
|
"title": "Team Activity",
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"]
|
"roles": ["senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Otorisator",
|
"title": "Otorisator",
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"],
|
"roles": ["senior-officer"],
|
||||||
"sub": [
|
"sub": [
|
||||||
{
|
{
|
||||||
"title": "Pelaporan",
|
"title": "Pelaporan",
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"]
|
"roles": ["senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Pembayaran",
|
"title": "Pembayaran",
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"]
|
"roles": ["senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Pembatalan",
|
"title": "Pembatalan",
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"]
|
"roles": ["senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "SLA",
|
"title": "SLA",
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["so"]
|
"roles": ["ssenior-officero"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "so"]
|
"roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "senior-officer"]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"master": [
|
"master": [
|
||||||
@@ -293,7 +293,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin", "so"]
|
"roles": ["administrator", "admin", "senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Staff Appraisal",
|
"title": "Staff Appraisal",
|
||||||
@@ -301,7 +301,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "so"]
|
"roles": ["administrator", "senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Jenis Penilaian",
|
"title": "Jenis Penilaian",
|
||||||
@@ -309,7 +309,7 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": ["administrator", "admin", "so"]
|
"roles": ["administrator", "admin", "senior-officer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "KJPP",
|
"title": "KJPP",
|
||||||
|
|||||||
@@ -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')
|
@extends('layouts.main')
|
||||||
|
|
||||||
@section('breadcrumbs')
|
@section('breadcrumbs')
|
||||||
@@ -199,4 +167,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
@extends('layouts.main')
|
|
||||||
|
|
||||||
@section('breadcrumbs')
|
|
||||||
{{ Breadcrumbs::render('tender.proses.penawaran') }}
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
|
||||||
|
|
||||||
<div class="card pb-2.5">
|
|
||||||
<div class="card-header" id="basic_settings">
|
|
||||||
<h3 class="card-title">
|
|
||||||
Data Proses Penawaran
|
|
||||||
</h3>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
{{-- @include('lpj::debitur.form') --}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
@@ -6,7 +6,9 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5" data-datatable-state-save="false" id="prosespenawaran-table" data-api-url="{{ route('tender.prosespenawaran.datatables') }}">
|
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
|
||||||
|
data-datatable-state-save="false" id="prosespenawaran-table"
|
||||||
|
data-api-url="{{ route('tender.prosespenawaran.datatables') }}">
|
||||||
<div class="card-header py-5 flex-wrap">
|
<div class="card-header py-5 flex-wrap">
|
||||||
<h3 class="card-title">
|
<h3 class="card-title">
|
||||||
Daftar Proses Penawaran
|
Daftar Proses Penawaran
|
||||||
@@ -25,42 +27,44 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="scrollable-x-auto">
|
<div class="scrollable-x-auto">
|
||||||
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true">
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
|
||||||
|
data-datatable-table="true">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="w-14">
|
<th class="w-14">
|
||||||
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
||||||
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
<span class="sort"> <span class="sort-label"> Nomor Registrasi </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="code">
|
<th class="min-w-[150px]" data-datatable-column="code">
|
||||||
<span class="sort"> <span class="sort-label"> Kode Penawaran </span>
|
<span class="sort"> <span class="sort-label"> Kode Penawaran </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="start_date">
|
<th class="min-w-[150px]" data-datatable-column="start_date">
|
||||||
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
<span class="sort"> <span class="sort-label"> Tanggal Penawaran </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_kjpp_id">
|
||||||
<span class="sort"> <span class="sort-label"> Tujuan Penilaian </span>
|
<span class="sort"> <span class="sort-label"> Tujuan Penilaian KJPP </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="penawarandetails_count">
|
<th class="min-w-[150px]" data-datatable-column="penawarandetails_count">
|
||||||
<span class="sort"> <span class="sort-label"> Total KJPP </span>
|
<span class="sort"> <span class="sort-label"> Total KJPP </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[150px]" data-datatable-column="status">
|
<th class="min-w-[150px]" data-datatable-column="status">
|
||||||
<span class="sort"> <span class="sort-label"> Status </span>
|
<span class="sort"> <span class="sort-label"> Status </span>
|
||||||
<span class="sort-icon"> </span> </span>
|
<span class="sort-icon"> </span> </span>
|
||||||
</th>
|
</th>
|
||||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
|
<div
|
||||||
|
class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
Show
|
Show
|
||||||
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
|
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
|
||||||
@@ -78,10 +82,32 @@
|
|||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function showPenawaranData(regId)
|
function formatDate(date) {
|
||||||
{
|
const day = date.getDate().toString().padStart(2, '0');
|
||||||
var url = "{{ url('tender/prosespenawaran') }}/"+regId;
|
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||||
$(location).attr('href',url);
|
// Months are 0-indexed
|
||||||
|
const year = date.getFullYear();
|
||||||
|
|
||||||
|
return `${day} ${getIndonesianMonth(month)} ${year}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getIndonesianMonth(month) {
|
||||||
|
const months = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
|
||||||
|
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'
|
||||||
|
];
|
||||||
|
return months[month -
|
||||||
|
1];
|
||||||
|
}
|
||||||
|
|
||||||
|
function capitalizeWords(str) {
|
||||||
|
return str.replace(/\b\w/g, function(char) {
|
||||||
|
return char.toUpperCase();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function showPenawaranData(regId) {
|
||||||
|
var url = "{{ url('tender/prosespenawaran') }}/" + regId;
|
||||||
|
$(location).attr('href', url);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script type="module">
|
<script type="module">
|
||||||
@@ -111,9 +137,15 @@
|
|||||||
},
|
},
|
||||||
start_date: {
|
start_date: {
|
||||||
title: 'Tanggal Penawaran',
|
title: 'Tanggal Penawaran',
|
||||||
|
render: (item, data) => {
|
||||||
|
return `${formatDate(new Date(data.start_date))} - ${formatDate(new Date(data.end_date))}`
|
||||||
|
}
|
||||||
},
|
},
|
||||||
tujuan_penilaian_kjpp_id: {
|
tujuan_penilaian_k_j_p_p: {
|
||||||
title: 'Tujuan Penilaian',
|
title: 'Tujuan Penilaian KJPP',
|
||||||
|
render: (item, data) => {
|
||||||
|
return data.tujuan_penilaian_k_j_p_p[0].name
|
||||||
|
}
|
||||||
},
|
},
|
||||||
penawarandetails_count: {
|
penawarandetails_count: {
|
||||||
title: 'Total KJPP',
|
title: 'Total KJPP',
|
||||||
@@ -122,7 +154,10 @@
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
title: 'Status'
|
title: 'Status',
|
||||||
|
render: (item, data) => {
|
||||||
|
return capitalizeWords(data.status)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
@@ -142,12 +177,10 @@
|
|||||||
|
|
||||||
let dataTable = new KTDataTable(element, dataTableOptions);
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
// Custom search functionality
|
// Custom search functionality
|
||||||
searchInput.addEventListener('input', function () {
|
searchInput.addEventListener('input', function() {
|
||||||
const searchValue = this.value.trim();
|
const searchValue = this.value.trim();
|
||||||
dataTable.search(searchValue, true);
|
dataTable.search(searchValue, true);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|||||||
@@ -416,11 +416,6 @@ Breadcrumbs::for('tender.penawaran.editPenawaran', function (BreadcrumbTrail $tr
|
|||||||
$trail->push('Penawaran Ulang', route('tender.penawaran.editPenawaran', $noreg));
|
$trail->push('Penawaran Ulang', route('tender.penawaran.editPenawaran', $noreg));
|
||||||
});
|
});
|
||||||
|
|
||||||
Breadcrumbs::for('tender.proses.penawaran', function (BreadcrumbTrail $trail) {
|
|
||||||
$trail->parent('tender');
|
|
||||||
$trail->push('Data Proses Penawaran', route('tender.proses_penawaran.index'));
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Breadcrumbs::for('tender.penawaran.ulang', function (BreadcrumbTrail $trail) {
|
Breadcrumbs::for('tender.penawaran.ulang', function (BreadcrumbTrail $trail) {
|
||||||
$trail->parent('tender');
|
$trail->parent('tender');
|
||||||
|
|||||||
@@ -384,9 +384,6 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
->name($type . '.index')
|
->name($type . '.index')
|
||||||
->defaults('type', $type);
|
->defaults('type', $type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::name('permohonan.')->prefix('permohonan')->group(function () {
|
Route::name('permohonan.')->prefix('permohonan')->group(function () {
|
||||||
@@ -468,11 +465,6 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('penawaran/ulang/datatables', [TenderController::class, 'datatablesPenawaranUlang'])->name(
|
Route::get('penawaran/ulang/datatables', [TenderController::class, 'datatablesPenawaranUlang'])->name(
|
||||||
'penawaran.ulang.datatables',
|
'penawaran.ulang.datatables',
|
||||||
);
|
);
|
||||||
|
|
||||||
// Proses Penawaran
|
|
||||||
Route::get('proses_penawaran', [TenderController::class, 'proses_penawaran_index'])->name(
|
|
||||||
'proses_penawaran.index',
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::name('penilaian.')->prefix('penilaian')->group(function () {
|
Route::name('penilaian.')->prefix('penilaian')->group(function () {
|
||||||
@@ -539,10 +531,7 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto');
|
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto');
|
||||||
Route::get('data-pembanding/{id}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
|
Route::get('data-pembanding/{id}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
|
||||||
Route::put('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
|
Route::put('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
require __DIR__ . '/registrasi.php';
|
require __DIR__ . '/registrasi.php';
|
||||||
|
|||||||
Reference in New Issue
Block a user