From 7f57155de71770a107cac7bb91c3e084b042574f Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 14 Nov 2024 15:46:32 +0700 Subject: [PATCH 01/17] Memperbaiki kontroller tender untuk memeriksa apakah nomor registrasi itu ada di tabel penawaran kalau tidak maka kembali ke halaman create --- app/Http/Controllers/TenderController.php | 8 +++++++- resources/views/penawaran/index.blade.php | 3 --- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index f52ab80..8f2c7d2 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -127,6 +127,10 @@ class TenderController extends Controller $penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + if (!$penawaran1) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!'); + } + if ($penawaran1->status != 'tender') { return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); } @@ -155,12 +159,14 @@ class TenderController extends Controller { // Find the specific penawaran by its ID $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); - $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); if (!$penawaran) { return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!'); } + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + if ($penawaran->status != 'tender') { return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); } diff --git a/resources/views/penawaran/index.blade.php b/resources/views/penawaran/index.blade.php index 405332a..a8f1d64 100644 --- a/resources/views/penawaran/index.blade.php +++ b/resources/views/penawaran/index.blade.php @@ -134,9 +134,6 @@ } else { // Jika tidak ada, tampilkan tombol "Tambah Penawaran" actionDiv.innerHTML = ` - - - From 2296fd0e19a5395a3c196ef8edfbc93945e658f6 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 14 Nov 2024 15:49:07 +0700 Subject: [PATCH 02/17] menghapus tombol detail pada tambah penawaran tender --- resources/views/penawaran/create.blade.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index d8b2b5c..225c174 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -15,8 +15,6 @@ Tambah Data Penawaran
- Detail Back From 8a97d2d1094f81d7b089c2f0da853034675eb781 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 14 Nov 2024 15:52:58 +0700 Subject: [PATCH 03/17] memperbaiki style pada download pdf surat tender --- resources/views/penawaran/surat_tender_download.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/penawaran/surat_tender_download.blade.php b/resources/views/penawaran/surat_tender_download.blade.php index ef6b219..0f058bc 100644 --- a/resources/views/penawaran/surat_tender_download.blade.php +++ b/resources/views/penawaran/surat_tender_download.blade.php @@ -152,8 +152,8 @@
- Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi. Mohon proposal - dapat saya terima segera, sebelum + Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }}
From 7db25c2226604b575859df18c6dd91f1ad3faaac Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 15 Nov 2024 15:16:59 +0700 Subject: [PATCH 04/17] memperbaiki show permohonan yang typo --- resources/views/permohonan/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/permohonan/show.blade.php b/resources/views/permohonan/show.blade.php index 3ccb967..69b2018 100644 --- a/resources/views/permohonan/show.blade.php +++ b/resources/views/permohonan/show.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('lpj::component.detail-jaminan',['backLink' => 'prmohonan.index']) + @include('lpj::component.detail-jaminan', ['backLink' => 'permohonan.index'])
From 5afd104d15e971912a73d1e17ddc927875f7b48f Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 15 Nov 2024 15:16:59 +0700 Subject: [PATCH 05/17] memperbaiki show permohonan yang typo --- resources/views/permohonan/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/permohonan/show.blade.php b/resources/views/permohonan/show.blade.php index 3ccb967..69b2018 100644 --- a/resources/views/permohonan/show.blade.php +++ b/resources/views/permohonan/show.blade.php @@ -6,7 +6,7 @@ @section('content')
- @include('lpj::component.detail-jaminan',['backLink' => 'prmohonan.index']) + @include('lpj::component.detail-jaminan', ['backLink' => 'permohonan.index'])
From 9af9c343d1d962123c395051735ee2cb7d2a5421 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 18 Nov 2024 14:17:19 +0700 Subject: [PATCH 06/17] Perbaiki pengelolaan dokumen pada History Permohonan Mengganti field 'attachment' menjadi 'dokumen' pada model Permohonan dan mengupdate referensi terkait di view dan service. Juga menambahkan dukungan multipart/form-data pada form. Perubahan ini memperbaiki manajemen file yang diunggah dan memastikan integritas data terlindungi saat memperbarui permohonan. --- app/Models/Permohonan.php | 11 +++-------- app/Services/PermohonanHistoryService.php | 9 +-------- .../views/permohonan/authorization/show.blade.php | 4 ++-- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 60c9303..a3b35c1 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -2,6 +2,7 @@ namespace Modules\Lpj\Models; +use Illuminate\Support\Facades\Storage; use Modules\Lpj\Database\Factories\PermohonanFactory; use Modules\Lpj\Services\PermohonanHistoryService; use Modules\Usermanagement\Models\User; @@ -39,7 +40,6 @@ class Permohonan extends Base 'registrasi_at', 'jenis_penilaian_id', 'region_id', - 'attachment' ]; protected static function boot() @@ -70,12 +70,7 @@ class Permohonan extends Base $fileName = time() . '_' . $file->getClientOriginalName(); $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); - // Delete old file if it exists - if ($permohonan->attachment) { - Storage::disk('public')->delete($permohonan->attachment); - } - - $permohonan->attachment = $filePath; + $permohonan->dokumen = $filePath; } } @@ -87,7 +82,7 @@ class Permohonan extends Base $keterangan = request()->input('keterangan'); // Get keterangan from request $beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : []; $afterRequest = $permohonan->toArray(); - $file = $permohonan->attachment ? Storage::disk('public')->path($permohonan->attachment) : null; + $file = $permohonan->dokumen ? Storage::disk('public')->path($permohonan->dokumen) : null; $historyService->createHistory( $permohonan, diff --git a/app/Services/PermohonanHistoryService.php b/app/Services/PermohonanHistoryService.php index 783d41b..3b9e60c 100644 --- a/app/Services/PermohonanHistoryService.php +++ b/app/Services/PermohonanHistoryService.php @@ -7,15 +7,8 @@ use Modules\Lpj\Models\PermohonanHistory; class PermohonanHistoryService { - public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $file = null) + public function createHistory(Permohonan $permohonan, string $status, ?string $keterangan, array $beforeRequest, array $afterRequest, ?string $filePath = null) { - - $filePath = null; - if ($file) { - $filePath = $file->store('permohonan_history_files', 'public'); - } - - try { $history = PermohonanHistory::create([ 'permohonan_id' => $permohonan->id, diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php index bd40825..193999a 100644 --- a/resources/views/permohonan/authorization/show.blade.php +++ b/resources/views/permohonan/authorization/show.blade.php @@ -9,7 +9,7 @@ @include('lpj::component.detail-jaminan',['backLink' => 'authorization.index'])
- + @csrf
@@ -27,7 +27,7 @@ Upload File Revisi
- +
From 631d5893868d65c14aab7923fdc4eeeb01641ea2 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:10:48 +0700 Subject: [PATCH 07/17] Update PermohonanController: Hapus pengolahan file dan histori setelah update permohonan Telah dilakukan pembersihan pada kode dengan menghapus logika pengolahan file dan pembuatan histori setelah proses update permohonan. Perubahan ini diharapkan menyederhanakan fungsi update di dalam PermohonanController serta mengurangi beban pemrosesan yang tidak diperlukan. --- app/Http/Controllers/PermohonanController.php | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 3a0956d..20a379b 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -147,30 +147,8 @@ if ($permohonan->status == 'revisi') { $validate['status'] = 'order'; } - $permohonan->update($validate); - $afterRequest = $permohonan->fresh()->toArray(); - // Process file upload - $file = null; - if ($request->hasFile('attachment')) { - $file = $request->file('attachment'); - } - - // Get keterangan if provided - $keterangan = $request->input('keterangan') ?? null; - - $status =$validate['status'] ?? $permohonan->status; - - $this->historyService->createHistory( - $permohonan, - $status, - $keterangan, - $beforeRequest, - $afterRequest, - $file - ); - return redirect() ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); } catch (Exception $e) { From d48bef9e6744f4080c3485d3ccee12793bdfcdce Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:11:00 +0700 Subject: [PATCH 08/17] Tambahkan use statement untuk User Menambahkan deklarasi `use` untuk model `User` di `PermohonanHistory.php`. Hal ini diperlukan untuk memastikan bahwa referensi terhadap model `User` dalam file ini dikenali oleh sistem. --- app/Models/PermohonanHistory.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Models/PermohonanHistory.php b/app/Models/PermohonanHistory.php index 2b58a8f..a0f7d34 100644 --- a/app/Models/PermohonanHistory.php +++ b/app/Models/PermohonanHistory.php @@ -4,6 +4,8 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Modules\Usermanagement\Models\User; + // use Modules\Lpj\Database\Factories\PermohonanHistoryFactory; class PermohonanHistory extends Base From c49bc3ddb35296f2d509297d37eb45783ce6ab06 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:11:12 +0700 Subject: [PATCH 09/17] Format kode dan tambahkan relasi histories Mengformat ulang kode model Permohonan untuk konsistensi indentasi dan keterbacaan. Menambahkan relasi `histories` untuk menghubungkan dengan model PermohonanHistory, berguna untuk melacak riwayat perubahan permohonan. --- app/Models/Permohonan.php | 280 +++++++++++++++++++------------------- 1 file changed, 143 insertions(+), 137 deletions(-) diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index a3b35c1..0255e63 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -1,150 +1,156 @@ hasFile('attachment')) { - $file = request()->file('attachment'); - $fileName = time() . '_' . $file->getClientOriginalName(); - $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); + static::updated(function ($permohonan) { + static::createHistory($permohonan, 'updated'); + }); + } - $permohonan->dokumen = $filePath; + protected static function handleFileUpload($permohonan) + { + if (request()->hasFile('attachment')) { + $file = request()->file('attachment'); + $fileName = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); + + $permohonan->dokumen = $filePath; + } + } + + protected static function createHistory($permohonan, $action) + { + $historyService = app(PermohonanHistoryService::class); + + $status = $permohonan->status; + $keterangan = request()->input('keterangan'); // Get keterangan from request + $beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : []; + $afterRequest = $permohonan->toArray(); + $file = $permohonan->dokumen ?? null; + + $historyService->createHistory( + $permohonan, + $status, + $keterangan, + $beforeRequest, + $afterRequest, + $file, + ); + } + + public function user() + { + return $this->belongsTo(User::class); + } + + public function branch() + { + return $this->belongsTo(Branch::class); + } + + public function tujuanPenilaian() + { + return $this->belongsTo(TujuanPenilaian::class); + } + + public function debiture() + { + return $this->belongsTo(Debiture::class); + } + + public function documents() + { + return $this->hasMany(DokumenJaminan::class); + } + + public function nilaiPlafond() + { + return $this->belongsTo(NilaiPlafond::class); + } + + public function jenisFasilitasKredit() + { + return $this->belongsTo(JenisFasilitasKredit::class); + } + + public function penilaian() + { + return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); + } + + public function penawaranTender() + { + return $this->hasMany(PenawaranTender::class, 'nomor_registrasi'); + } + + public function region() + { + return $this->belongsTo(Regions::class, 'region_id'); + } + + public function penawaran() + { + return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); + } + + public function histories() + { + return $this->hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc'); } } - - protected static function createHistory($permohonan, $action) - { - $historyService = app(PermohonanHistoryService::class); - - $status = $permohonan->status; - $keterangan = request()->input('keterangan'); // Get keterangan from request - $beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : []; - $afterRequest = $permohonan->toArray(); - $file = $permohonan->dokumen ? Storage::disk('public')->path($permohonan->dokumen) : null; - - $historyService->createHistory( - $permohonan, - $status, - $keterangan, - $beforeRequest, - $afterRequest, - $file - ); - } - - public function user() - { - return $this->belongsTo(User::class); - } - - public function branch() - { - return $this->belongsTo(Branch::class); - } - - public function tujuanPenilaian() - { - return $this->belongsTo(TujuanPenilaian::class); - } - - public function debiture() - { - return $this->belongsTo(Debiture::class); - } - - public function documents() - { - return $this->hasMany(DokumenJaminan::class); - } - - public function nilaiPlafond() - { - return $this->belongsTo(NilaiPlafond::class); - } - - public function jenisFasilitasKredit() - { - return $this->belongsTo(JenisFasilitasKredit::class); - } - - public function penilaian() - { - return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); - } - - public function penawaranTender() - { - return $this->hasMany(PenawaranTender::class, 'nomor_registrasi'); - } - - public function region() - { - return $this->belongsTo(Regions::class, 'region_id'); - } - - public function penawaran(){ - return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); - } -} From a999dfbdd616304d86690d73bc65f4f7166d1e1e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:11:32 +0700 Subject: [PATCH 10/17] Tambahkan fitur riwayat aktivitas pada halaman detail jaminan Menambahkan komponen tampilan untuk menampilkan riwayat aktivitas permohonan jaminan. Fitur ini termasuk tampilan ikon status, deskripsi, nama pembuat, tanggal, dan link unduhan lampiran jika tersedia. Penambahan ini akan memudahkan pengguna dalam melacak aktivitas yang terjadi pada setiap permohonan jaminan. --- .../views/component/detail-jaminan.blade.php | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index 63b2817..2ffdae4 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -277,4 +277,83 @@
+
+
+

