fix(tender): perbaiki pengolahan email kantor

- Mengubah cara pengolahan email dari string menjadi koleksi untuk menghindari duplikasi.
- Memastikan bahwa detail email yang diambil dari JSON diproses dengan benar.
- Menambahkan validasi untuk memastikan bahwa detail email adalah array sebelum diakses.
This commit is contained in:
Daeng Deni Mardaeni
2025-02-27 13:18:15 +07:00
parent e6b6ad6e2c
commit 222ada0f0c

View File

@@ -700,15 +700,17 @@ class TenderController extends Controller
$kjpps = KJPP::whereIn('id', $detail_penawaran) $kjpps = KJPP::whereIn('id', $detail_penawaran)
->get() ->get()
->map(function ($item) { ->map(function ($item) {
$emails = [$item->email_kantor]; $emails = collect(explode(',', $item->email_kantor))->filter()->unique();
// Parse JSON string jika ada dan tidak kosong // Parse JSON string jika ada dan tidak kosong
if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') { if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') {
$detail_emails = json_decode($item->detail_email_kantor, true); $detail_emails = json_decode($item->detail_email_kantor, true);
if (is_array($detail_emails)) { if (is_array($detail_emails)) {
foreach ($detail_emails as $detail) { foreach ($detail_emails as $detail) {
if (isset($detail['email_kantor'])) { if (is_array($detail) && isset($detail['email_kantor'])) {
$emails[] = $detail['email_kantor']; $emails->push($detail['email_kantor']);
} elseif (is_string($detail)) {
$emails->push($detail);
} }
} }
} }
@@ -716,10 +718,11 @@ class TenderController extends Controller
return [ return [
'kjpp' => $item, 'kjpp' => $item,
'emails' => array_filter($emails) 'emails' => array_filter($emails->unique()->values()->all())
]; ];
}); });
foreach ($permohonan->documents as $document) { foreach ($permohonan->documents as $document) {
$village_permohonan = $document->village_code; $village_permohonan = $document->village_code;
$district_permohonan = $document->district_code; $district_permohonan = $document->district_code;
@@ -894,26 +897,30 @@ class TenderController extends Controller
$detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray(); $detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray();
$kjpps = KJPP::whereIn('id', $detail_penawaran) $kjpps = KJPP::whereIn('id', $detail_penawaran)
->get() ->get()
->map(function ($item) { ->map(function ($item) {
$emails = [$item->email_kantor]; $emails = collect(explode(',', $item->email_kantor))->filter()->unique();
// Parse JSON string jika ada dan tidak kosong // Parse JSON string jika ada dan tidak kosong
if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') { if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') {
$detail_emails = json_decode($item->detail_email_kantor, true); $detail_emails = json_decode($item->detail_email_kantor, true);
if (is_array($detail_emails)) { if (is_array($detail_emails)) {
foreach ($detail_emails as $detail) { foreach ($detail_emails as $detail) {
if (isset($detail['email_kantor'])) { if (is_array($detail) && isset($detail['email_kantor'])) {
$emails[] = $detail['email_kantor']; $emails->add($detail['email_kantor']);
} } elseif (is_string($detail)) {
} $emails->add($detail);
} }
} }
}
}
return array_filter($emails); return array_filter(array_values(iterator_to_array($emails)));
}) })
->flatten() ->flatten()
->toArray(); ->unique()
->values()
->toArray();
$dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first(); $dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first();