Menambahkan fitur log pada saat kirim tender dari semua KJPP
This commit is contained in:
@@ -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(),
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user