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:
@@ -1,126 +1,150 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
use Modules\Lpj\Models\HolidayCalendar;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
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\Carbon::setLocale('id');
|
|
||||||
$waktu = \Carbon\Carbon::parse($date);
|
|
||||||
return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function formatRupiah($number)
|
function formatTanggalIndonesia($date)
|
||||||
{
|
{
|
||||||
$number = (float) $number;
|
$carbonDate = Carbon::parse($date);
|
||||||
return 'Rp ' . number_format($number, 2, ',', '.');
|
$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 formatAlamat($alamat)
|
function formatRupiah($number)
|
||||||
{
|
{
|
||||||
return ($alamat->address ? $alamat->address . ', ' : '') .
|
$number = (float)$number;
|
||||||
(isset($alamat->village) ? $alamat->village->name . ', ' : '') .
|
return 'Rp ' . number_format($number, 2, ',', '.');
|
||||||
(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);
|
function formatAlamat($alamat)
|
||||||
$end_date = strtotime($penawaran->end_date);
|
{
|
||||||
$todays_date = strtotime(now());
|
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;
|
$allow = true;
|
||||||
} else {
|
if ($todays_date >= $start_date && $todays_date <= $end_date) {
|
||||||
if ($todays_date < $start_date) {
|
//Penawaran dibuka
|
||||||
//Penawaran Belum dibuka
|
|
||||||
$allow = true;
|
$allow = true;
|
||||||
} else {
|
} else {
|
||||||
//Penawaran sudah ditutup
|
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;
|
$allow = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $allow;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $allow;
|
// convert
|
||||||
}
|
function convertSlug($slug)
|
||||||
|
{
|
||||||
|
$words = explode('-', $slug);
|
||||||
|
|
||||||
function checkKelengkapanDetailKJPP($id)
|
foreach ($words as $index => $word) {
|
||||||
{
|
$words[$index] = strtoupper($word);
|
||||||
$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', '', "");
|
return implode(' ', $words);
|
||||||
$query->orWhereNull('attachment');
|
|
||||||
|
|
||||||
$query->orWhere('dokumen_persetujuan', '', "");
|
|
||||||
$query->orWhereNull('dokumen_persetujuan');
|
|
||||||
})->get();
|
|
||||||
// $sql = DB::getQueryLog();
|
|
||||||
|
|
||||||
|
|
||||||
if (sizeof($query) > 0) {
|
|
||||||
$allow = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $allow;
|
// andy add
|
||||||
}
|
|
||||||
|
|
||||||
// convert
|
|
||||||
function convertSlug($slug)
|
|
||||||
{
|
|
||||||
|
|
||||||
$words = explode('-', $slug);
|
function hitungHariKerja($tanggalMulai, $tanggalSelesai)
|
||||||
|
{
|
||||||
|
$tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay();
|
||||||
|
$tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay();
|
||||||
|
|
||||||
foreach ($words as $index => $word) {
|
$hariKerja = 0;
|
||||||
$words[$index] = strtoupper($word);
|
$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;
|
||||||
}
|
}
|
||||||
|
|
||||||
return implode(' ', $words);
|
|
||||||
}
|
|
||||||
// andy add
|
|
||||||
|
|||||||
10
app/Models/HolidayCalendar.php
Normal file
10
app/Models/HolidayCalendar.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Modules\Basicdata\Models\HolidayCalendar as BasicdataHolidayCalendar;
|
||||||
|
|
||||||
|
class HolidayCalendar extends BasicdataHolidayCalendar
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user