Menambahkan fitur log pada saat kirim tender dari semua KJPP

This commit is contained in:
2024-11-22 09:54:44 +07:00
committed by putrakuningan
parent 99d40b1cf0
commit 11bcd877d5

View File

@@ -684,7 +684,12 @@ class TenderController extends Controller
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
}
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where('status', '=', 1)->pluck('kjpp_rekanan_id')->toArray();
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)
->where('status', '=', 1)
->pluck('kjpp_rekanan_id')
->toArray();
$kjpps = KJPP::whereIn('id', $detail_penawaran)
->get()
->map(function ($item) {
@@ -702,10 +707,11 @@ class TenderController extends Controller
}
}
return array_filter($emails);
})
->flatten()
->toArray();
return [
'kjpp' => $item,
'emails' => array_filter($emails)
];
});
foreach ($permohonan->debiture->documents as $document) {
$village_permohonan = $document->village_code;
@@ -719,18 +725,142 @@ class TenderController extends Controller
$cities = City::where('code', $city_permohonan)->get();
$provinces = Province::where('code', $province_permohonan)->get();
$subject = 'Send Penawaran Email';
SendPenawaranTenderJob::dispatch(
$kjpps,
$penawaran,
$permohonan,
$villages,
$districts,
$cities,
$provinces
);
$body_pdf = view('lpj::penawaran.kirimEmail', [
'penawaran' => $penawaran,
'permohonan' => $permohonan,
'kjpps' => $kjpps->pluck('emails')->flatten()->toArray(),
'villages' => $villages,
'districts' => $districts,
'cities' => $cities,
'provinces' => $provinces
])->render();
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
try {
// Dispatch job untuk mengirim email
SendPenawaranTenderJob::dispatch(
$kjpps->pluck('emails')->flatten()->toArray(),
$penawaran,
$permohonan,
$villages,
$districts,
$cities,
$provinces
);
// Proses log email untuk setiap KJPP
foreach ($kjpps as $kjppData) {
foreach ($kjppData['emails'] as $email) {
// Cek log yang sudah ada
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'failed')
->first();
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'success')
->first();
if ($log) {
// Update log failed menjadi success
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success',
'error_message' => null,
'updated_at' => now(),
]);
} else if ($log1) {
// Update timestamp jika sudah success
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'updated_at' => now(),
]);
} else {
// Buat log baru
PenawaranEmailTenderLog::create([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success',
'error_message' => null,
'created_at' => now(),
'updated_at' => now(),
]);
}
}
}
return redirect()->route('tender.penawaran.ulang.index')
->with('success', 'Email Penawaran Berhasil Terkirim!');
} catch (\Exception $e) {
// Log email gagal untuk setiap KJPP
foreach ($kjpps as $kjppData) {
foreach ($kjppData['emails'] as $email) {
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'success')
->first();
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
->where('to_email', $email)
->where('status', 'failed')
->first();
if ($log) {
// Update log success menjadi failed
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else if ($log1) {
// Update error message jika sudah failed
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);
} else {
// Buat log baru dengan status failed
PenawaranEmailTenderLog::create([
'penawaran_id' => $penawaran->id,
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'created_at' => now(),
'updated_at' => now(),
]);
}
}
}
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])
->with('error', 'Email Penawaran Gagal Terkirim!');
}
}
public function kirimEmailKJPP($noreg, $id)
@@ -831,6 +961,11 @@ class TenderController extends Controller
if ($log) {
// Jika log ditemukan dan statusnya 'failed', update status menjadi 'success'
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'success',
'error_message' => null, // Reset error_message saat status diubah menjadi success
'updated_at' => now(),
@@ -838,6 +973,11 @@ class TenderController extends Controller
} else if ($log1) {
// Jika log ditemukan dan statusnya 'success' biarkan saja
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'updated_at' => now(),
]);
} else {
@@ -873,6 +1013,11 @@ class TenderController extends Controller
if ($log) {
// Jika log ditemukan dan statusnya 'success', update status menjadi 'failed'
$log->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'status' => 'failed',
'error_message' => $e->getMessage(),
'updated_at' => now(),
@@ -880,6 +1025,11 @@ class TenderController extends Controller
} else if ($log1) {
// Jika log ditemukan dan statusnya 'failed' biarkan saja
$log1->update([
'penawaran_id' => $penawaran->id,
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
'to_email' => $email,
'subject' => $subject,
'body_pdf' => $body_pdf,
'error_message' => $e->getMessage(),
'updated_at' => now(),
]);