diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 9a2e05e..b72f80e 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -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,9 +725,21 @@ class TenderController extends Controller $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); + $subject = 'Send Penawaran Email'; + $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(); + + // Dispatch job untuk mengirim email SendPenawaranTenderJob::dispatch( - $kjpps, + $kjpps->pluck('emails')->flatten()->toArray(), $penawaran, $permohonan, $villages, @@ -730,7 +748,119 @@ class TenderController extends Controller $provinces ); - return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); + try { + // 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) @@ -830,13 +960,23 @@ 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(), ]); } else if ($log1) { // Jika log ditemukan dan statusnya 'success' biarkan saja - $log1->update([ // Reset error_message saat status diubah menjadi success + $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 { @@ -859,18 +999,54 @@ class TenderController extends Controller } catch (\Exception $e) { // Log email gagal foreach ($kjpps as $email) { - PenawaranEmailTenderLog::create([ - '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(), - 'created_at' => now(), - 'updated_at' => now(), - ]); + $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) { + // 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(), + ]); + } 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(), + ]); + } else { + PenawaranEmailTenderLog::create([ + '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(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + } } + return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!'); } } diff --git a/resources/views/penawaran/kirimEmail.blade.php b/resources/views/penawaran/kirimEmail.blade.php index 3c6efac..dd41a5f 100644 --- a/resources/views/penawaran/kirimEmail.blade.php +++ b/resources/views/penawaran/kirimEmail.blade.php @@ -131,12 +131,22 @@ @endphp @if (is_object($details)) - @if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) - @php $luas_tanah = $details->luas_tanah; @endphp + @if ( + $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' && + isset($details->{'Luas Tanah'}) && + is_numeric($details->{'Luas Tanah'})) + @php + $luas_tanah = $details->{'Luas Tanah'}; + @endphp @endif - @if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) - @php $luas_bangunan = $details->luas_bangunan; @endphp + @if ( + $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' && + isset($details->{'Luas Bangunan'}) && + is_numeric($details->{'Luas Bangunan'})) + @php + $luas_bangunan = $details->{'Luas Bangunan'}; + @endphp @endif @endif @endforeach diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php index fd4745a..be9b98b 100644 --- a/resources/views/penawaran/kirimEmailKJPP.blade.php +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -133,12 +133,22 @@ @endphp @if (is_object($details)) - @if (isset($details->luas_tanah) && is_numeric($details->luas_tanah)) - @php $luas_tanah = $details->luas_tanah; @endphp + @if ( + $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' && + isset($details->{'Luas Tanah'}) && + is_numeric($details->{'Luas Tanah'})) + @php + $luas_tanah = $details->{'Luas Tanah'}; + @endphp @endif - @if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan)) - @php $luas_bangunan = $details->luas_bangunan; @endphp + @if ( + $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' && + isset($details->{'Luas Bangunan'}) && + is_numeric($details->{'Luas Bangunan'})) + @php + $luas_bangunan = $details->{'Luas Bangunan'}; + @endphp @endif @endif @endforeach diff --git a/resources/views/penawaran/showKirimEmail.blade.php b/resources/views/penawaran/showKirimEmail.blade.php index 5063254..6743770 100644 --- a/resources/views/penawaran/showKirimEmail.blade.php +++ b/resources/views/penawaran/showKirimEmail.blade.php @@ -68,18 +68,10 @@
Dear
@php
@@ -116,12 +116,22 @@
@endphp
@if (is_object($details))
- @if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
- @php $luas_tanah = $details->luas_tanah; @endphp
+ @if (
+ $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
+ isset($details->{'Luas Tanah'}) &&
+ is_numeric($details->{'Luas Tanah'}))
+ @php
+ $luas_tanah = $details->{'Luas Tanah'};
+ @endphp
@endif
- @if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
- @php $luas_bangunan = $details->luas_bangunan; @endphp
+ @if (
+ $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
+ isset($details->{'Luas Bangunan'}) &&
+ is_numeric($details->{'Luas Bangunan'}))
+ @php
+ $luas_bangunan = $details->{'Luas Bangunan'};
+ @endphp
@endif
@endif
@endforeach
@@ -139,12 +149,12 @@
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. Mohon proposal dapat saya terima segera, sebelum
- {{ formatTanggalIndonesia($penawaran->end_date,true) }}
+ {{ formatTanggalIndonesia($penawaran->end_date, true) }}
Best Regards,
{{ $permohonan->user->name }}
+ alt="{{ $permohonan->user->name }}" width="200" class="signature">
Dear
@php
@@ -114,12 +114,22 @@
@endphp
@if (is_object($details))
- @if (isset($details->luas_tanah) && is_numeric($details->luas_tanah))
- @php $luas_tanah = $details->luas_tanah; @endphp
+ @if (
+ $detail->jenisLegalitasJaminan->custom_field === 'Luas Tanah' &&
+ isset($details->{'Luas Tanah'}) &&
+ is_numeric($details->{'Luas Tanah'}))
+ @php
+ $luas_tanah = $details->{'Luas Tanah'};
+ @endphp
@endif
- @if (isset($details->luas_bangunan) && is_numeric($details->luas_bangunan))
- @php $luas_bangunan = $details->luas_bangunan; @endphp
+ @if (
+ $detail->jenisLegalitasJaminan->custom_field === 'Luas Bangunan' &&
+ isset($details->{'Luas Bangunan'}) &&
+ is_numeric($details->{'Luas Bangunan'}))
+ @php
+ $luas_bangunan = $details->{'Luas Bangunan'};
+ @endphp
@endif
@endif
@endforeach
@@ -142,7 +152,7 @@
Best Regards,
{{ $permohonan->user->name }}
+ alt="{{ $permohonan->user->name }}" width="200" class="signature">