+ Activity +

+
+
+
+ @foreach($permohonan->histories as $activity) +
+ @if($loop->first) +
+
+ @endif + @if(!$loop->last && !$loop->first) +
+
+ @endif +
+ @switch(strtolower($activity->status)) + @case('preregister') + + @break + @case('order') + + @break + + @case('revisi') + + @break + + @case('register') + + @break + + @case('assign') + + @break + + @case('survey') + + @break + @case('proses laporan') + + @break + @case('approved') + + @break + @case('delivered') + + @break + @default + + @endswitch +
+
+ {{ $activity->status }} +

{{ $activity->keterangan }}

+
+ {{ $activity->created_by ? $activity->creator->name : 'System' }} + {{ $activity->created_at->format('d M Y H:i') }} +
+ @if($activity->file_path) + + Attachment + + @endif +
+
+ @endforeach +
+
+
+ @include('lpj::component.pdfviewer') From d66107ec1e20df312dea873fa42240bcaeb4f200 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:14:00 +0700 Subject: [PATCH 11/17] Perbarui fungsi formatTanggalIndonesia dengan opsi waktu Fungsi `formatTanggalIndonesia` diperbarui untuk menerima parameter opsional `$time`. Jika `$time` bernilai `false`, fungsi akan mengembalikan format tanggal tanpa waktu. Namun, jika bernilai `true`, fungsi akan menyertakan waktu dalam format hasilnya. Fungsi `formatTanggalIndonesia2` dihapus untuk menyederhanakan dan mengurangi redundansi kode. --- app/Helpers/Lpj.php | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 044c3f6..e27ff54 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -5,32 +5,13 @@ use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Models\PenawaranTender; - - function formatTanggalIndonesia($date) - { - $carbonDate = Carbon::parse($date); - $indonesianMonths = [ - 'Januari', - 'Februari', - 'Maret', - 'April', - 'Mei', - 'Juni', - 'Juli', - 'Agustus', - 'September', - 'Oktober', - 'November', - 'Desember', - ]; - $month = $indonesianMonths[$carbonDate->month - 1]; - return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y'); - } - - function formatTanggalIndonesia2($date) + 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'; } From 085d3a876ed790f2154a8d5f27f530d56aea97ce Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:14:17 +0700 Subject: [PATCH 12/17] Update formatTanggalIndonesia function calls Mengubah pemanggilan fungsi formatTanggalIndonesia dengan penambahan parameter kedua yang bernilai true pada dua file Blade, yaitu surat_tender_download.blade.php dan surat_tender.blade.php. Ini untuk memastikan format tanggal disesuaikan dengan kebutuhan aplikasi. --- resources/views/penawaran/surat_tender.blade.php | 2 +- resources/views/penawaran/surat_tender_download.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/penawaran/surat_tender.blade.php b/resources/views/penawaran/surat_tender.blade.php index 7db7b5c..06996a2 100644 --- a/resources/views/penawaran/surat_tender.blade.php +++ b/resources/views/penawaran/surat_tender.blade.php @@ -139,7 +139,7 @@

Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.

