Melakukan perbaikan pada format penulisan kode untuk meningkatkan keterbacaan dan konsistensi. Memindahkan logika terkait tanggal libur dalam fungsi `countHariKerja` ke fungsi terpisah `holidays` agar lebih modular dan mudah dikelola.
158 lines
4.9 KiB
PHP
158 lines
4.9 KiB
PHP
<?php
|
|
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Modules\Lpj\Models\HolidayCalendar;
|
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
|
use Modules\Lpj\Models\PenawaranTender;
|
|
|
|
function formatTanggalIndonesia($date, $time = false)
|
|
{
|
|
Carbon::setLocale('id');
|
|
$waktu = Carbon::parse($date);
|
|
if (!$time) {
|
|
return $waktu->translatedFormat('d F Y');
|
|
}
|
|
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
|
|
}
|
|
|
|
|
|
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 ?? '');
|
|
}
|
|
|
|
// andy add
|
|
function checkActiveDateRangePenawaran($id)
|
|
{
|
|
$penawaran = PenawaranTender::find($id);
|
|
|
|
$start_date = strtotime($penawaran->start_date);
|
|
$end_date = strtotime($penawaran->end_date);
|
|
// $todays_date = strtotime(now());
|
|
$todays_date = strtotime("+1 day", strtotime(now()));
|
|
|
|
$allow = true;
|
|
if ($todays_date >= $start_date && $todays_date <= $end_date) {
|
|
//Penawaran dibuka
|
|
$allow = true;
|
|
} else {
|
|
if ($todays_date < $start_date) {
|
|
//Penawaran Belum dibuka
|
|
$allow = true;
|
|
} else {
|
|
//Penawaran sudah ditutup
|
|
$allow = false;
|
|
}
|
|
}
|
|
|
|
return $allow;
|
|
}
|
|
|
|
function checkKelengkapanDetailKJPP($id)
|
|
{
|
|
$allow = true;
|
|
// DB::enableQueryLog();
|
|
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
|
|
$query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where(
|
|
function ($query) {
|
|
// no_proposal
|
|
$query->orWhere('no_proposal', '', "");
|
|
$query->orWhereNull('no_proposal');
|
|
|
|
// tgl_proposal
|
|
$query->orWhere('tgl_proposal', '', "");
|
|
$query->orWhereNull('tgl_proposal');
|
|
|
|
$query->orWhere('biaya_penawaran', '', "");
|
|
$query->orWhereNull('biaya_penawaran');
|
|
|
|
$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;
|
|
}
|
|
|
|
// convert
|
|
function convertSlug($slug)
|
|
{
|
|
$words = explode('-', $slug);
|
|
|
|
foreach ($words as $index => $word) {
|
|
$words[$index] = strtoupper($word);
|
|
}
|
|
|
|
return implode(' ', $words);
|
|
}
|
|
|
|
// generate last penawaran.code
|
|
function onLastnumberCodePenawaran()
|
|
: string
|
|
{
|
|
// chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC
|
|
$maxCode = PenawaranTender::max('code');
|
|
// $penawaran = PenawaranTender::latest()->first();
|
|
$penawaran = PenawaranTender::where('code', '=', $maxCode)->first();
|
|
$code_penawaran_last = '';
|
|
$noUrutAkhirString = sprintf("%04s", 1);
|
|
if ($penawaran) {
|
|
$code_penawaran_last = substr($maxCode, -4);
|
|
$year_penawaran_last = Carbon::parse($penawaran->created_at)->year;
|
|
$year_now = Carbon::now()->year;
|
|
if ($year_now == $year_penawaran_last) {
|
|
$noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1));
|
|
}
|
|
}
|
|
|
|
return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString;
|
|
}
|
|
|
|
// andy add
|
|
|
|
|
|
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
|
{
|
|
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
|
|
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
|
|
|
|
$hariKerja = 0;
|
|
$tanggalSekarang = $tanggalMulai->copy();
|
|
|
|
while ($tanggalSekarang <= $tanggalSelesai) {
|
|
// Cek apakah hari ini bukan Sabtu atau Minggu dan bukan hari libur
|
|
if (!$tanggalSekarang->isWeekend() && !in_array($tanggalSekarang->format('Y-m-d'), holidays())) {
|
|
$hariKerja++;
|
|
}
|
|
$tanggalSekarang->addDay();
|
|
}
|
|
|
|
return $hariKerja;
|
|
}
|
|
|
|
function holidays()
|
|
{
|
|
return HolidayCalendar::pluck('date')->map(
|
|
function ($item) {
|
|
return Carbon::parse($item)->format('Y-m-d');
|
|
},
|
|
)->toArray();
|
|
}
|