Tambah model HolidayCalendar dan fungsi hitungHariKerja

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.
This commit is contained in:
Daeng Deni Mardaeni
2024-11-15 13:48:49 +07:00
parent 28d987927f
commit 38a8fb2d7d
2 changed files with 136 additions and 102 deletions

View File

@@ -1,11 +1,13 @@
<?php
use Carbon\Carbon;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranTender;
use Carbon\Carbon;
use Modules\Lpj\Models\HolidayCalendar;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranTender;
function formatTanggalIndonesia($date)
{
function formatTanggalIndonesia($date)
{
$carbonDate = Carbon::parse($date);
$indonesianMonths = [
'Januari',
@@ -23,35 +25,31 @@ function formatTanggalIndonesia($date)
];
$month = $indonesianMonths[$carbonDate->month - 1];
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
}
}
function formatTanggalIndonesia2($date)
{
\Carbon\Carbon::setLocale('id');
$waktu = \Carbon\Carbon::parse($date);
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;
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 ?? '');
}
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)
{
// andy add
function checkActiveDateRangePenawaran($id)
{
$penawaran = PenawaranTender::find($id);
$start_date = strtotime($penawaran->start_date);
@@ -73,17 +71,15 @@ 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?
$query = PenawaranDetailTender::select('id')
->where('penawaran_id', '=', $id)
->where('status','=',1)
->where(function ($query) {
$query = PenawaranDetailTender::select('id')->where('penawaran_id', '=', $id)->where('status', '=', 1)->where(
function ($query) {
// no_proposal
$query->orWhere('no_proposal', '', "");
$query->orWhereNull('no_proposal');
@@ -100,7 +96,8 @@ function checkKelengkapanDetailKJPP($id)
$query->orWhere('dokumen_persetujuan', '', "");
$query->orWhereNull('dokumen_persetujuan');
})->get();
},
)->get();
// $sql = DB::getQueryLog();
@@ -109,12 +106,11 @@ function checkKelengkapanDetailKJPP($id)
}
return $allow;
}
// convert
function convertSlug($slug)
{
}
// convert
function convertSlug($slug)
{
$words = explode('-', $slug);
foreach ($words as $index => $word) {
@@ -122,5 +118,33 @@ function convertSlug($slug)
}
return implode(' ', $words);
}
// andy add
}
// 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;
}

View File

@@ -0,0 +1,10 @@
<?php
namespace Modules\Lpj\Models;
use Modules\Basicdata\Models\HolidayCalendar as BasicdataHolidayCalendar;
class HolidayCalendar extends BasicdataHolidayCalendar
{
}