From f60a4c558e19212fddb121402f6b00dc863652d4 Mon Sep 17 00:00:00 2001 From: majid Date: Mon, 30 Dec 2024 09:28:06 +0700 Subject: [PATCH] prbaikan output foto di laporan dan penilai dan surveyor by region --- app/Helpers/Lpj.php | 573 +++++++++--------- .../penilai/components/foto-jaminan.blade.php | 4 +- .../components/foto-lampiran.blade.php | 2 +- .../components/print-out-sederhana.blade.php | 2 +- .../components/print-out-standard.blade.php | 56 +- resources/views/penilai/show.blade.php | 4 +- 6 files changed, 343 insertions(+), 298 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index a4bed0b..1137f65 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -1,331 +1,340 @@ translatedFormat('d F Y'); - } - return $waktu->translatedFormat('d F Y') . ' pukul ' . $waktu->format('H.i') . ' WIB'; +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 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) - { - $penawaran = PenawaranTender::find($id); +// 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())); + $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; - if ($todays_date >= $start_date && $todays_date <= $end_date) { - //Penawaran dibuka + } else { + if ($todays_date < $start_date) { + //Penawaran Belum 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) { + //Penawaran sudah ditutup $allow = false; } - - return $allow; } - // convert - function convertSlug($slug) - { - $words = explode('-', $slug); + return $allow; +} - foreach ($words as $index => $word) { - $words[$index] = strtoupper($word); - } +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'); - return implode(' ', $words); + // 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; } - // generate last penawaran.code - function onLastnumberCodePenawaran() - : string - { - // ambil code terakhir - $maxCode = PenawaranTender::max('code'); - // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC - // $penawaran = PenawaranTender::latest()->first(); - $penawaran = PenawaranTender::where('code','=',$maxCode)->first(); - $code_penawaran_last=''; + return $allow; +} - // nomor di set 0001 - $noUrutAkhirString = sprintf("%04s", 1); - if($penawaran) - { - $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric - $isNP = substr($maxCode, 0, 2); - if((8 == strlen($maxCode)) && ("NP"==$isNP) && (isNumeric($isNum))) - { - $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)); - } - // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 +// 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 +{ + // ambil code terakhir + $maxCode = PenawaranTender::max('code'); + // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC + // $penawaran = PenawaranTender::latest()->first(); + $penawaran = PenawaranTender::where('code', '=', $maxCode)->first(); + $code_penawaran_last = ''; + + // nomor di set 0001 + $noUrutAkhirString = sprintf("%04s", 1); + if ($penawaran) { + $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric + $isNP = substr($maxCode, 0, 2); + if ((8 == strlen($maxCode)) && ("NP" == $isNP) && (isNumeric($isNum))) { + $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; - } - - function isNumeric($str) - { - return ctype_digit($str); - } - - // generate last penawaran.no_spk - function onLastnumberCodePenawaranSPK($jenis_laporan_code): string - { - - // 20241124_001 ==> spk_no_core - // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 - // 001 / PJ / JKT / XI / FR / 2024 - $maxCode = PenawaranTender::max('spk_no_core'); - $penawaran = PenawaranTender::where('spk_no_core','=',$maxCode)->first(); - $no_spk_penawaran_last=''; - $year_penawaran_last=''; - $year_now = Carbon::now()->year; - // nomor di set 001 - $noUrutAkhirString = sprintf("%03s", 1); - if($penawaran) - { - $no_spk_penawaran_last = substr ($maxCode, -3); - $year_penawaran_last = substr ($maxCode, 0, 4); - - if($year_now == $year_penawaran_last) - { - $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); - } - // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 - } - - $month = onRomawi(Carbon::now()->month); - - $lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now; - return $lastSPK; - } - - function onRomawi(int $bln): string - { - switch ($bln){ - case 1: - return "I"; - break; - case 2: - return "II"; - break; - case 3: - return "III"; - break; - case 4: - return "IV"; - break; - case 5: - return "V"; - break; - case 6: - return "VI"; - break; - case 7: - return "VII"; - break; - case 8: - return "VIII"; - break; - case 9: - return "IX"; - break; - case 10: - return "X"; - break; - case 11: - return "XI"; - break; - case 12: - return "XII"; - break; - + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 } } - function penyebut($nilai) { - $nilai = abs($nilai); - $huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"); - $temp = ""; - if ($nilai < 12) { - $temp = " ". $huruf[$nilai]; - } else if ($nilai <20) { - $temp = penyebut($nilai - 10). " belas"; - } else if ($nilai < 100) { - $temp = penyebut($nilai/10)." puluh". penyebut($nilai % 10); - } else if ($nilai < 200) { - $temp = " seratus" . penyebut($nilai - 100); - } else if ($nilai < 1000) { - $temp = penyebut($nilai/100) . " ratus" . penyebut($nilai % 100); - } else if ($nilai < 2000) { - $temp = " seribu" . penyebut($nilai - 1000); - } else if ($nilai < 1000000) { - $temp = penyebut($nilai/1000) . " ribu" . penyebut($nilai % 1000); - } else if ($nilai < 1000000000) { - $temp = penyebut($nilai/1000000) . " juta" . penyebut($nilai % 1000000); - } else if ($nilai < 1000000000000) { - $temp = penyebut($nilai/1000000000) . " milyar" . penyebut(fmod($nilai,1000000000)); - } else if ($nilai < 1000000000000000) { - $temp = penyebut($nilai/1000000000000) . " trilyun" . penyebut(fmod($nilai,1000000000000)); - } - return $temp; - } + return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; +} - function terbilang($nilai) { - if($nilai<0) { - $hasil = "minus ". trim(penyebut($nilai)); - } else { - $hasil = trim(penyebut($nilai)); - } - return $hasil; - } - // andy add +function isNumeric($str) +{ + return ctype_digit($str); +} +// generate last penawaran.no_spk +function onLastnumberCodePenawaranSPK($jenis_laporan_code): string +{ - function hitungHariKerja($tanggalMulai, $tanggalSelesai) - { - $tanggalMulai = Carbon::parse($tanggalMulai)->startOfDay(); - $tanggalSelesai = Carbon::parse($tanggalSelesai)->endOfDay(); + // 20241124_001 ==> spk_no_core + // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 + // 001 / PJ / JKT / XI / FR / 2024 + $maxCode = PenawaranTender::max('spk_no_core'); + $penawaran = PenawaranTender::where('spk_no_core', '=', $maxCode)->first(); + $no_spk_penawaran_last = ''; + $year_penawaran_last = ''; + $year_now = Carbon::now()->year; + // nomor di set 001 + $noUrutAkhirString = sprintf("%03s", 1); + if ($penawaran) { + $no_spk_penawaran_last = substr($maxCode, -3); + $year_penawaran_last = substr($maxCode, 0, 4); - $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(); + if ($year_now == $year_penawaran_last) { + $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); } - - return $hariKerja; + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 } - function holidays() - { - return HolidayCalendar::pluck('date')->map( - function ($item) { - return Carbon::parse($item)->format('Y-m-d'); - }, - )->toArray(); - } + $month = onRomawi(Carbon::now()->month); - function countPermohonanForUser($userId) - { - return Penilaian::whereHas('userPenilai', function ($query) use ($userId) { - $query->where('user_id', $userId); - }) - ->whereHas('permohonan', function ($query) { - $query->where('status', 'assign'); - }) - ->count(); + $lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now; + return $lastSPK; +} + +function onRomawi(int $bln): string +{ + switch ($bln) { + case 1: + return "I"; + break; + case 2: + return "II"; + break; + case 3: + return "III"; + break; + case 4: + return "IV"; + break; + case 5: + return "V"; + break; + case 6: + return "VI"; + break; + case 7: + return "VII"; + break; + case 8: + return "VIII"; + break; + case 9: + return "IX"; + break; + case 10: + return "X"; + break; + case 11: + return "XI"; + break; + case 12: + return "XII"; + break; } +} - function getMaxFileSize($jenis) - { - $jenisDokumen = JenisDokumen::where('name', $jenis)->first(); - if (!$jenisDokumen) { - return 2048; +function penyebut($nilai) +{ + $nilai = abs($nilai); + $huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"); + $temp = ""; + if ($nilai < 12) { + $temp = " ". $huruf[$nilai]; + } elseif ($nilai < 20) { + $temp = penyebut($nilai - 10). " belas"; + } elseif ($nilai < 100) { + $temp = penyebut($nilai / 10)." puluh". penyebut($nilai % 10); + } elseif ($nilai < 200) { + $temp = " seratus" . penyebut($nilai - 100); + } elseif ($nilai < 1000) { + $temp = penyebut($nilai / 100) . " ratus" . penyebut($nilai % 100); + } elseif ($nilai < 2000) { + $temp = " seribu" . penyebut($nilai - 1000); + } elseif ($nilai < 1000000) { + $temp = penyebut($nilai / 1000) . " ribu" . penyebut($nilai % 1000); + } elseif ($nilai < 1000000000) { + $temp = penyebut($nilai / 1000000) . " juta" . penyebut($nilai % 1000000); + } elseif ($nilai < 1000000000000) { + $temp = penyebut($nilai / 1000000000) . " milyar" . penyebut(fmod($nilai, 1000000000)); + } elseif ($nilai < 1000000000000000) { + $temp = penyebut($nilai / 1000000000000) . " trilyun" . penyebut(fmod($nilai, 1000000000000)); + } + return $temp; +} + +function terbilang($nilai) +{ + if ($nilai < 0) { + $hasil = "minus ". trim(penyebut($nilai)); + } else { + $hasil = trim(penyebut($nilai)); + } + return $hasil; +} +// 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++; } - //konversi ke KB (1 MB = 1024 KB) - $maxSizeInKB = (int) $jenisDokumen->max_size * 1024; - - return $maxSizeInKB; + $tanggalSekarang->addDay(); } - function getUser($userId){ - return User::find($userId); + return $hariKerja; +} + +function holidays() +{ + return HolidayCalendar::pluck('date')->map( + function ($item) { + return Carbon::parse($item)->format('Y-m-d'); + }, + )->toArray(); +} + +function countPermohonanForUser($userId) +{ + return Penilaian::whereHas('userPenilai', function ($query) use ($userId) { + $query->where('user_id', $userId); + }) + ->whereHas('permohonan', function ($query) { + $query->where('status', 'assign'); + }) + ->count(); + +} + + +function getMaxFileSize($jenis) +{ + $jenisDokumen = JenisDokumen::where('name', $jenis)->first(); + if (!$jenisDokumen) { + return 2048; } + //konversi ke KB (1 MB = 1024 KB) + $maxSizeInKB = (int) $jenisDokumen->max_size * 1024; - function generateLpjUniqueCode($randomLength = 6) - { + return $maxSizeInKB; +} - $year = date('y'); - $month = str_pad(date('m'), 2, '0', STR_PAD_LEFT); - $day = str_pad(date('d'), 2, '0', STR_PAD_LEFT); +function getUser($userId) +{ + return User::find($userId); +} - // Generate random numbers - $randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT); +function generateLpjUniqueCode($randomLength = 6) +{ - // Concatenate components to create the custom code - return $year . $month . $day . $randomNumber; + $year = date('y'); + $month = str_pad(date('m'), 2, '0', STR_PAD_LEFT); + $day = str_pad(date('d'), 2, '0', STR_PAD_LEFT); + + // Generate random numbers + $randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT); + + // Concatenate components to create the custom code + return $year . $month . $day . $randomNumber; +} + +function checkRegionUserName($userId) +{ + $region = TeamsUsers::where('user_id', $userId)->first(); + if ($region) { + return $region->team->regions->name; + } else { + return null; } +} diff --git a/resources/views/penilai/components/foto-jaminan.blade.php b/resources/views/penilai/components/foto-jaminan.blade.php index 37427c0..4681453 100644 --- a/resources/views/penilai/components/foto-jaminan.blade.php +++ b/resources/views/penilai/components/foto-jaminan.blade.php @@ -75,7 +75,7 @@ @endforeach @endif - @if (isset($formFoto['foto_lingkungan']['foto_lingkungan'])) + {{-- @if (isset($formFoto['foto_lingkungan']['foto_lingkungan'])) @foreach ($formFoto['foto_lingkungan']['foto_lingkungan'][0] as $index => $item)

@@ -91,7 +91,7 @@ @endif

@endforeach - @endif + @endif --}} @if (isset($formFoto['foto_basement']))
diff --git a/resources/views/penilai/components/foto-lampiran.blade.php b/resources/views/penilai/components/foto-lampiran.blade.php index b3d5f0f..0e41d0f 100644 --- a/resources/views/penilai/components/foto-lampiran.blade.php +++ b/resources/views/penilai/components/foto-lampiran.blade.php @@ -263,7 +263,7 @@ @endphp @if ($imagePath && file_exists(storage_path('app/public/' . $imagePath))) - {{ $type }} @endif