Mohon proposal dapat saya terima segera, sebelum - {{ formatTanggalIndonesia2($penawaran->end_date) }} + {{ formatTanggalIndonesia($penawaran->end_date,true) }}

Best Regards,

diff --git a/resources/views/penawaran/surat_tender_download.blade.php b/resources/views/penawaran/surat_tender_download.blade.php index 0f058bc..a5b269a 100644 --- a/resources/views/penawaran/surat_tender_download.blade.php +++ b/resources/views/penawaran/surat_tender_download.blade.php @@ -154,7 +154,7 @@
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} + class="important">{{ formatTanggalIndonesia($penawaran->end_date,true) }}
From 973bfbbc751d89d73d035a31b45e359448a5bb8b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 19 Nov 2024 15:21:21 +0700 Subject: [PATCH 13/17] Pisahkan tampilan history aktivitas menjadi komponen terpisah Memindahkan tampilan history aktivitas dari file detail-jaminan.blade.php ke file baru bernama history-permohonan.blade.php dan menghubungkannya menggunakan include. Pendekatan ini membuat kode lebih modular dan lebih mudah di-maintain. --- .../views/component/detail-jaminan.blade.php | 80 +------------------ .../component/history-permohonan.blade.php | 78 ++++++++++++++++++ 2 files changed, 79 insertions(+), 79 deletions(-) create mode 100644 resources/views/component/history-permohonan.blade.php diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index 2ffdae4..4d5266e 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -277,83 +277,5 @@
-
-
-

- Activity -

-
-
-
- @foreach($permohonan->histories as $activity) -
- @if($loop->first) -
-
- @endif - @if(!$loop->last && !$loop->first) -
-
- @endif -
- @switch(strtolower($activity->status)) - @case('preregister') - - @break - @case('order') - - @break - - @case('revisi') - - @break - - @case('register') - - @break - - @case('assign') - - @break - - @case('survey') - - @break - @case('proses laporan') - - @break - @case('approved') - - @break - @case('delivered') - - @break - @default - - @endswitch -
-
- {{ $activity->status }} -

{{ $activity->keterangan }}

-
- {{ $activity->created_by ? $activity->creator->name : 'System' }} - {{ $activity->created_at->format('d M Y H:i') }} -
- @if($activity->file_path) - - Attachment - - @endif -
-
- @endforeach -
-
-
- +@include('lpj::component.history-permohonan') @include('lpj::component.pdfviewer') diff --git a/resources/views/component/history-permohonan.blade.php b/resources/views/component/history-permohonan.blade.php new file mode 100644 index 0000000..85ed489 --- /dev/null +++ b/resources/views/component/history-permohonan.blade.php @@ -0,0 +1,78 @@ +
+
+

+ Activity +

+
+
+
+ @foreach($permohonan->histories as $activity) +
+ @if($loop->first) +
+
+ @endif + @if(!$loop->last && !$loop->first) +
+
+ @endif +
+ @switch(strtolower($activity->status)) + @case('preregister') + + @break + @case('order') + + @break + + @case('revisi') + + @break + + @case('register') + + @break + + @case('assign') + + @break + + @case('survey') + + @break + @case('proses laporan') + + @break + @case('approved') + + @break + @case('delivered') + + @break + @default + + @endswitch +
+
+ {{ $activity->status }} +

{{ $activity->keterangan }}

