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()); $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(); // 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; }