{{ Str::title(str_replace('_', ' ', $type)) }}

diff --git a/resources/views/penilai/components/print-out-sederhana.blade.php b/resources/views/penilai/components/print-out-sederhana.blade.php index d183eff..eadb5ec 100644 --- a/resources/views/penilai/components/print-out-sederhana.blade.php +++ b/resources/views/penilai/components/print-out-sederhana.blade.php @@ -1067,7 +1067,7 @@ @endphp @if ($imagePath && file_exists(storage_path('app/public/' . $imagePath))) - {{ $type }} @endif

{{ Str::title(str_replace('_', ' ', $type)) }}

diff --git a/resources/views/penilai/components/print-out-standard.blade.php b/resources/views/penilai/components/print-out-standard.blade.php index ffd18e2..da50a29 100644 --- a/resources/views/penilai/components/print-out-standard.blade.php +++ b/resources/views/penilai/components/print-out-standard.blade.php @@ -501,7 +501,7 @@ $cekHub = isset($forminspeksi['asset']['hub_cadeb']) && $forminspeksi['asset']['hub_cadeb'] === 'sesuai' ? 'sesuai' : 'tidak sesuai'; - + $hubCadeb = isset($forminspeksi['asset']['hub_cadeb'][$cekHub]) ? $forminspeksi['asset']['hub_cadeb'][$cekHub] : null; @@ -515,18 +515,18 @@ @foreach ($basicData['hubCadeb'] as $item) @php $count++; @endphp - - @if ($count % 3 === 0) + + @if ($count % 3 === 0) @endif @endforeach - + {{-- Isi kolom kosong jika tidak genap --}} @if ($count % 3 !== 0) @for ($i = 0; $i < (3 - $count % 3); $i++) @@ -538,7 +538,7 @@ @endif - + @php @@ -848,8 +848,8 @@ @if ($kategori->spek_kategori_bangunan_id == $spesifikasi->id)
- + +
+
+
+ PETA +
+
+ +
+ @php + $fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat']; + if (($key = array_search('foto_tempat', $fotoTypes)) !== false) { + unset($fotoTypes[$key]); + array_unshift($fotoTypes, 'foto_tempat'); + } + @endphp + + @if (isset($forminspeksi)) + @forelse ($fotoTypes as $type) +
+ @php + $imagePath = $forminspeksi[$type] ?? null; + @endphp + + @if ($imagePath && file_exists(storage_path('app/public/' . $imagePath))) + {{ $type }} + @endif +

{{ Str::title(str_replace('_', ' ', $type)) }}

+
+ @empty +

Tidak ada tipe foto yang tersedia

+ @endforelse + @endif +
+ +
diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 40b63fa..3d60152 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -116,7 +116,7 @@ {{ $surveyor->userPenilaiTeam->name }}

-

{{ $permohonan->region->name }} +

{{ checkRegionUserName($surveyor->userPenilaiTeam->id) }}