Menambahkan file model HolidayCalendar dan fungsi hitungHariKerja ke dalam helper Lpj.php untuk menghitung jumlah hari kerja antara dua tanggal dengan mengabaikan akhir pekan dan hari libur yang tercatat dalam HolidayCalendar.
151 lines
4.5 KiB
PHP
151 lines
4.5 KiB
PHP
<?php
|
|
|
|
use Carbon\Carbon;
|
|
use Modules\Lpj\Models\HolidayCalendar;
|
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
|
use Modules\Lpj\Models\PenawaranTender;
|
|
|
|
|
|
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 formatTanggalIndonesia2($date)
|
|
{
|
|
Carbon::setLocale('id');
|
|
$waktu = Carbon::parse($date);
|
|
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());
|
|
|
|
$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);
|
|
}
|
|
|
|
// andy add
|
|
|
|
|
|
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
|
{
|
|
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
|
|
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
|
|
|
|
$hariKerja = 0;
|
|
$tanggalSekarang = $tanggalMulai->copy();
|
|
|
|
// Ambil semua tanggal libur dari tabel holiday calendar
|
|
$tanggalLibur = HolidayCalendar::whereBetween('date', [$tanggalMulai, $tanggalSelesai])->pluck('date')->map(
|
|
function ($item) {
|
|
return Carbon::parse($item)->format('Y-m-d');
|
|
},
|
|
)->toArray();
|
|
|
|
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'), $tanggalLibur)) {
|
|
$hariKerja++;
|
|
}
|
|
$tanggalSekarang->addDay();
|
|
}
|
|
|
|
return $hariKerja;
|
|
}
|