feat(lpj): perbarui fungsi dan struktur kode
- Mengatur ulang urutan penggunaan namespace untuk konsistensi. - Memperbaiki penanganan kesalahan pada fungsi formatTanggalIndonesia. - Menambahkan logika untuk memeriksa rentang tanggal aktif pada fungsi checkActiveDateRangePenawaran. - Memperbaiki dan menyederhanakan logika pada fungsi checkKelengkapanDetailKJPP. - Memperbarui fungsi generateLpjUniqueCode untuk menghasilkan kode unik dengan format yang lebih baik. - Menyempurnakan fungsi formatNotifikasi untuk menampilkan pesan yang lebih informatif.
This commit is contained in:
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Models\CustomField;
|
||||
use Modules\Lpj\Models\HolidayCalendar;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\JenisDokumen;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Lpj\Models\Laporan;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Village;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Models\CustomField;
|
||||
use Modules\Lpj\Models\HolidayCalendar;
|
||||
use Modules\Lpj\Models\JenisDokumen;
|
||||
use Modules\Lpj\Models\Laporan;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
|
||||
function formatTanggalIndonesia($date, $time = false)
|
||||
{
|
||||
function formatTanggalIndonesia($date, $time = false)
|
||||
{
|
||||
Carbon::setLocale('id');
|
||||
try {
|
||||
$waktu = Carbon::parse($date);
|
||||
@@ -25,28 +25,28 @@ function formatTanggalIndonesia($date, $time = false)
|
||||
return $waktu->translatedFormat('d F Y');
|
||||
}
|
||||
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
|
||||
} catch (\Throwable $e) {
|
||||
} catch (Throwable $e) {
|
||||
return $date;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function formatRupiah($number,$decimals = 0)
|
||||
{
|
||||
function formatRupiah($number, $decimals = 0)
|
||||
{
|
||||
$number = (float) $number;
|
||||
return 'Rp ' . number_format($number, $decimals, ',', '.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function formatAlamat($alamat)
|
||||
{
|
||||
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->village->postal_code ?? '');
|
||||
}
|
||||
}
|
||||
|
||||
// andy add
|
||||
function checkActiveDateRangePenawaran($id)
|
||||
{
|
||||
// andy add
|
||||
function checkActiveDateRangePenawaran($id)
|
||||
{
|
||||
$penawaran = PenawaranTender::find($id);
|
||||
|
||||
$start_date = strtotime($penawaran->start_date);
|
||||
@@ -69,10 +69,10 @@ function checkActiveDateRangePenawaran($id)
|
||||
}
|
||||
|
||||
return $allow;
|
||||
}
|
||||
}
|
||||
|
||||
function checkKelengkapanDetailKJPP($id)
|
||||
{
|
||||
function checkKelengkapanDetailKJPP($id)
|
||||
{
|
||||
$allow = true;
|
||||
// DB::enableQueryLog();
|
||||
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
||||
@@ -104,11 +104,11 @@ function checkKelengkapanDetailKJPP($id)
|
||||
}
|
||||
|
||||
return $allow;
|
||||
}
|
||||
}
|
||||
|
||||
// convert
|
||||
function convertSlug($slug)
|
||||
{
|
||||
// convert
|
||||
function convertSlug($slug)
|
||||
{
|
||||
$words = explode('-', $slug);
|
||||
|
||||
foreach ($words as $index => $word) {
|
||||
@@ -116,11 +116,12 @@ function convertSlug($slug)
|
||||
}
|
||||
|
||||
return implode(' ', $words);
|
||||
}
|
||||
}
|
||||
|
||||
// generate last penawaran.code
|
||||
function onLastnumberCodePenawaran(): string
|
||||
{
|
||||
// generate last penawaran.code
|
||||
function onLastnumberCodePenawaran()
|
||||
: string
|
||||
{
|
||||
// ambil code terakhir
|
||||
$maxCode = PenawaranTender::max('code');
|
||||
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
|
||||
@@ -146,16 +147,17 @@ function onLastnumberCodePenawaran(): string
|
||||
}
|
||||
|
||||
return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString;
|
||||
}
|
||||
}
|
||||
|
||||
function isNumeric($str)
|
||||
{
|
||||
function isNumeric($str)
|
||||
{
|
||||
return ctype_digit($str);
|
||||
}
|
||||
}
|
||||
|
||||
// generate last penawaran.no_spk
|
||||
function onLastnumberCodePenawaranSPK($jenis_laporan_code): string
|
||||
{
|
||||
// generate last penawaran.no_spk
|
||||
function onLastnumberCodePenawaranSPK($jenis_laporan_code)
|
||||
: string
|
||||
{
|
||||
|
||||
// 20241124_001 ==> spk_no_core
|
||||
// XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024
|
||||
@@ -179,12 +181,13 @@ function onLastnumberCodePenawaranSPK($jenis_laporan_code): string
|
||||
|
||||
$month = onRomawi(Carbon::now()->month);
|
||||
|
||||
$lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now;
|
||||
$lastSPK = $noUrutAkhirString . ' / PJ / JKT / ' . $month . ' / ' . $jenis_laporan_code . ' / ' . $year_now;
|
||||
return $lastSPK;
|
||||
}
|
||||
}
|
||||
|
||||
function onRomawi(int $bln): string
|
||||
{
|
||||
function onRomawi(int $bln)
|
||||
: string
|
||||
{
|
||||
switch ($bln) {
|
||||
case 1:
|
||||
return "I";
|
||||
@@ -225,51 +228,65 @@ function onRomawi(int $bln): string
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function penyebut($nilai)
|
||||
{
|
||||
function penyebut($nilai)
|
||||
{
|
||||
$nilai = abs($nilai);
|
||||
$huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
|
||||
$huruf = [
|
||||
"",
|
||||
"satu",
|
||||
"dua",
|
||||
"tiga",
|
||||
"empat",
|
||||
"lima",
|
||||
"enam",
|
||||
"tujuh",
|
||||
"delapan",
|
||||
"sembilan",
|
||||
"sepuluh",
|
||||
"sebelas"
|
||||
];
|
||||
$temp = "";
|
||||
if ($nilai < 12) {
|
||||
$temp = " ". $huruf[$nilai];
|
||||
} elseif ($nilai < 20) {
|
||||
$temp = penyebut($nilai - 10). " belas";
|
||||
} elseif ($nilai < 100) {
|
||||
$temp = penyebut($nilai / 10)." puluh". penyebut($nilai % 10);
|
||||
} elseif ($nilai < 200) {
|
||||
$temp = " " . $huruf[$nilai];
|
||||
} else if ($nilai < 20) {
|
||||
$temp = penyebut($nilai - 10) . " belas";
|
||||
} else if ($nilai < 100) {
|
||||
$temp = penyebut($nilai / 10) . " puluh" . penyebut($nilai % 10);
|
||||
} else if ($nilai < 200) {
|
||||
$temp = " seratus" . penyebut($nilai - 100);
|
||||
} elseif ($nilai < 1000) {
|
||||
} else if ($nilai < 1000) {
|
||||
$temp = penyebut($nilai / 100) . " ratus" . penyebut($nilai % 100);
|
||||
} elseif ($nilai < 2000) {
|
||||
} else if ($nilai < 2000) {
|
||||
$temp = " seribu" . penyebut($nilai - 1000);
|
||||
} elseif ($nilai < 1000000) {
|
||||
} else if ($nilai < 1000000) {
|
||||
$temp = penyebut($nilai / 1000) . " ribu" . penyebut($nilai % 1000);
|
||||
} elseif ($nilai < 1000000000) {
|
||||
} else if ($nilai < 1000000000) {
|
||||
$temp = penyebut($nilai / 1000000) . " juta" . penyebut($nilai % 1000000);
|
||||
} elseif ($nilai < 1000000000000) {
|
||||
} else if ($nilai < 1000000000000) {
|
||||
$temp = penyebut($nilai / 1000000000) . " milyar" . penyebut(fmod($nilai, 1000000000));
|
||||
} elseif ($nilai < 1000000000000000) {
|
||||
} else if ($nilai < 1000000000000000) {
|
||||
$temp = penyebut($nilai / 1000000000000) . " trilyun" . penyebut(fmod($nilai, 1000000000000));
|
||||
}
|
||||
return $temp;
|
||||
}
|
||||
}
|
||||
|
||||
function terbilang($nilai)
|
||||
{
|
||||
function terbilang($nilai)
|
||||
{
|
||||
if ($nilai < 0) {
|
||||
$hasil = "minus ". trim(penyebut($nilai));
|
||||
$hasil = "minus " . trim(penyebut($nilai));
|
||||
} else {
|
||||
$hasil = trim(penyebut($nilai));
|
||||
}
|
||||
return $hasil;
|
||||
}
|
||||
// andy add
|
||||
}
|
||||
|
||||
// andy add
|
||||
|
||||
|
||||
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
||||
{
|
||||
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
||||
{
|
||||
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
|
||||
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
|
||||
|
||||
@@ -285,19 +302,19 @@ function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
||||
}
|
||||
|
||||
return $hariKerja;
|
||||
}
|
||||
}
|
||||
|
||||
function holidays()
|
||||
{
|
||||
function holidays()
|
||||
{
|
||||
return HolidayCalendar::pluck('date')->map(
|
||||
function ($item) {
|
||||
return Carbon::parse($item)->format('Y-m-d');
|
||||
},
|
||||
)->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
function countPermohonanForUser($userId)
|
||||
{
|
||||
function countPermohonanForUser($userId)
|
||||
{
|
||||
$validStatuses = [
|
||||
'assign',
|
||||
'survey-completed',
|
||||
@@ -334,11 +351,11 @@ function countPermohonanForUser($userId)
|
||||
});
|
||||
|
||||
return $result->count();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getMaxFileSize($jenis)
|
||||
{
|
||||
function getMaxFileSize($jenis)
|
||||
{
|
||||
$jenisDokumen = JenisDokumen::where('name', $jenis)->first();
|
||||
if (!$jenisDokumen) {
|
||||
return 2048;
|
||||
@@ -347,15 +364,15 @@ function getMaxFileSize($jenis)
|
||||
$maxSizeInKB = (int) $jenisDokumen->max_size * 1024;
|
||||
|
||||
return $maxSizeInKB;
|
||||
}
|
||||
}
|
||||
|
||||
function getUser($userId)
|
||||
{
|
||||
function getUser($userId)
|
||||
{
|
||||
return User::find($userId);
|
||||
}
|
||||
}
|
||||
|
||||
function generateLpjUniqueCode($randomLength = 6)
|
||||
{
|
||||
function generateLpjUniqueCode($randomLength = 6)
|
||||
{
|
||||
|
||||
$year = date('y');
|
||||
$month = str_pad(date('m'), 2, '0', STR_PAD_LEFT);
|
||||
@@ -366,20 +383,20 @@ function generateLpjUniqueCode($randomLength = 6)
|
||||
|
||||
// Concatenate components to create the custom code
|
||||
return $year . $month . $day . $randomNumber;
|
||||
}
|
||||
}
|
||||
|
||||
function checkRegionUserName($userId)
|
||||
{
|
||||
function checkRegionUserName($userId)
|
||||
{
|
||||
$region = TeamsUsers::where('user_id', $userId)->first();
|
||||
if ($region) {
|
||||
return $region->team->regions->name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getNomorLaporan($permohonanId, $documentId, $type = 'nomor_laporan')
|
||||
{
|
||||
function getNomorLaporan($permohonanId, $documentId, $type = 'nomor_laporan')
|
||||
{
|
||||
|
||||
$laporan = Laporan::where([
|
||||
'permohonan_id' => $permohonanId,
|
||||
@@ -391,10 +408,10 @@ function getNomorLaporan($permohonanId, $documentId, $type = 'nomor_laporan')
|
||||
}
|
||||
|
||||
return $type == 'nomor_laporan' ? $laporan->nomor_laporan : $laporan->created_at;
|
||||
}
|
||||
}
|
||||
|
||||
function getCustomField($param)
|
||||
{
|
||||
function getCustomField($param)
|
||||
{
|
||||
if (is_numeric($param)) {
|
||||
$field = CustomField::find($param);
|
||||
} else {
|
||||
@@ -405,9 +422,10 @@ function getCustomField($param)
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function getWilayahName($code, $type)
|
||||
{
|
||||
}
|
||||
|
||||
function getWilayahName($code, $type)
|
||||
{
|
||||
try {
|
||||
$wilayah = null;
|
||||
|
||||
@@ -435,14 +453,14 @@ function getWilayahName($code, $type)
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
} catch (Exception $e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function formatLabel($key)
|
||||
{
|
||||
function formatLabel($key)
|
||||
{
|
||||
|
||||
static $labelCache = [];
|
||||
if (isset($labelCache[$key])) {
|
||||
@@ -453,10 +471,10 @@ function formatLabel($key)
|
||||
$labelCache[$key] = $customLabel->label ?? ucwords(str_replace('_', ' ', $key));
|
||||
|
||||
return $labelCache[$key];
|
||||
}
|
||||
}
|
||||
|
||||
function calculateSLA($permohonan, $type)
|
||||
{
|
||||
function calculateSLA($permohonan, $type)
|
||||
{
|
||||
if (!$type) {
|
||||
return null;
|
||||
}
|
||||
@@ -479,19 +497,20 @@ function calculateSLA($permohonan, $type)
|
||||
}
|
||||
|
||||
return $slaMap[$type] ?? null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Menghitung total nilai berdasarkan key dan jenis legalitas.
|
||||
*
|
||||
* @param array $detailsArray
|
||||
* @param string $key
|
||||
* @param int $jenisLegalitas
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
function calculateTotalLuas($detailsArray, $key, $jenisLegalitas, $defaultJenisLegalitas, $fallbackJenisLegalitas)
|
||||
{
|
||||
function calculateTotalLuas($detailsArray, $key, $jenisLegalitas, $defaultJenisLegalitas, $fallbackJenisLegalitas)
|
||||
{
|
||||
$total = 0;
|
||||
|
||||
if ($detailsArray) {
|
||||
@@ -545,30 +564,33 @@ function calculateTotalLuas($detailsArray, $key, $jenisLegalitas, $defaultJenisL
|
||||
}
|
||||
|
||||
return $total > 0 ? $total : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function ubahNomorHp($nomorHp) {
|
||||
function ubahNomorHp($nomorHp)
|
||||
{
|
||||
|
||||
$nomorHp = preg_replace('/\D/', '', $nomorHp);
|
||||
if (strpos($nomorHp, '62') === 0) {
|
||||
$nomorBaru = substr($nomorHp, 0, 5) . "xxxxx";
|
||||
return '+' . $nomorBaru;
|
||||
} elseif (strpos($nomorHp, '0') === 0) {
|
||||
} else if (strpos($nomorHp, '0') === 0) {
|
||||
|
||||
$nomorBaru = substr($nomorHp, 0, 5) . "xxxxxx";
|
||||
return $nomorBaru;
|
||||
} else {
|
||||
return "Nomor HP tidak valid";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function formatNotifikasi($data){
|
||||
$data = json_decode(json_encode($data->data));
|
||||
function formatNotifikasi($notifikasi)
|
||||
{
|
||||
$data = json_decode(json_encode($notifikasi->data));
|
||||
$message = $data->message;
|
||||
$data = $data->data;
|
||||
$notifikasi = [
|
||||
'title'=> 'Permohonan : '.$data->nomor_registrasi,
|
||||
'message'=> 'Status : '.str_replace(['-','_'],' ',ucwords($data->status))
|
||||
'title' => 'Permohonan : ' . $data->nomor_registrasi,
|
||||
'message' => $message,
|
||||
];
|
||||
return $notifikasi;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user