+
+ {{ $activity->created_by ? $activity->creator->name : 'System' }} + {{ $activity->created_at->format('d M Y H:i') }} +
+ @if($activity->file_path) + + Attachment + + @endif +
+
+ @endforeach +
+
+
From 17ca3b2e50336144d18f3e84d1bb30dd281933ff Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 20 Nov 2024 08:24:59 +0700 Subject: [PATCH 14/17] Menambahkan fitur kirim email tender part 1 --- app/Emails/SendPenawaranKJPPEmail.php | 55 +++ app/Emails/SendPenawaranTenderEmail.php | 29 ++ app/Http/Controllers/TenderController.php | 327 +++++++++++++++++- app/Jobs/SendPenawaranKJPPTenderJob.php | 67 ++++ app/Jobs/SendPenawaranTenderJob.php | 56 +++ app/Models/KJPP.php | 10 +- app/Models/PenawaranDetailTender.php | 5 + app/Models/PenawaranEmailTenderLog.php | 18 + ...5428_create_penawaran_email_tender_log.php | 35 ++ .../views/penawaran/kirimEmail.blade.php | 178 ++++++++++ .../views/penawaran/kirimEmailKJPP.blade.php | 180 ++++++++++ .../views/penawaran/layouts/scripts.blade.php | 105 ++++++ .../views/penawaran/showKirimEmail.blade.php | 114 ++++++ .../penawaran/surat_tender_kjpp.blade.php | 159 +++++++++ .../surat_tender_kjpp_download.blade.php | 180 ++++++++++ .../views/penawaran_ulang/index.blade.php | 6 +- routes/breadcrumbs.php | 46 ++- routes/web.php | 9 + 18 files changed, 1554 insertions(+), 25 deletions(-) create mode 100644 app/Emails/SendPenawaranKJPPEmail.php create mode 100644 app/Emails/SendPenawaranTenderEmail.php create mode 100644 app/Jobs/SendPenawaranKJPPTenderJob.php create mode 100644 app/Jobs/SendPenawaranTenderJob.php create mode 100644 app/Models/PenawaranEmailTenderLog.php create mode 100644 database/migrations/2024_11_18_045428_create_penawaran_email_tender_log.php create mode 100644 resources/views/penawaran/kirimEmail.blade.php create mode 100644 resources/views/penawaran/kirimEmailKJPP.blade.php create mode 100644 resources/views/penawaran/layouts/scripts.blade.php create mode 100644 resources/views/penawaran/showKirimEmail.blade.php create mode 100644 resources/views/penawaran/surat_tender_kjpp.blade.php create mode 100644 resources/views/penawaran/surat_tender_kjpp_download.blade.php diff --git a/app/Emails/SendPenawaranKJPPEmail.php b/app/Emails/SendPenawaranKJPPEmail.php new file mode 100644 index 0000000..c779b90 --- /dev/null +++ b/app/Emails/SendPenawaranKJPPEmail.php @@ -0,0 +1,55 @@ +dp1 = $dp1; + $this->penawaran = $penawaran; + $this->permohonan = $permohonan; + $this->villages = $villages; + $this->districts = $districts; + $this->cities = $cities; + $this->provinces = $provinces; + } + + /** + * Build the message. + */ + public function build(): self + { + // Kirim data ke view + return $this->view('lpj::penawaran.kirimEmailKJPP') + ->with([ + 'dp1' => $this->dp1, + 'penawaran' => $this->penawaran, + 'permohonan' => $this->permohonan, + 'villages' => $this->villages, + 'districts' => $this->districts, + 'cities' => $this->cities, + 'provinces' => $this->provinces, + ]); + } +} diff --git a/app/Emails/SendPenawaranTenderEmail.php b/app/Emails/SendPenawaranTenderEmail.php new file mode 100644 index 0000000..95930a4 --- /dev/null +++ b/app/Emails/SendPenawaranTenderEmail.php @@ -0,0 +1,29 @@ +view('lpj::penawaran.kirimEmail'); + } +} diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 8f2c7d2..5231544 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -3,7 +3,6 @@ namespace Modules\Lpj\Http\Controllers; use Exception; -use Barryvdh\DomPDF\PDF; use Illuminate\Http\Request; use Modules\Lpj\Models\KJPP; use Modules\Location\Models\City; @@ -16,13 +15,14 @@ use Modules\Location\Models\Village; use Modules\Lpj\Models\JenisLaporan; use Modules\Location\Models\District; use Modules\Location\Models\Province; -use Illuminate\Support\Facades\Storage; use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaianKJPP; use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Exports\PenawaranTenderExport; use Modules\Lpj\Http\Requests\TenderPenawaranRequest; +use Modules\Lpj\Jobs\SendPenawaranKJPPTenderJob; +use Modules\Lpj\Jobs\SendPenawaranTenderJob; class TenderController extends Controller { @@ -321,6 +321,57 @@ class TenderController extends Controller return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces')); } + public function suratTenderKJPP($noreg, $id) + { + $kjpp = KJPP::find($id); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + + if (!$penawaran) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $penawaran->nomor_registrasi]) + ->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); + } + + if ($penawaran->status != 'tender') { + return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); + } + + // Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan + if ($permohonan->debiture->documents->isEmpty()) { + return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) + ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); + } + + foreach ($permohonan->debiture->documents as $document) { + $village_permohonan = $document->village_code; + $district_permohonan = $document->district_code; + $city_permohonan = $document->city_code; + $province_permohonan = $document->province_code; + } + + $villages = Village::where('code', $village_permohonan)->get(); + $districts = District::where('code', $district_permohonan)->get(); + $cities = City::where('code', $city_permohonan)->get(); + $provinces = Province::where('code', $province_permohonan)->get(); + + date_default_timezone_set('Asia/Jakarta'); + + $now = date('Y-m-d H:i:s'); + // Jika batas tanggal penawaran sudah lewat + if ($penawaran->end_date < $now) { + return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg]) + ->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!'); + } + + $detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $kjpp->id)->get(); + + foreach ($detail_penawaran as $detail) { + $detail_penawaran_1 = $detail->kjpp; + } + + return view('lpj::penawaran.surat_tender_kjpp', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces', 'detail_penawaran_1', 'id')); + } + public function datatablesPenawaran(Request $request) { if (is_null($this->user) || !$this->user->can('penawaran.view')) { @@ -500,4 +551,276 @@ class TenderController extends Controller return $pdf->download('surat_tender' . time() . '.pdf'); } + + public function downloadSuratTenderKJPP($noreg, $id) + { + $kjpp = KJPP::find($id); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + if ($penawaran->status != 'tender') { + return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); + } + + foreach ($permohonan->debiture->documents as $document) { + $village_permohonan = $document->village_code; + $district_permohonan = $document->district_code; + $city_permohonan = $document->city_code; + $province_permohonan = $document->province_code; + } + + $villages = Village::where('code', $village_permohonan)->get(); + $districts = District::where('code', $district_permohonan)->get(); + $cities = City::where('code', $city_permohonan)->get(); + $provinces = Province::where('code', $province_permohonan)->get(); + + $detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $kjpp->id)->get(); + + foreach ($detail_penawaran as $detail) { + $detail_penawaran_1 = $detail->kjpp; + } + + $pdf = app('dompdf.wrapper'); // create an instance of the PDF class + $pdf->loadView('lpj::penawaran.surat_tender_kjpp_download', compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces', 'detail_penawaran_1')); + + return $pdf->download('surat_tender_kjpp' . time() . '.pdf'); + } + + // Kirim Email + public function showKirimEmail($noreg) + { + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + if (!$penawaran) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg]) + ->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); + } + + if ($penawaran->status != 'tender') { + return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); + } + + if ($permohonan->debiture->documents->isEmpty()) { + return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) + ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); + } + + return view('lpj::penawaran.showKirimEmail', compact('penawaran', 'permohonan', 'noreg')); + } + + public function dataTablesShowKirimSurat(Request $request, $noreg) + { + if (is_null($this->user) || !$this->user->can('penawaran.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } + + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + + // Retrieve data from the database + $query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'emailTenderLog']); + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + + // Handle sorting for related table columns + if ($column === 'nama_kjpp') { + // Join with the KJPP table and sort by the name column + $query->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id') + ->orderBy('kjpp.name', $order) + ->select('detail_penawaran.*'); // Select only the main table columns to avoid conflicts + } else { + // Sort by columns in the main table + $query->orderBy($column, $order); + } + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['kjpp', 'penawaran', 'emailTenderLog'])->get(); + + // add column "No" + $i = 0; + $j = 1; + foreach ($data as $obj) { + + // tanggal_permohonan + $data[$i]->numbernya = $j; + $i++; + $j++; + } + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function kirimEmailAll($noreg) + { + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + if (!$penawaran) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg]) + ->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); + } + + if ($penawaran->status != 'tender') { + return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); + } + + if ($permohonan->debiture->documents->isEmpty()) { + return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) + ->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(); + $kjpps = KJPP::whereIn('id', $detail_penawaran) + ->get() + ->map(function ($item) { + $emails = [$item->email_kantor]; + + // Parse JSON string jika ada dan tidak kosong + if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') { + $detail_emails = json_decode($item->detail_email_kantor, true); + if (is_array($detail_emails)) { + foreach ($detail_emails as $detail) { + if (isset($detail['email_kantor'])) { + $emails[] = $detail['email_kantor']; + } + } + } + } + + return array_filter($emails); + }) + ->flatten() + ->toArray(); + + foreach ($permohonan->debiture->documents as $document) { + $village_permohonan = $document->village_code; + $district_permohonan = $document->district_code; + $city_permohonan = $document->city_code; + $province_permohonan = $document->province_code; + } + + $villages = Village::where('code', $village_permohonan)->get(); + $districts = District::where('code', $district_permohonan)->get(); + $cities = City::where('code', $city_permohonan)->get(); + $provinces = Province::where('code', $province_permohonan)->get(); + + + SendPenawaranTenderJob::dispatch( + $kjpps, + $penawaran, + $permohonan, + $villages, + $districts, + $cities, + $provinces + ); + + return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); + } + + public function kirimEmailKJPP($noreg, $id) + { + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + $permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first(); + + if (!$penawaran) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg]) + ->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); + } + + if ($penawaran->status != 'tender') { + return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!'); + } + + if ($permohonan->debiture->documents->isEmpty()) { + return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) + ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); + } + + $detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray(); + $kjpps = KJPP::whereIn('id', $detail_penawaran) + ->get() + ->map(function ($item) { + $emails = [$item->email_kantor]; + + // Parse JSON string jika ada dan tidak kosong + if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') { + $detail_emails = json_decode($item->detail_email_kantor, true); + if (is_array($detail_emails)) { + foreach ($detail_emails as $detail) { + if (isset($detail['email_kantor'])) { + $emails[] = $detail['email_kantor']; + } + } + } + } + + return array_filter($emails); + }) + ->flatten() + ->toArray(); + + $dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first(); + + // dd($dp1->kjpp); + + foreach ($permohonan->debiture->documents as $document) { + $village_permohonan = $document->village_code; + $district_permohonan = $document->district_code; + $city_permohonan = $document->city_code; + $province_permohonan = $document->province_code; + } + + $villages = Village::where('code', $village_permohonan)->get(); + $districts = District::where('code', $district_permohonan)->get(); + $cities = City::where('code', $city_permohonan)->get(); + $provinces = Province::where('code', $province_permohonan)->get(); + + SendPenawaranKJPPTenderJob::dispatch( + $kjpps, + $dp1, + $penawaran, + $permohonan, + $villages, + $districts, + $cities, + $provinces + ); + + return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); + } } diff --git a/app/Jobs/SendPenawaranKJPPTenderJob.php b/app/Jobs/SendPenawaranKJPPTenderJob.php new file mode 100644 index 0000000..b85b8ce --- /dev/null +++ b/app/Jobs/SendPenawaranKJPPTenderJob.php @@ -0,0 +1,67 @@ +kjpps = $kjpps; + $this->dp1 = $dp1; // Simpan keseluruhan array dp1, bukan dp1[0] + $this->penawaran = $penawaran; + $this->permohonan = $permohonan; + $this->villages = $villages; + $this->districts = $districts; + $this->cities = $cities; + $this->provinces = $provinces; + } + + /** + * Execute the job. + */ + public function handle(): void + { + $email = new SendPenawaranKJPPEmail( + $this->dp1, + $this->penawaran, + $this->permohonan, + $this->villages, + $this->districts, + $this->cities, + $this->provinces + ); + $email->with([ + 'dp1' => $this->dp1, // Kirim seluruh array dp1 ke email + 'penawaran' => $this->penawaran, + 'permohonan' => $this->permohonan, + 'villages' => $this->villages, + 'districts' => $this->districts, + 'cities' => $this->cities, + 'provinces' => $this->provinces, + ]); + + Mail::to($this->kjpps)->send($email); + } +} diff --git a/app/Jobs/SendPenawaranTenderJob.php b/app/Jobs/SendPenawaranTenderJob.php new file mode 100644 index 0000000..6a37f6c --- /dev/null +++ b/app/Jobs/SendPenawaranTenderJob.php @@ -0,0 +1,56 @@ +kjpps = $kjpps; + $this->penawaran = $penawaran; + $this->permohonan = $permohonan; + $this->villages = $villages; + $this->districts = $districts; + $this->cities = $cities; + $this->provinces = $provinces; + } + + /** + * Execute the job. + */ + public function handle(): void + { + $email = new SendPenawaranTenderEmail(); + $email->with([ + 'penawaran' => $this->penawaran, + 'permohonan' => $this->permohonan, + 'villages' => $this->villages, + 'districts' => $this->districts, + 'cities' => $this->cities, + 'provinces' => $this->provinces, + ]); + + Mail::to($this->kjpps)->send($email); + } +} diff --git a/app/Models/KJPP.php b/app/Models/KJPP.php index b9f2e34..a558797 100644 --- a/app/Models/KJPP.php +++ b/app/Models/KJPP.php @@ -2,9 +2,10 @@ namespace Modules\Lpj\Models; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Location\Models\Province; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Factories\HasFactory; // use Modules\Lpj\Database\Factories\KJPPFactory; @@ -19,4 +20,9 @@ class KJPP extends Model * The attributes that are mass assignable. */ protected $guarded = ['id']; + + public function PenawaranDetailTender(): HasMany + { + return $this->hasMany(PenawaranDetailTender::class, 'kjpp_rekanan_id', 'id'); + } } diff --git a/app/Models/PenawaranDetailTender.php b/app/Models/PenawaranDetailTender.php index 619f9e2..cbe3286 100644 --- a/app/Models/PenawaranDetailTender.php +++ b/app/Models/PenawaranDetailTender.php @@ -27,4 +27,9 @@ class PenawaranDetailTender extends Model { return $this->belongsTo(KJPP::class, 'kjpp_rekanan_id', 'id'); } + + public function emailTenderLog(): BelongsTo + { + return $this->belongsTo(PenawaranEmailTenderLog::class, 'penawaran_id', 'id', PenawaranTender::class); + } } diff --git a/app/Models/PenawaranEmailTenderLog.php b/app/Models/PenawaranEmailTenderLog.php new file mode 100644 index 0000000..9048405 --- /dev/null +++ b/app/Models/PenawaranEmailTenderLog.php @@ -0,0 +1,18 @@ +id(); + $table->unsignedBigInteger('penawaran_id'); + $table->foreign('penawaran_id')->references('id')->on('penawaran')->onDelete('cascade'); + $table->string('kjpp'); + $table->string('to_email'); + $table->string('subject'); + $table->text('body_pdf'); + $table->string('status'); + $table->text('error_message'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('penawaran_email_tender_log'); + } +}; diff --git a/resources/views/penawaran/kirimEmail.blade.php b/resources/views/penawaran/kirimEmail.blade.php new file mode 100644 index 0000000..9967b6b --- /dev/null +++ b/resources/views/penawaran/kirimEmail.blade.php @@ -0,0 +1,178 @@ + + + + + + + + Surat Tender | {{ formatTanggalIndonesia(now()) }} + + + + +
+ Dear + @php + $allPeople = []; + + foreach ($penawaran->penawaranKjpp as $kjpp) { + if ($kjpp->kjpp->nama_pic_admin) { + $allPeople[] = ucwords($kjpp->kjpp->nama_pic_admin); + } + + if ($kjpp->kjpp->detail_nama_pic_admin) { + try { + $decoded = json_decode($kjpp->kjpp->detail_nama_pic_admin); + if ($decoded) { + foreach ($decoded as $admin) { + if (isset($admin->nama_pic_admin)) { + $allPeople[] = ucwords($admin->nama_pic_admin); + } + } + } + } catch (\Exception $e) { + // Handle invalid JSON silently + } + } + } + + $allPeople = array_filter($allPeople); + $totalPeople = count($allPeople); + @endphp + @if ($totalPeople > 0) + @foreach ($allPeople as $index => $person) + {{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }} + @endforeach + @else + Tidak Ada + @endif + + +
+ Mohon untuk dibuatkan proposal jasa appraisal atas nama {{ $permohonan->debiture->name }}, tujuan penilaian untuk {{ $penawaran->tujuanPenilaianKJPP->name }}, laporan dalam bentuk {{ $penawaran->jenisLaporan->name }}, dengan data-data sebagai berikut: +
+ +
+ Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisJaminan->name }} + @endforeach + Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->address }}, Kel. @foreach ($villages as $village) + {{ $village->name }} + @endforeach, Kec. @foreach ($districts as $district) + {{ $district->name }} + @endforeach,@foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach,@foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endforeach + + + Luas Tanah / Luas Bangunan: + @php + $luas_tanah = null; + $luas_bangunan = null; + @endphp + + @foreach ($permohonan->debiture->documents as $document) + @foreach ($document->detail as $detail) + @php + $details = json_decode($detail->details); + @endphp + + @if (is_object($details)) + @if (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 + @endif + @endif + @endforeach + @endforeach + + @if ($luas_tanah !== null && $luas_bangunan !== null) + {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 + @elseif ($luas_tanah !== null) + {{ $luas_tanah }} m2 + @elseif ($luas_bangunan !== null) + {{ $luas_bangunan }} m2 + @endif +
+ +
+ Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
+ Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} +
+ +
+ Best Regards,
+ {{ $permohonan->user->name }} +

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

+
+ + +
+ + + diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php new file mode 100644 index 0000000..e6e5f45 --- /dev/null +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -0,0 +1,180 @@ + + + + + + + + Surat Tender | {{ formatTanggalIndonesia(now()) }} + + + + +
+ Dear + @php + $allPeople = []; + + foreach ($dp1->kjpp as $dp) { + if ($dp1->kjpp->nama_pic_admin) { + $allPeople[] = ucwords($dp1->kjpp->nama_pic_admin); + } + + if ($dp1->kjpp->detail_nama_pic_admin) { + try { + $decoded = json_decode($dp1->kjpp->detail_nama_pic_admin); + if (is_array($decoded) && !empty($decoded)) { + foreach ($decoded as $value) { + // Check if the value has nama_pic_admin and it's not empty + if (isset($value->nama_pic_admin) && !empty($value->nama_pic_admin)) { + $allPeople[] = ucwords($value->nama_pic_admin); + } + } + } + } catch (\Exception $e) { + // Handle invalid JSON silently + } + } + } + + // Remove empty values and duplicates + $allPeople = array_filter(array_unique($allPeople)); + $totalPeople = count($allPeople); + @endphp + @if ($totalPeople > 0) + @foreach ($allPeople as $index => $person) + {{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }} + @endforeach + @else + Tidak Ada + @endif + + +
+ Mohon untuk dibuatkan proposal jasa appraisal atas nama {{ $permohonan->debiture->name }}, tujuan penilaian untuk {{ $penawaran->tujuanPenilaianKJPP->name }}, laporan dalam bentuk {{ $penawaran->jenisLaporan->name }}, dengan data-data sebagai berikut: +
+ +
+ Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisJaminan->name }} + @endforeach + Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->address }}, Kel. @foreach ($villages as $village) + {{ $village->name }} + @endforeach, Kec. @foreach ($districts as $district) + {{ $district->name }} + @endforeach,@foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach,@foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endforeach + + + Luas Tanah / Luas Bangunan: + @php + $luas_tanah = null; + $luas_bangunan = null; + @endphp + + @foreach ($permohonan->debiture->documents as $document) + @foreach ($document->detail as $detail) + @php + $details = json_decode($detail->details); + @endphp + + @if (is_object($details)) + @if (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 + @endif + @endif + @endforeach + @endforeach + + @if ($luas_tanah !== null && $luas_bangunan !== null) + {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 + @elseif ($luas_tanah !== null) + {{ $luas_tanah }} m2 + @elseif ($luas_bangunan !== null) + {{ $luas_bangunan }} m2 + @endif +
+ +
+ Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
+ Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} +
+ +
+ Best Regards,
+ {{ $permohonan->user->name }} +

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

+
+ + +
+ + + diff --git a/resources/views/penawaran/layouts/scripts.blade.php b/resources/views/penawaran/layouts/scripts.blade.php new file mode 100644 index 0000000..dca85b3 --- /dev/null +++ b/resources/views/penawaran/layouts/scripts.blade.php @@ -0,0 +1,105 @@ +@push('styles') + +@endpush + +@push('scripts') + +@endpush diff --git a/resources/views/penawaran/showKirimEmail.blade.php b/resources/views/penawaran/showKirimEmail.blade.php new file mode 100644 index 0000000..a9b006f --- /dev/null +++ b/resources/views/penawaran/showKirimEmail.blade.php @@ -0,0 +1,114 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} +@endsection + +@section('content') +
+ +
+
+

+ Show Kirim Email Penawaran +

+
+ Back +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ Data KJPP +
+
+
+
+ + + + + + + + + + +
+ No + + + + Nama KJPP + + + + + + + Email Kantor + + + + + + Status Kirim + + + Action +
+
+ + + +
+
+
+
+ +
+ +
+
+@endsection + +@include('lpj::penawaran.layouts.scripts') diff --git a/resources/views/penawaran/surat_tender_kjpp.blade.php b/resources/views/penawaran/surat_tender_kjpp.blade.php new file mode 100644 index 0000000..2ed30d5 --- /dev/null +++ b/resources/views/penawaran/surat_tender_kjpp.blade.php @@ -0,0 +1,159 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg'), request()->route('id')) }} +@endsection + +@section('content') +
+
+
+

+ Surat Tender +

+ +
+
+

Dear + + @php + $allPeople = []; + + foreach ($detail_penawaran_1 as $dp1) { + if ($detail_penawaran_1->nama_pic_admin) { + $allPeople[] = ucwords($detail_penawaran_1->nama_pic_admin); + } + + if ($detail_penawaran_1->detail_nama_pic_admin) { + try { + $decoded = json_decode($detail_penawaran_1->detail_nama_pic_admin); + if (is_array($decoded) && !empty($decoded)) { + foreach ($decoded as $value) { + // Check if the value has nama_pic_admin and it's not empty + if (isset($value->nama_pic_admin) && !empty($value->nama_pic_admin)) { + $allPeople[] = ucwords($value->nama_pic_admin); + } + } + } + } catch (\Exception $e) { + // Handle invalid JSON silently + } + } + } + + // Remove empty values and duplicates + $allPeople = array_filter(array_unique($allPeople)); + $totalPeople = count($allPeople); + @endphp + @if ($totalPeople > 0) + @foreach ($allPeople as $index => $person) + {{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }} + @endforeach + @else + Tidak Ada + @endif + +

+

Mohon untuk dibuatkan proposal jasa appraisal atas nama {{ ucwords($permohonan->debiture->name) }}, tujuan penilaian + untuk + {{ $penawaran->tujuanPenilaianKJPP->name }} + , laporan dalam bentuk {{ $penawaran->jenisLaporan->name }}, + dengan data-data sebagai berikut :

+
    +
  • Aset Jaminan: + + @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisJaminan->name }} + @endforeach + +
  • +
  • Lokasi Jaminan: + + @foreach ($permohonan->debiture->documents as $document) + {{ $document->address }} + @if (isset($document->jenisJaminan)) + , Kel. + @foreach ($villages as $village) + {{ $village->name }} + @endforeach + , Kec. + @foreach ($districts as $district) + {{ $district->name }} + @endforeach + , + @foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach + , + @foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endif + @endforeach + +
  • +
  • Luas Tanah / Luas Bangunan: + + @php + $luas_tanah = null; + $luas_bangunan = null; + @endphp + + @foreach ($permohonan->debiture->documents as $document) + @foreach ($document->detail as $detail) + @php + $details = json_decode($detail->details); + @endphp + + @if (is_object($details)) + @if (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 + @endif + @endif + @endforeach + @endforeach + + @if ($luas_tanah !== null && $luas_bangunan !== null) + {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 + @elseif ($luas_tanah !== null) + {{ $luas_tanah }} m2 + @elseif ($luas_bangunan !== null) + {{ $luas_bangunan }} m2 + @endif + +
  • +
+

Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.

+

Mohon proposal dapat saya terima segera, sebelum + {{ formatTanggalIndonesia2($penawaran->end_date) }} +

+

Best Regards, +

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

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

+
+ Sub Direktorat Appraisal +

+

PT. Bank Artha Graha Internasional, Tbk.
+ Gedung Bank Artha Graha, Lantai 3
+ Jl. Kwitang Raya No 24-26, Jakarta Pusat - 10420.
+ Telp. 021 - 3903040 (H)

+
+
+
+@endsection diff --git a/resources/views/penawaran/surat_tender_kjpp_download.blade.php b/resources/views/penawaran/surat_tender_kjpp_download.blade.php new file mode 100644 index 0000000..206c467 --- /dev/null +++ b/resources/views/penawaran/surat_tender_kjpp_download.blade.php @@ -0,0 +1,180 @@ + + + + + + + + Surat Tender | {{ formatTanggalIndonesia(now()) }} + + + + +
+ Dear + @php + $allPeople = []; + + foreach ($detail_penawaran_1 as $dp1) { + if ($detail_penawaran_1->nama_pic_admin) { + $allPeople[] = ucwords($detail_penawaran_1->nama_pic_admin); + } + + if ($detail_penawaran_1->detail_nama_pic_admin) { + try { + $decoded = json_decode($detail_penawaran_1->detail_nama_pic_admin); + if (is_array($decoded) && !empty($decoded)) { + foreach ($decoded as $value) { + // Check if the value has nama_pic_admin and it's not empty + if (isset($value->nama_pic_admin) && !empty($value->nama_pic_admin)) { + $allPeople[] = ucwords($value->nama_pic_admin); + } + } + } + } catch (\Exception $e) { + // Handle invalid JSON silently + } + } + } + + // Remove empty values and duplicates + $allPeople = array_filter(array_unique($allPeople)); + $totalPeople = count($allPeople); + @endphp + @if ($totalPeople > 0) + @foreach ($allPeople as $index => $person) + {{ $person }}{{ $index === $totalPeople - 2 ? ' dan ' : ($index < $totalPeople - 2 ? ' , ' : '') }} + @endforeach + @else + Tidak Ada + @endif + + +
+ Mohon untuk dibuatkan proposal jasa appraisal atas nama {{ $permohonan->debiture->name }}, tujuan penilaian untuk {{ $penawaran->tujuanPenilaianKJPP->name }}, laporan dalam bentuk {{ $penawaran->jenisLaporan->name }}, dengan data-data sebagai berikut: +
+ +
+ Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisJaminan->name }} + @endforeach + Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + {{ $document->address }}, Kel. @foreach ($villages as $village) + {{ $village->name }} + @endforeach, Kec. @foreach ($districts as $district) + {{ $district->name }} + @endforeach,@foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach,@foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endforeach + + + Luas Tanah / Luas Bangunan: + @php + $luas_tanah = null; + $luas_bangunan = null; + @endphp + + @foreach ($permohonan->debiture->documents as $document) + @foreach ($document->detail as $detail) + @php + $details = json_decode($detail->details); + @endphp + + @if (is_object($details)) + @if (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 + @endif + @endif + @endforeach + @endforeach + + @if ($luas_tanah !== null && $luas_bangunan !== null) + {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 + @elseif ($luas_tanah !== null) + {{ $luas_tanah }} m2 + @elseif ($luas_bangunan !== null) + {{ $luas_bangunan }} m2 + @endif +
+ +
+ Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
+ Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} +
+ +
+ Best Regards,
+ {{ $permohonan->user->name }} +

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

+
+ + +
+ + + diff --git a/resources/views/penawaran_ulang/index.blade.php b/resources/views/penawaran_ulang/index.blade.php index d880650..988bf71 100644 --- a/resources/views/penawaran_ulang/index.blade.php +++ b/resources/views/penawaran_ulang/index.blade.php @@ -131,13 +131,13 @@ + + + `; } else { // Jika tidak ada, tampilkan tombol "Tambah Penawaran" actionDiv.innerHTML = ` - - - diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 370ecc3..ff7ab8a 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -399,6 +399,16 @@ Breadcrumbs::for('tender.penawaran.showSuratTender', function (BreadcrumbTrail $ $trail->push('Surat Tender', route('tender.penawaran.showSuratTender', $noreg)); }); +Breadcrumbs::for('tender.penawaran.suratTenderKJPP', function (BreadcrumbTrail $trail, $noreg, $id) { + $trail->parent('tender.penawaran'); + $trail->push('Surat Tender KJPP', route('tender.penawaran.suratTenderKJPP', ['noreg' => $noreg, 'id' => $id])); +}); + +Breadcrumbs::for('tender.penawaran.showKirimEmail', function (BreadcrumbTrail $trail, $noreg) { + $trail->parent('tender.penawaran'); + $trail->push('Show Kirim Email Penawaran', route('tender.penawaran.showKirimEmail', $noreg)); +}); + Breadcrumbs::for('tender.penawaran.ulang', function (BreadcrumbTrail $trail) { $trail->parent('tender'); @@ -442,24 +452,24 @@ Breadcrumbs::for('otorisator.pelaporan.index', function (BreadcrumbTrail $trail) // basic data surveyor $basicDataRoutes = [ - 'bentuk-tanah' => 'Bentuk Tanah', - 'kontur-tanah' => 'Kontur Tanah', - 'posisi-kavling' => 'Posisi Kavling', - 'ketinggian-tanah' => 'Ketinggian Tanah', - 'kondisi-fisik-tanah' => 'Kondisi Fisik Tanah', - 'jenis-bangunan' => 'Jenis Bangunan', - 'kondisi-bangunan' => 'Kondisi Bangunan', - 'sifat-bangunan' => 'Sifat Bangunan', - 'spek-bangunan' => 'Speksifikasi Bangunan', - 'spek-kategori-bangunan' => 'Speksifikasi Kategori Bangunan', - 'sarana-pelengkap' => 'Sarana Pelengkap', - 'lalu-lintas-lokasi' => 'Lalu Lintas', - 'tingkat-keramaian' => 'Tingkat Keramaian', - 'gol-mas-sekitar' => 'Golongan Masyarakat Sekitar', - 'lantai-unit' => 'Lantai Unit', - 'view-unit' => 'View Unit', - 'bentuk-unit' => 'Bentuk unit', - 'perkerasan-jalan' => 'Perkerasan jalan' + 'bentuk-tanah' => 'Bentuk Tanah', + 'kontur-tanah' => 'Kontur Tanah', + 'posisi-kavling' => 'Posisi Kavling', + 'ketinggian-tanah' => 'Ketinggian Tanah', + 'kondisi-fisik-tanah' => 'Kondisi Fisik Tanah', + 'jenis-bangunan' => 'Jenis Bangunan', + 'kondisi-bangunan' => 'Kondisi Bangunan', + 'sifat-bangunan' => 'Sifat Bangunan', + 'spek-bangunan' => 'Speksifikasi Bangunan', + 'spek-kategori-bangunan' => 'Speksifikasi Kategori Bangunan', + 'sarana-pelengkap' => 'Sarana Pelengkap', + 'lalu-lintas-lokasi' => 'Lalu Lintas', + 'tingkat-keramaian' => 'Tingkat Keramaian', + 'gol-mas-sekitar' => 'Golongan Masyarakat Sekitar', + 'lantai-unit' => 'Lantai Unit', + 'view-unit' => 'View Unit', + 'bentuk-unit' => 'Bentuk unit', + 'perkerasan-jalan' => 'Perkerasan jalan' ]; diff --git a/routes/web.php b/routes/web.php index 1ad699b..53eb02a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -394,6 +394,15 @@ Route::middleware(['auth'])->group(function () { 'penawaran.showSuratTender' ); Route::get('penawaran/{noreg}/suratTender/downloadpdf', [TenderController::class, 'downloadSuratTender'])->name('penawaran.downloadSuratTender'); + // Kirim Email Penawaran + Route::get('penawaran/{noreg}/showKirimEmail', [TenderController::class, 'showKirimEmail'])->name('penawaran.showKirimEmail'); + Route::get('penawaran/{noreg}/kirimEmailAll', [TenderController::class, 'kirimEmailAll'])->name('penawaran.kirimEmailAll'); + Route::get('penawaran/{noreg}/suratTenderKJPP/{id}', [TenderController::class, 'suratTenderKJPP'])->name('penawaran.suratTenderKJPP'); + Route::get('penawaran/{noreg}/suratTenderKJPP/{id}/kirimEmailKJPP', [TenderController::class, 'kirimEmailKJPP'])->name('penawaran.kirimEmailKJPP'); + Route::get('penawaran/suratTenderShow/{noreg}/datatables', [TenderController::class, 'dataTablesShowKirimSurat'])->name('penawaran.showKirimSurat.datatables'); + // Download Surat Tender KJPP + Route::get('penawaran/{noreg}/suratTenderKJPP/{id}/downloadSuratTenderKJPP', [TenderController::class, 'downloadSuratTenderKJPP']) + ->name('penawaran.downloadSuratTenderKJPP'); // Penawaran Ulang Route::get('penawaran/ulang', [TenderController::class, 'penawaran_ulang_index'])->name( From 91e921ca6de9547f3aa7b359407651cbd4d09ec8 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 20 Nov 2024 08:53:49 +0700 Subject: [PATCH 15/17] Memperbaiki fungsi yang redudansi pada formatTanggalIndonesia --- resources/views/penawaran/surat_tender_kjpp.blade.php | 2 +- resources/views/penawaran/surat_tender_kjpp_download.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/penawaran/surat_tender_kjpp.blade.php b/resources/views/penawaran/surat_tender_kjpp.blade.php index 2ed30d5..1bdd19b 100644 --- a/resources/views/penawaran/surat_tender_kjpp.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp.blade.php @@ -137,7 +137,7 @@

Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.

Mohon proposal dapat saya terima segera, sebelum - {{ formatTanggalIndonesia2($penawaran->end_date) }} + {{ formatTanggalIndonesia($penawaran->end_date, true) }}

Best Regards,

diff --git a/resources/views/penawaran/surat_tender_kjpp_download.blade.php b/resources/views/penawaran/surat_tender_kjpp_download.blade.php index 206c467..183e4a6 100644 --- a/resources/views/penawaran/surat_tender_kjpp_download.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp_download.blade.php @@ -156,7 +156,7 @@
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} + class="important">{{ formatTanggalIndonesia($penawaran->end_date, true) }}
From 6c7fe4669b7608a8342cd24ea4e271b5e66a90e8 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 20 Nov 2024 09:01:19 +0700 Subject: [PATCH 16/17] Memperbaiki fungsi yang redudansi pada formatTanggalIndonesia ketika kirim email tender --- resources/views/penawaran/kirimEmail.blade.php | 2 +- resources/views/penawaran/kirimEmailKJPP.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/penawaran/kirimEmail.blade.php b/resources/views/penawaran/kirimEmail.blade.php index 9967b6b..3c6efac 100644 --- a/resources/views/penawaran/kirimEmail.blade.php +++ b/resources/views/penawaran/kirimEmail.blade.php @@ -154,7 +154,7 @@
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} + class="important">{{ formatTanggalIndonesia($penawaran->end_date, true) }}
diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php index e6e5f45..fd4745a 100644 --- a/resources/views/penawaran/kirimEmailKJPP.blade.php +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -156,7 +156,7 @@
Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.
Mohon proposal dapat saya terima segera, sebelum {{ formatTanggalIndonesia2($penawaran->end_date) }} + class="important">{{ formatTanggalIndonesia($penawaran->end_date, true) }}
From ec8ae3b960cf90af55a8a1c891f280d85e37e5ed Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 20 Nov 2024 10:56:00 +0700 Subject: [PATCH 17/17] Membuat kirim surat tender part 2 --- app/Http/Controllers/TenderController.php | 28 ++++++++++++------- app/Jobs/SendPenawaranKJPPTenderJob.php | 3 +- .../views/penawaran/layouts/scripts.blade.php | 6 ++++ .../views/penawaran/showKirimEmail.blade.php | 8 ++++++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 5231544..f4edb45 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -631,6 +631,10 @@ class TenderController extends Controller $query->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id') ->orderBy('kjpp.name', $order) ->select('detail_penawaran.*'); // Select only the main table columns to avoid conflicts + } else if ($column === 'nomor_kjpp') { + $query->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id') + ->orderBy('kjpp.code', $order) + ->select('detail_penawaran.*'); } else { // Sort by columns in the main table $query->orderBy($column, $order); @@ -810,16 +814,20 @@ class TenderController extends Controller $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); - SendPenawaranKJPPTenderJob::dispatch( - $kjpps, - $dp1, - $penawaran, - $permohonan, - $villages, - $districts, - $cities, - $provinces - ); + try { + $balikan = SendPenawaranKJPPTenderJob::dispatch( + $kjpps, + $dp1, + $penawaran, + $permohonan, + $villages, + $districts, + $cities, + $provinces + ); + } catch (\Exception $e) { + return redirect()->route('tender.penawaran.ulang.index')->with('error', 'Email Penawaran Gagal Terkirim!'); + } return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); } diff --git a/app/Jobs/SendPenawaranKJPPTenderJob.php b/app/Jobs/SendPenawaranKJPPTenderJob.php index b85b8ce..52045a2 100644 --- a/app/Jobs/SendPenawaranKJPPTenderJob.php +++ b/app/Jobs/SendPenawaranKJPPTenderJob.php @@ -52,6 +52,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue $this->cities, $this->provinces ); + $email->with([ 'dp1' => $this->dp1, // Kirim seluruh array dp1 ke email 'penawaran' => $this->penawaran, @@ -62,6 +63,6 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue 'provinces' => $this->provinces, ]); - Mail::to($this->kjpps)->send($email); + $send = Mail::to($this->kjpps)->send($email); } } diff --git a/resources/views/penawaran/layouts/scripts.blade.php b/resources/views/penawaran/layouts/scripts.blade.php index dca85b3..9b70607 100644 --- a/resources/views/penawaran/layouts/scripts.blade.php +++ b/resources/views/penawaran/layouts/scripts.blade.php @@ -32,6 +32,12 @@ return data.numbernya; } }, + nomor_kjpp: { + title: 'Nomor KJPP', + render: (item, data) => { + return `${data.kjpp.code}` + } + }, nama_kjpp: { title: 'Nama KJPP', render: (item, data) => { diff --git a/resources/views/penawaran/showKirimEmail.blade.php b/resources/views/penawaran/showKirimEmail.blade.php index a9b006f..1bdf893 100644 --- a/resources/views/penawaran/showKirimEmail.blade.php +++ b/resources/views/penawaran/showKirimEmail.blade.php @@ -52,6 +52,14 @@ No + + + + Nomor KJPP + + + +