From 264642795dd6ec5101df9265f77a6c20ae2b1a54 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 20 Nov 2024 17:35:06 +0700 Subject: [PATCH 01/26] Menambahkan log ketika di kirim surat tender dari setiap kjpp --- app/Http/Controllers/TenderController.php | 133 ++++++++++++------ app/Models/PenawaranDetailTender.php | 5 - app/Models/PenawaranEmailTenderLog.php | 5 + app/Models/PenawaranTender.php | 5 + ...3420_update_penawaran_email_tender_log.php | 28 ++++ .../views/penawaran/layouts/scripts.blade.php | 27 +++- .../views/penawaran/showKirimEmail.blade.php | 18 +-- 7 files changed, 152 insertions(+), 69 deletions(-) create mode 100644 database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index f4edb45..9a2e05e 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -23,6 +23,7 @@ use Modules\Lpj\Exports\PenawaranTenderExport; use Modules\Lpj\Http\Requests\TenderPenawaranRequest; use Modules\Lpj\Jobs\SendPenawaranKJPPTenderJob; use Modules\Lpj\Jobs\SendPenawaranTenderJob; +use Modules\Lpj\Models\PenawaranEmailTenderLog; class TenderController extends Controller { @@ -618,7 +619,9 @@ class TenderController extends Controller $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); // Retrieve data from the database - $query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'emailTenderLog']); + $query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'penawaran.emailTenderLog']); + + // dd($query); // Apply sorting if provided if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { @@ -641,23 +644,8 @@ class TenderController extends Controller } } - // 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(); + $data = $query->get(); // add column "No" $i = 0; @@ -670,20 +658,9 @@ class TenderController extends Controller $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, ]); } @@ -800,8 +777,6 @@ class TenderController extends Controller $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; @@ -814,21 +789,89 @@ class TenderController extends Controller $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); - 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!'); - } + $subject = 'Send Penawaran K J P P Email'; - return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); + $body_pdf = view('lpj::penawaran.kirimEmailKJPP', [ + 'dp1' => $dp1, + 'penawaran' => $penawaran, + 'permohonan' => $permohonan, + 'kjpps' => $kjpps, + 'villages' => $villages, + 'districts' => $districts, + 'cities' => $cities, + 'provinces' => $provinces + ])->render(); + + SendPenawaranKJPPTenderJob::dispatch( + $kjpps, + $dp1, + $penawaran, + $permohonan, + $villages, + $districts, + $cities, + $provinces + ); + + try { + // Proses log email + foreach ($kjpps as $email) { + // Cek apakah sudah ada log dengan status 'failed' untuk email ini + $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) { + // Jika log ditemukan dan statusnya 'failed', update status menjadi 'success' + $log->update([ + '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 + 'updated_at' => now(), + ]); + } else { + // Jika tidak ada log gagal, buat log baru dengan status 'success' + PenawaranEmailTenderLog::create([ + '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, // Tidak ada error message + '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 + 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(), + ]); + } + return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!'); + } } } diff --git a/app/Models/PenawaranDetailTender.php b/app/Models/PenawaranDetailTender.php index cbe3286..619f9e2 100644 --- a/app/Models/PenawaranDetailTender.php +++ b/app/Models/PenawaranDetailTender.php @@ -27,9 +27,4 @@ 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 index 9048405..224c351 100644 --- a/app/Models/PenawaranEmailTenderLog.php +++ b/app/Models/PenawaranEmailTenderLog.php @@ -15,4 +15,9 @@ class PenawaranEmailTenderLog extends Model * The attributes that are mass assignable. */ protected $guarded = ['id']; + + public function penawaran() + { + return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id'); + } } diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index f38d42e..b69c92c 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -26,6 +26,11 @@ class PenawaranTender extends Model } // andy add + public function emailTenderLog(): HasMany + { + return $this->hasMany(PenawaranEmailTenderLog::class, 'penawaran_id', 'id'); + } + public function penawaranKjpp() { return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id'); diff --git a/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php b/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php new file mode 100644 index 0000000..3300063 --- /dev/null +++ b/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php @@ -0,0 +1,28 @@ +text('error_message')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran_email_tender_log', function (Blueprint $table) { + $table->text('error_message')->change(); + }); + } +}; diff --git a/resources/views/penawaran/layouts/scripts.blade.php b/resources/views/penawaran/layouts/scripts.blade.php index 9b70607..8c572a9 100644 --- a/resources/views/penawaran/layouts/scripts.blade.php +++ b/resources/views/penawaran/layouts/scripts.blade.php @@ -24,7 +24,6 @@ const apiUrl = element.getAttribute('data-api-url'); const dataTableOptions = { apiEndpoint: apiUrl, - pageSize: 5, columns: { no: { title: 'No', @@ -92,7 +91,31 @@ status: { title: 'Status', render: (item, data) => { - return `${data.emailTenderLog?.status ?? '-'}` + // Cek jika ada email log + if (data.penawaran.email_tender_log && data.penawaran.email_tender_log.length > 0) { + // Buat full string KJPP untuk matching + const kjppString = `${data.kjpp.code} | ${data.kjpp.name}`; + + // Filter log berdasarkan string KJPP yang sesuai + const log = data.penawaran.email_tender_log.find(log => + log.kjpp === kjppString + ); + + if (log) { + // Set warna badge berdasarkan status + const statusColors = { + 'success': 'badge-success', + 'failed': 'badge-danger' + }; + + const color = statusColors[log.status] || 'badge-secondary'; + + return `${log.status}`; + } + } + + // Jika tidak ada log, tampilkan strip + return '-'; } }, actions: { diff --git a/resources/views/penawaran/showKirimEmail.blade.php b/resources/views/penawaran/showKirimEmail.blade.php index 1bdf893..5063254 100644 --- a/resources/views/penawaran/showKirimEmail.blade.php +++ b/resources/views/penawaran/showKirimEmail.blade.php @@ -34,8 +34,7 @@
-
@@ -89,21 +88,6 @@
- -
From f62c1a93891e7e437afa8d7c5e7bae54fb925a16 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:46:27 +0700 Subject: [PATCH 02/26] Perbarui skema persetujuan_penawaran Menambahkan migrasi untuk membuat beberapa kolom dalam tabel `persetujuan_penawaran` menjadi nullable dan mengubah nama kolom `sls_resume` menjadi `sla_resume`. Perubahan-perubahan ini mencakup setting nullable untuk beberapa kolom seperti `nomor_proposal_penawaran`, `tanggal_proposal_penawaran`, `biaya_final`, `sla_resume`, `sla_final`, `catatan`, `attachment`, `region_id`, dan `status`, serta mengembalikan perubahan tersebut pada metode `down`. --- ...530_update_persetujuan_penawaran_table.php | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php diff --git a/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php b/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..5428933 --- /dev/null +++ b/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php @@ -0,0 +1,47 @@ +string('nomor_proposal_penawaran')->nullable()->change(); + $table->date('tanggal_proposal_penawaran')->nullable()->change(); + $table->string('biaya_final')->nullable()->change(); + $table->renameColumn('sls_resume', 'sla_resume'); + $table->datetime('sla_resume')->nullable()->change(); + $table->datetime('sla_final')->nullable()->change(); + $table->string('catatan')->nullable()->change(); + $table->string('attachment')->nullable()->change(); + $table->foreignId('region_id')->nullable()->change(); + $table->boolean('status')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + : void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->string('nomor_proposal_penawaran')->nullable(false)->change(); + $table->date('tanggal_proposal_penawaran')->nullable(false)->change(); + $table->string('biaya_final')->nullable(false)->change(); + $table->renameColumn('sla_resume', 'sls_resume'); + $table->datetime('sls_resume')->nullable(false)->change(); + $table->datetime('sla_final')->nullable(false)->change(); + $table->string('catatan')->nullable(false)->change(); + $table->string('attachment')->nullable(false)->change(); + $table->foreignId('region_id')->nullable(false)->change(); + $table->boolean('status')->nullable(false)->change(); + }); + } + }; From d4dc39b47edfbfd24a3dc6c79091843d569008a4 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:46:36 +0700 Subject: [PATCH 03/26] Tambah model PersetujuanPenawaran Menambahkan file model baru PersetujuanPenawaran.php dalam module LPJ. Model ini mencakup relasi dengan tabel PenawaranTender, Region, dan User, serta mendefinisikan properti yang dapat diisi dan tipe data yang sesuai dalam tabel 'persetujuan_penawaran'. --- app/Models/PersetujuanPenawaran.php | 56 +++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 app/Models/PersetujuanPenawaran.php diff --git a/app/Models/PersetujuanPenawaran.php b/app/Models/PersetujuanPenawaran.php new file mode 100644 index 0000000..d0658a6 --- /dev/null +++ b/app/Models/PersetujuanPenawaran.php @@ -0,0 +1,56 @@ + 'date', + 'sla_resume' => 'datetime', + 'sla_final' => 'datetime', + 'status' => 'boolean', + 'authorized_at' => 'datetime', + ]; + + // Relationship with Penawaran + public function penawaran() + { + return $this->belongsTo(PenawaranTender::class, 'penawaran_id'); + } + + // Relationship with Region + public function region() + { + return $this->belongsTo(Region::class); + } + + // Relationship with User (for authorized_by) + public function authorizedBy() + { + return $this->belongsTo(User::class, 'authorized_by'); + } + } From f2ed8321e1c0cd8f656c4fffe51241e037bd8299 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:46:50 +0700 Subject: [PATCH 04/26] Tambah request validasi PersetujuanPenawaranRequest Menambahkan file request baru bernama PersetujuanPenawaranRequest untuk melakukan validasi terhadap data persetujuan penawaran. Meliputi aturan validasi, pesan kustom untuk kesalahan validasi, serta pengaturan otorisasi. File ini akan memastikan data yang diterima sesuai dengan yang diharapkan sebelum diproses lebih lanjut. --- .../Requests/PersetujuanPenawaranRequest.php | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 app/Http/Requests/PersetujuanPenawaranRequest.php diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php new file mode 100644 index 0000000..b33cc7a --- /dev/null +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -0,0 +1,76 @@ + 'required|exists:penawaran_tender,id', + 'nomor_proposal_penawaran' => 'nullable|string|max:255', + 'tanggal_proposal_penawaran' => 'nullable|date', + 'biaya_final' => 'nullable|numeric|min:0', + 'sla_resume' => 'nullable|date', + 'sla_final' => 'nullable|date|after_or_equal:sla_resume', + 'catatan' => 'nullable|string', + 'attachment' => 'nullable|file|mimes:pdf,doc,docx|max:10240', // Max 10MB + 'region_id' => 'nullable|exists:regions,id', + 'status' => 'nullable|boolean', + 'authorized_status' => 'nullable|boolean', + 'authorized_at' => 'nullable|date', + 'authorized_by' => 'nullable|exists:users,id', + ]; + } + + /** + * Get custom messages for validator errors. + */ + public function messages() + : array + { + return [ + 'penawaran_id.required' => 'Penawaran ID wajib diisi.', + 'penawaran_id.exists' => 'Penawaran ID tidak valid.', + 'nomor_proposal_penawaran.required' => 'Nomor proposal penawaran wajib diisi.', + 'tanggal_proposal_penawaran.required' => 'Tanggal proposal penawaran wajib diisi.', + 'tanggal_proposal_penawaran.date' => 'Tanggal proposal penawaran harus berupa tanggal yang valid.', + 'biaya_final.required' => 'Biaya final wajib diisi.', + 'biaya_final.numeric' => 'Biaya final harus berupa angka.', + 'biaya_final.min' => 'Biaya final tidak boleh kurang dari 0.', + 'sla_resume.required' => 'SLA Resume wajib diisi.', + 'sla_resume.date' => 'SLA Resume harus berupa tanggal yang valid.', + 'sla_final.required' => 'SLA Final wajib diisi.', + 'sla_final.date' => 'SLA Final harus berupa tanggal yang valid.', + 'sla_final.after_or_equal' => 'SLA Final harus sama dengan atau setelah SLA Resume.', + 'attachment.file' => 'Attachment harus berupa file.', + 'attachment.mimes' => 'Attachment harus berupa file PDF, DOC, atau DOCX.', + 'attachment.max' => 'Ukuran attachment tidak boleh lebih dari 10MB.', + 'region_id.required' => 'Region ID wajib diisi.', + 'region_id.exists' => 'Region ID tidak valid.', + 'status.required' => 'Status wajib diisi.', + 'status.boolean' => 'Status harus berupa nilai boolean.', + 'authorized_status.boolean' => 'Status otorisasi harus berupa nilai boolean.', + 'authorized_at.date' => 'Tanggal otorisasi harus berupa tanggal yang valid.', + 'authorized_by.exists' => 'ID pengguna yang mengotorisasi tidak valid.', + ]; + } + } From e696604be6355c3006a5ddba45ee59bfeee2ea2c Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:47:01 +0700 Subject: [PATCH 05/26] Tambahkan PersetujuanPenawaranController Menambahkan `PersetujuanPenawaranController` untuk mengelola persetujuan penawaran. Controller ini mencakup operasi CRUD dasar (Create, Read, Update, Delete) serta menyediakan fitur pencarian dan paginasi melalui metode `dataForDatatables`. Metode-metode ini memudahkan interaksi pengguna dengan data persetujuan penawaran, memastikan data valid, dan mengelola otorisasi pengguna. --- .../PersetujuanPenawaranController.php | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 app/Http/Controllers/PersetujuanPenawaranController.php diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php new file mode 100644 index 0000000..73f7429 --- /dev/null +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -0,0 +1,147 @@ +validated(); + $validated['created_by'] = Auth::id(); + + PersetujuanPenawaran::create($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran created successfully.'); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('lpj::persetujuan_penawaran.create'); + } + + /** + * Display the specified resource. + */ + public function show(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.show', compact('persetujuanPenawaran')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.edit', compact('persetujuanPenawaran')); + } + + /** + * Update the specified resource in storage. + */ + public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran) + { + $validated = $request->validated(); + $validated['updated_by'] = Auth::id(); + + $persetujuanPenawaran->update($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(PersetujuanPenawaran $persetujuanPenawaran) + { + $persetujuanPenawaran->delete(); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran deleted successfully'); + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('persetujuan_penawaran.view')) { + //abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where(['status' => 'persetujuan-penawaran']); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q + ->where('nomor_registrasi', 'LIKE', "%$search%"); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $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(['debiture','penawaranTender.detail'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 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, + ]); + } + } From cc88d9af3f1dc96be3c3238e26068b91ae0127db Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:47:15 +0700 Subject: [PATCH 06/26] Refactor and streamline web route imports Mengubah urutan dan format import controller agar lebih rapi dan terstruktur. Hal ini melibatkan merapikan dan menyusun ulang urutan import serta memperbaiki format penulisan route middleware dan grouping agar lebih konsisten. Perubahan ini tidak mengubah fungsi utama dari routing namun meningkatkan keterbacaan dan pengelolaan kode. --- routes/web.php | 996 +++++++++++++++++++++++++------------------------ 1 file changed, 517 insertions(+), 479 deletions(-) diff --git a/routes/web.php b/routes/web.php index 84857b7..6aad427 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,498 +1,536 @@ group(function () { - Route::get('api/check-penawaran/{nomor_registrasi}', [TenderController::class, 'checkPenawaranExistence']); + /* + |-------------------------------------------------------------------------- + | Web Routes + |-------------------------------------------------------------------------- + | + | Here is where you can register web routes for your application. These + | routes are loaded by the RouteServiceProvider within a group which + | contains the "web" middleware group. Now create something great! + | + */ - Route::name('basicdata.')->prefix('basic-data')->group(function () { - Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () { - Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisFasilitasKreditController::class, 'dataForDatatables'])->name( + Route::middleware(['auth'])->group(function () { + Route::get('api/check-penawaran/{nomor_registrasi}', [TenderController::class, 'checkPenawaranExistence']); + + Route::name('basicdata.')->prefix('basic-data')->group(function () { + Route::name('jenis-fasilitas-kredit.')->prefix('jenis-fasilitas-kredit')->group(function () { + Route::get('restore/{id}', [JenisFasilitasKreditController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisFasilitasKreditController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [JenisFasilitasKreditController::class, 'export'])->name('export'); + }); + Route::resource('jenis-fasilitas-kredit', JenisFasilitasKreditController::class); + + Route::name('jenis-legalitas-jaminan.')->prefix('jenis-legalitas-jaminan')->group(function () { + Route::get('restore/{id}', [JenisLegalitasJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisLegalitasJaminanController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [JenisLegalitasJaminanController::class, 'export'])->name('export'); + }); + Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); + + Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { + Route::get('legalitas/{id}/{jenisJaminanId}', [DokumenJaminanController::class, 'getLegalitasJaminan']) + ->name('legalitas'); + Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [JenisJaminanController::class, 'export'])->name('export'); + }); + Route::resource('jenis-jaminan', JenisJaminanController::class); + + Route::name('tujuan-penilaian.')->prefix('tujuan-penilaian')->group(function () { + Route::get('restore/{id}', [TujuanPenilaianController::class, 'restore'])->name('restore'); + Route::get('datatables', [TujuanPenilaianController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [TujuanPenilaianController::class, 'export'])->name('export'); + }); + Route::resource('tujuan-penilaian', TujuanPenilaianController::class); + + Route::name('tujuan_penilaian_kjpp.')->prefix('tujuan_penilaian_kjpp')->group(function () { + Route::get('datatables', [TujuanPenilaianKJPPController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [TujuanPenilaianKJPPController::class, 'export'])->name('export'); + }); + Route::resource('tujuan_penilaian_kjpp', TujuanPenilaianKJPPController::class); + + Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { + Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [JenisDokumenController::class, 'export'])->name('export'); + }); + Route::resource('jenis-dokumen', JenisDokumenController::class); + + + Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { + Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); + Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); + }); + Route::resource('nilai-plafond', NilaiPlafondController::class); + + Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); + + Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); + + Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { + Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); + Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); + }); + Route::resource('arah-mata-angin', ArahMataAnginController::class); + + + Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { + Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); + Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); + }); + Route::resource('status-permohonan', StatusPermohonanController::class); + + Route::name('region.')->prefix('region')->group(function () { + Route::get('restore/{id}', [RegionController::class, 'restore'])->name('restore'); + Route::get('datatables', [RegionController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [RegionController::class, 'export'])->name('export'); + }); + + + Route::resource('region', RegionController::class, [ + 'names' => [ + 'index' => 'region.index', + 'show' => 'region.show', + 'create' => 'region.create', + 'store' => 'region.store', + 'edit' => 'region.edit', + 'update' => 'region.update', + 'destroy' => 'region.destroy', + ], + ]); + + Route::resource('region', RegionController::class); + + + Route::name('teams.')->prefix('teams')->group(function () { + Route::get('restore/{id}', [TeamsController::class, 'restore'])->name('restore'); + Route::get('datatables', [TeamsController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [TeamsController::class, 'export'])->name('export'); + }); + + Route::resource('teams', TeamsController::class, [ + 'names' => [ + 'index' => 'teams.index', + 'show' => 'teams.show', + 'create' => 'teams.create', + 'store' => 'teams.store', + 'edit' => 'teams.edit', + 'update' => 'teams.update', + 'destroy' => 'teams.destroy', + ], + ]); + + Route::name('jenis-penilaian.')->prefix('jenis-penilaian')->group(function () { + Route::get('restore/{id}', [JenisPenilaianController::class, 'restore'])->name('restore'); + Route::get('datatables', [JenisPenilaianController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [JenisPenilaianController::class, 'export'])->name('export'); + }); + + Route::resource('jenis-penilaian', JenisPenilaianController::class, [ + 'names' => [ + 'index' => 'jenis-penilaian.index', + 'show' => 'jenis-penilaian.show', + 'create' => 'jenis-penilaian.create', + 'store' => 'jenis-penilaian.store', + 'edit' => 'jenis-penilaian.edit', + 'update' => 'jenis-penilaian.update', + 'destroy' => 'jenis-penilaian.destroy', + ], + ]); + + + Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { + Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); + Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); + }); + Route::resource('nilai-plafond', NilaiPlafondController::class); + + Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); + + Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { + Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); + Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables'])->name( + 'datatables', + ); + Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); + }); + Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); + + Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { + Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); + Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); + }); + Route::resource('arah-mata-angin', ArahMataAnginController::class); + Route::resource('arah-mata-angin', ArahMataAnginController::class); + + Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { + Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); + Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); + }); + Route::resource('status-permohonan', StatusPermohonanController::class); + + // Start Activity KJPP route + Route::name('kjpp.')->prefix('kjpp')->group(function () { + Route::get('datatables', [KJPPController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [KJPPController::class, 'export'])->name('export'); + }); + + Route::resource('kjpp', KJPPController::class); + // End Activity KJPP route + + // Start Activity Ijin Usaha route + Route::name('ijin_usaha.')->prefix('ijin_usaha')->group(function () { + Route::get('datatables', [IjinUsahaController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [IjinUsahaController::class, 'export'])->name('export'); + }); + + Route::resource('ijin_usaha', IjinUsahaController::class); + // End Activity Ijin Usaha route + + // Start Activity Jenis Laporan route + Route::name('jenis_laporan.')->prefix('jenis_laporan')->group(function () { + Route::get('datatables', [JenisLaporanController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [JenisLaporanController::class, 'export'])->name('export'); + }); + + Route::resource('jenis_laporan', JenisLaporanController::class); + // End Activity Jenis Laporan route + + // basic data surveyor + Route::get('datatablesSurveyory/{type}', [SurveyorController::class, 'dataForDatatablesData'])->name( + 'datatablesSurveyory', + ); + Route::get('createData/{type}', [SurveyorController::class, 'createData'])->name('createData'); + Route::get('/{type}/{id}', [SurveyorController::class, 'editData'])->name('editData'); + Route::post('storeData/{type}', [SurveyorController::class, 'storeData'])->name('storeData'); + Route::put('updateData/{type}/{id}', [SurveyorController::class, 'updateData'])->name('updateData'); + Route::delete('deleteData/{id}/{type}', [SurveyorController::class, 'destroy'])->name('deleteData'); + + // Start Activity SLA route + Route::name('sla.')->prefix('sla')->group(function () { + Route::get('/', [SLAController::class, 'index'])->name('index'); + }); + // End Activity SLA route + + $headers = [ + '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', + 'jenis-pesawat' => 'Jenis pesawat', + 'model-alat-berat' => 'Model Alat Berat', + 'jenis-kapal' => 'Jenis kapal', + 'jenis-kendaraan' => 'Jenis kendaraan', + ]; + + foreach ($headers as $type => $header) { + Route::get($type, [SurveyorController::class, 'data'])->name($type . '.index')->defaults('type', $type); + } + }); + + Route::name('debitur.')->prefix('debitur')->group(function () { + Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); + Route::get('datatables', [DebitureController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [DebitureController::class, 'export'])->name('export'); + + Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { + Route::get('download', [DokumenJaminanController::class, 'download'])->name('download'); + Route::get('bulk-download', [DokumenJaminanController::class, 'bulkDownload'])->name('bulk.download'); + Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); + Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); + Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); + Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); + Route::post('store', [DokumenJaminanController::class, 'store'])->name('store'); + Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); + }); + + Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () { + Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); + Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); + Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); + Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); + Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); + Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); + }); + }); + + Route::resource('debitur', DebitureController::class); + + Route::name('laporan.')->prefix('laporan')->group(function () { + Route::get('sederhana', [LaporanController::class, 'sederhana_index'])->name('sederhana.index'); + Route::get('standard', [LaporanController::class, 'standard_index'])->name('standard.index'); + }); + + Route::name('resume.')->prefix('resume')->group(function () { + Route::get('/', [ResumeController::class, 'index'])->name('index'); + Route::get('{id}/show', [ResumeController::class, 'show'])->name('show'); + Route::post('store', [ResumeController::class, 'store'])->name('store'); + Route::get('datatables', [ResumeController::class, 'dataForDatatables'])->name('datatables'); + }); + + Route::name('permohonan.')->prefix('permohonan')->group(function () { + Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); + Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); + Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [PermohonanController::class, 'export'])->name('export'); + Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print'); + }); + + Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); + + Route::resource('permohonan', PermohonanController::class); + + Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); + Route::get('authorization/datatables', [PermohonanController::class, 'dataForAuthorization'])->name( + 'authorization.datatables', + ); + Route::get('authorization/{id}/edit', [PermohonanController::class, 'showAuthorization'])->name( + 'authorization.show', + ); + Route::put('authorization/{id}', [PermohonanController::class, 'updateAuthorization'])->name( + 'authorization.update', + ); + + Route::name('tender.')->prefix('tender')->group(function () { + // Penawaran + Route::get('penawaran', [TenderController::class, 'penawaran_index'])->name('penawaran.index'); + Route::get('penawaran/{noreg}/show', [TenderController::class, 'penawaran_show'])->name('penawaran.show'); + Route::get('penawaran/{noreg}/create', [TenderController::class, 'penawaran_create'])->name( + 'penawaran.createPenawaran', + ); + Route::post('penawaran/{noreg}/store', [TenderController::class, 'penawaran_store'])->name( + 'penawaran.storePenawaran', + ); + Route::get('penawaran/{noreg}/edit', [TenderController::class, 'penawaran_edit'])->name( + 'penawaran.editPenawaran', + ); + Route::put('penawaran/{noreg}/update', [TenderController::class, 'penawaran_update'])->name( + 'penawaran.updatePenawaran', + ); + Route::get('penawaran/exportPenawaran', [TenderController::class, 'exportPenawaran'])->name( + 'penawaran.exportPenawaran', + ); + Route::get('penawaran/datatables', [TenderController::class, 'datatablesPenawaran'])->name( + 'penawaran.datatables', + ); + Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name( + '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( + 'penawaran.ulang.index', + ); + Route::get('penawaran/ulang/datatables', [TenderController::class, 'datatablesPenawaranUlang'])->name( + 'penawaran.ulang.datatables', + ); + }); + + Route::name('penilaian.')->prefix('penilaian')->group(function () { + Route::get('restore/{id}', [PenilaianController::class, 'restore'])->name('restore'); + Route::get('datatables', [PenilaianController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [PenilaianController::class, 'export'])->name('export'); + Route::get('/getUserTeams/{id}', [PenilaianController::class, 'getUserTeams']); + + Route::get('/', [PenilaianController::class, 'index'])->name('index'); + Route::get('{id}/assignment', [PenilaianController::class, 'assignment'])->name('assignment'); + Route::put('{id}', [PenilaianController::class, 'update'])->name('update'); + Route::put('revisi/{nomor_registrasi}', [PenilaianController::class, 'revisi'])->name('revisi'); + Route::post('create', [PenilaianController::class, 'create'])->name('create'); + Route::post('store', [PenilaianController::class, 'store'])->name('store'); + }); + + /** + * Route start activity + */ + + Route::name('activity.')->prefix('activity')->group(function () { + Route::get('restore/{id}', [ActivityController::class, 'restore'])->name('restore'); + Route::get('datatables', [ActivityController::class, 'dataForDatatables'])->name('datatables'); + Route::get('export', [ActivityController::class, 'export'])->name('export'); + + Route::get('/', [ActivityController::class, 'index'])->name('index'); + + Route::get('/{id}/show', [ActivityController::class, 'show'])->name('show'); + Route::get('download/{id}', [ActivityController::class, 'download'])->name('download'); + Route::get('senior', [ActivityController::class, 'senior'])->name('senior'); + + Route::name('progres.')->prefix('progres')->group(function () { + Route::get('/', [ActivityController::class, 'progres_activity'])->name('index'); + Route::get('/datatables/{id}', [ActivityController::class, 'dataTablesForActivity'])->name( + 'datatables', + ); + }); + + Route::get('/teams/{regionId}', [ActivityController::class, 'dataTablesForActivity']); + }); + + /** + * Route end activity + */ + + + Route::name('otorisator.')->prefix('otorisator')->group(function () { + Route::get('pelaporan', [PenilaianController::class, 'otorisator'])->name('pelaporan.index')->defaults( + 'type', + 'pelaporan', + ); + Route::get('pembayaran', [PenilaianController::class, 'otorisator'])->name('pembayaran.index')->defaults( + 'type', + 'pembayaran', + ); + Route::get('pembatalan', [PenilaianController::class, 'otorisator'])->name('pembatalan.index')->defaults( + 'type', + 'pembatalan', + ); + Route::get('sla', [PenilaianController::class, 'otorisator'])->name('sla.index')->defaults('type', 'sla'); + Route::get('/datatables/{otorisator}', [PenilaianController::class, 'dataForAuthorization'])->name( 'datatables', ); - Route::get('export', [JenisFasilitasKreditController::class, 'export'])->name('export'); + Route::get('show/{id}', [PenilaianController::class, 'show'])->name('show'); }); - Route::resource('jenis-fasilitas-kredit', JenisFasilitasKreditController::class); - Route::name('jenis-legalitas-jaminan.')->prefix('jenis-legalitas-jaminan')->group(function () { - Route::get('restore/{id}', [JenisLegalitasJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisLegalitasJaminanController::class, 'dataForDatatables'])->name( - 'datatables', + + Route::name('surveyor.')->prefix('surveyor')->group(function () { + Route::get('/', [SurveyorController::class, 'index'])->name('index'); + Route::get('{id}/show', [SurveyorController::class, 'show'])->name('show'); + Route::post('store', [SurveyorController::class, 'store'])->name('store'); + Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah'); + Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal'); + Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); + Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto'); + Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name( + 'checkButtonStatus', ); - Route::get('export', [JenisLegalitasJaminanController::class, 'export'])->name('export'); - }); - Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); - Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { - Route::get('legalitas/{id}/{jenisJaminanId}', [DokumenJaminanController::class, 'getLegalitasJaminan'])->name('legalitas'); - Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [JenisJaminanController::class, 'export'])->name('export'); - }); - Route::resource('jenis-jaminan', JenisJaminanController::class); - - Route::name('tujuan-penilaian.')->prefix('tujuan-penilaian')->group(function () { - Route::get('restore/{id}', [TujuanPenilaianController::class, 'restore'])->name('restore'); - Route::get('datatables', [TujuanPenilaianController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [TujuanPenilaianController::class, 'export'])->name('export'); - }); - Route::resource('tujuan-penilaian', TujuanPenilaianController::class); - - Route::name('tujuan_penilaian_kjpp.')->prefix('tujuan_penilaian_kjpp')->group(function () { - Route::get('datatables', [TujuanPenilaianKJPPController::class, 'dataForDatatables'])->name( - 'datatables', + Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables'); + Route::get('inspeksi/{id}/{jaminanId}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi'); + Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah'); + Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto'); + Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name( + 'data-pembanding', ); - Route::get('export', [TujuanPenilaianKJPPController::class, 'export'])->name('export'); - }); - Route::resource('tujuan_penilaian_kjpp', TujuanPenilaianKJPPController::class); - - Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { - Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [JenisDokumenController::class, 'export'])->name('export'); - }); - Route::resource('jenis-dokumen', JenisDokumenController::class); - - - Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { - Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); - Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); - }); - Route::resource('nilai-plafond', NilaiPlafondController::class); - - Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables'])->name( - 'datatables', - ); - Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); - - Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables'])->name( - 'datatables', - ); - Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); - - Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { - Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); - Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); - }); - Route::resource('arah-mata-angin', ArahMataAnginController::class); - - - Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { - Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); - Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); - }); - Route::resource('status-permohonan', StatusPermohonanController::class); - - Route::name('region.')->prefix('region')->group(function () { - Route::get('restore/{id}', [RegionController::class, 'restore'])->name('restore'); - Route::get('datatables', [RegionController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [RegionController::class, 'export'])->name('export'); + Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor'); }); - - Route::resource('region', RegionController::class, [ - 'names' => [ - 'index' => 'region.index', - 'show' => 'region.show', - 'create' => 'region.create', - 'store' => 'region.store', - 'edit' => 'region.edit', - 'update' => 'region.update', - 'destroy' => 'region.destroy', - ], - ]); - - Route::resource('region', RegionController::class); - - - Route::name('teams.')->prefix('teams')->group(function () { - Route::get('restore/{id}', [TeamsController::class, 'restore'])->name('restore'); - Route::get('datatables', [TeamsController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [TeamsController::class, 'export'])->name('export'); + Route::name('penilai.')->prefix('penilai')->group(function () { + Route::get('/', [PenilaiController::class, 'index'])->name('index'); + Route::get('/{id}/show', [PenilaiController::class, 'show'])->name('show'); + Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); }); - Route::resource('teams', TeamsController::class, [ - 'names' => [ - 'index' => 'teams.index', - 'show' => 'teams.show', - 'create' => 'teams.create', - 'store' => 'teams.store', - 'edit' => 'teams.edit', - 'update' => 'teams.update', - 'destroy' => 'teams.destroy', - ], - ]); + Route::get('persetujuan-penawaran/datatables', [PersetujuanPenawaranController::class, 'dataForDatatables']) + ->name('persetujuan-penawaran.datatables'); - Route::name('jenis-penilaian.')->prefix('jenis-penilaian')->group(function () { - Route::get('restore/{id}', [JenisPenilaianController::class, 'restore'])->name('restore'); - Route::get('datatables', [JenisPenilaianController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [JenisPenilaianController::class, 'export'])->name('export'); - }); - - Route::resource('jenis-penilaian', JenisPenilaianController::class, [ - 'names' => [ - 'index' => 'jenis-penilaian.index', - 'show' => 'jenis-penilaian.show', - 'create' => 'jenis-penilaian.create', - 'store' => 'jenis-penilaian.store', - 'edit' => 'jenis-penilaian.edit', - 'update' => 'jenis-penilaian.update', - 'destroy' => 'jenis-penilaian.destroy', - ], - ]); - - - Route::name('nilai-plafond.')->prefix('nilai-plafond')->group(function () { - Route::get('restore/{id}', [NilaiPlafondController::class, 'restore'])->name('restore'); - Route::get('datatables', [NilaiPlafondController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [NilaiPlafondController::class, 'export'])->name('export'); - }); - Route::resource('nilai-plafond', NilaiPlafondController::class); - - Route::name('hubungan-pemilik-jaminan.')->prefix('hubungan-pemilik-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPemilikJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPemilikJaminanController::class, 'dataForDatatables'])->name( - 'datatables', - ); - Route::get('export', [HubunganPemilikJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-pemilik-jaminan', HubunganPemilikJaminanController::class); - - Route::name('hubungan-penghuni-jaminan.')->prefix('hubungan-penghuni-jaminan')->group(function () { - Route::get('restore/{id}', [HubunganPenghuniJaminanController::class, 'restore'])->name('restore'); - Route::get('datatables', [HubunganPenghuniJaminanController::class, 'dataForDatatables'])->name( - 'datatables', - ); - Route::get('export', [HubunganPenghuniJaminanController::class, 'export'])->name('export'); - }); - Route::resource('hubungan-penghuni-jaminan', HubunganPenghuniJaminanController::class); - - Route::name('arah-mata-angin.')->prefix('arah-mata-angin')->group(function () { - Route::get('restore/{id}', [ArahMataAnginController::class, 'restore'])->name('restore'); - Route::get('datatables', [ArahMataAnginController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [ArahMataAnginController::class, 'export'])->name('export'); - }); - Route::resource('arah-mata-angin', ArahMataAnginController::class); - Route::resource('arah-mata-angin', ArahMataAnginController::class); - - Route::name('status-permohonan.')->prefix('status-permohonan')->group(function () { - Route::get('restore/{id}', [StatusPermohonanController::class, 'restore'])->name('restore'); - Route::get('datatables', [StatusPermohonanController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [StatusPermohonanController::class, 'export'])->name('export'); - }); - Route::resource('status-permohonan', StatusPermohonanController::class); - - // Start Activity KJPP route - Route::name('kjpp.')->prefix('kjpp')->group(function () { - Route::get('datatables', [KJPPController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [KJPPController::class, 'export'])->name('export'); - }); - - Route::resource('kjpp', KJPPController::class); - // End Activity KJPP route - - // Start Activity Ijin Usaha route - Route::name('ijin_usaha.')->prefix('ijin_usaha')->group(function () { - Route::get('datatables', [IjinUsahaController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [IjinUsahaController::class, 'export'])->name('export'); - }); - - Route::resource('ijin_usaha', IjinUsahaController::class); - // End Activity Ijin Usaha route - - // Start Activity Jenis Laporan route - Route::name('jenis_laporan.')->prefix('jenis_laporan')->group(function () { - Route::get('datatables', [JenisLaporanController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [JenisLaporanController::class, 'export'])->name('export'); - }); - - Route::resource('jenis_laporan', JenisLaporanController::class); - // End Activity Jenis Laporan route - - // basic data surveyor - Route::get('datatablesSurveyory/{type}', [SurveyorController::class, 'dataForDatatablesData'])->name('datatablesSurveyory'); - Route::get('createData/{type}', [SurveyorController::class, 'createData'])->name('createData'); - Route::get('/{type}/{id}', [SurveyorController::class, 'editData'])->name('editData'); - Route::post('storeData/{type}', [SurveyorController::class, 'storeData'])->name('storeData'); - Route::put('updateData/{type}/{id}', [SurveyorController::class, 'updateData'])->name('updateData'); - Route::delete('deleteData/{id}/{type}', [SurveyorController::class, 'destroy'])->name('deleteData'); - - // Start Activity SLA route - Route::name('sla.')->prefix('sla')->group(function () { - Route::get('/', [SLAController::class, 'index'])->name('index'); - }); - // End Activity SLA route - - $headers = [ - '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', - 'jenis-pesawat' => 'Jenis pesawat', - 'model-alat-berat' => 'Model Alat Berat', - 'jenis-kapal' => 'Jenis kapal', - 'jenis-kendaraan' => 'Jenis kendaraan', - ]; - - foreach ($headers as $type => $header) { - Route::get($type, [SurveyorController::class, 'data']) - ->name($type . '.index') - ->defaults('type', $type); - } + Route::resource('persetujuan-penawaran', PersetujuanPenawaranController::class); }); - Route::name('debitur.')->prefix('debitur')->group(function () { - Route::get('restore/{id}', [DebitureController::class, 'restore'])->name('restore'); - Route::get('datatables', [DebitureController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [DebitureController::class, 'export'])->name('export'); - - - Route::name('jaminan.')->prefix('{id}/jaminan')->group(function () { - Route::get('download', [DokumenJaminanController::class, 'download'])->name('download'); - Route::get('bulk-download', [DokumenJaminanController::class, 'bulkDownload'])->name('bulk.download'); - Route::get('/', [DokumenJaminanController::class, 'index'])->name('index'); - Route::get('create', [DokumenJaminanController::class, 'create'])->name('create'); - Route::get('{jaminan}/edit', [DokumenJaminanController::class, 'edit'])->name('edit'); - Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); - Route::post('store', [DokumenJaminanController::class, 'store'])->name('store'); - Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); - }); - - Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () { - Route::get('/', [PemilikJaminanController::class, 'index'])->name('index'); - Route::get('create', [PemilikJaminanController::class, 'create'])->name('create'); - Route::get('{pemilik}/edit', [PemilikJaminanController::class, 'edit'])->name('edit'); - Route::put('{pemilik}', [PemilikJaminanController::class, 'update'])->name('update'); - Route::post('store', [PemilikJaminanController::class, 'store'])->name('store'); - Route::delete('{pemilik}', [PemilikJaminanController::class, 'destroy'])->name('destroy'); - }); - }); - - Route::resource('debitur', DebitureController::class); - - Route::name('laporan.')->prefix('laporan')->group(function () { - Route::get('sederhana', [LaporanController::class, 'sederhana_index'])->name('sederhana.index'); - Route::get('standard', [LaporanController::class, 'standard_index'])->name('standard.index'); - }); - - Route::name('resume.')->prefix('resume')->group(function () { - Route::get('/', [ResumeController::class, 'index'])->name('index'); - Route::get('{id}/show', [ResumeController::class, 'show'])->name('show'); - Route::post('store', [ResumeController::class, 'store'])->name('store'); - Route::get('datatables', [ResumeController::class, 'dataForDatatables'])->name('datatables'); - }); - - Route::name('permohonan.')->prefix('permohonan')->group(function () { - Route::get('{id}/create', [PermohonanController::class, 'createPermohonan'])->name('create.debitur'); - Route::get('restore/{id}', [PermohonanController::class, 'restore'])->name('restore'); - Route::get('datatables', [PermohonanController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [PermohonanController::class, 'export'])->name('export'); - Route::get('print/{id}', [PermohonanController::class, 'print'])->name('print'); - }); - - Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); - - Route::resource('permohonan', PermohonanController::class); - - Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); - Route::get('authorization/datatables', [PermohonanController::class, 'dataForAuthorization'])->name( - 'authorization.datatables', - ); - Route::get('authorization/{id}/edit', [PermohonanController::class, 'showAuthorization'])->name( - 'authorization.show', - ); - Route::put('authorization/{id}', [PermohonanController::class, 'updateAuthorization'])->name( - 'authorization.update', - ); - - Route::name('tender.')->prefix('tender')->group(function () { - // Penawaran - Route::get('penawaran', [TenderController::class, 'penawaran_index'])->name('penawaran.index'); - Route::get('penawaran/{noreg}/show', [TenderController::class, 'penawaran_show'])->name('penawaran.show'); - Route::get('penawaran/{noreg}/create', [TenderController::class, 'penawaran_create'])->name( - 'penawaran.createPenawaran', - ); - Route::post('penawaran/{noreg}/store', [TenderController::class, 'penawaran_store'])->name( - 'penawaran.storePenawaran', - ); - Route::get('penawaran/{noreg}/edit', [TenderController::class, 'penawaran_edit'])->name( - 'penawaran.editPenawaran', - ); - Route::put('penawaran/{noreg}/update', [TenderController::class, 'penawaran_update'])->name( - 'penawaran.updatePenawaran', - ); - Route::get('penawaran/exportPenawaran', [TenderController::class, 'exportPenawaran'])->name( - 'penawaran.exportPenawaran', - ); - Route::get('penawaran/datatables', [TenderController::class, 'datatablesPenawaran'])->name( - 'penawaran.datatables', - ); - Route::get('penawaran/{noreg}/suratTender', [TenderController::class, 'showSuratTender'])->name( - '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( - 'penawaran.ulang.index', - ); - Route::get('penawaran/ulang/datatables', [TenderController::class, 'datatablesPenawaranUlang'])->name( - 'penawaran.ulang.datatables', - ); - }); - - Route::name('penilaian.')->prefix('penilaian')->group(function () { - Route::get('restore/{id}', [PenilaianController::class, 'restore'])->name('restore'); - Route::get('datatables', [PenilaianController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [PenilaianController::class, 'export'])->name('export'); - Route::get('/getUserTeams/{id}', [PenilaianController::class, 'getUserTeams']); - - Route::get('/', [PenilaianController::class, 'index'])->name('index'); - Route::get('{id}/assignment', [PenilaianController::class, 'assignment'])->name('assignment'); - Route::put('{id}', [PenilaianController::class, 'update'])->name('update'); - Route::put('revisi/{nomor_registrasi}', [PenilaianController::class, 'revisi'])->name('revisi'); - Route::post('create', [PenilaianController::class, 'create'])->name('create'); - Route::post('store', [PenilaianController::class, 'store'])->name('store'); - }); - - /** - * Route start activity - */ - - Route::name('activity.')->prefix('activity')->group(function () { - Route::get('restore/{id}', [ActivityController::class, 'restore'])->name('restore'); - Route::get('datatables', [ActivityController::class, 'dataForDatatables'])->name('datatables'); - Route::get('export', [ActivityController::class, 'export'])->name('export'); - - Route::get('/', [ActivityController::class, 'index'])->name('index'); - - Route::get('/{id}/show', [ActivityController::class, 'show'])->name('show'); - Route::get('download/{id}', [ActivityController::class, 'download'])->name('download'); - Route::get('senior', [ActivityController::class, 'senior'])->name('senior'); - - Route::name('progres.')->prefix('progres')->group(function () { - Route::get('/', [ActivityController::class, 'progres_activity'])->name('index'); - Route::get('/datatables/{id}', [ActivityController::class, 'dataTablesForActivity'])->name('datatables'); - }); - - Route::get('/teams/{regionId}', [ActivityController::class, 'dataTablesForActivity']); - }); - - /** - * Route end activity - */ - - - Route::name('otorisator.')->prefix('otorisator')->group(function () { - Route::get('pelaporan', [PenilaianController::class, 'otorisator'])->name('pelaporan.index')->defaults('type', 'pelaporan'); - Route::get('pembayaran', [PenilaianController::class, 'otorisator'])->name('pembayaran.index')->defaults('type', 'pembayaran'); - Route::get('pembatalan', [PenilaianController::class, 'otorisator'])->name('pembatalan.index')->defaults('type', 'pembatalan'); - Route::get('sla', [PenilaianController::class, 'otorisator'])->name('sla.index')->defaults('type', 'sla'); - Route::get('/datatables/{otorisator}', [PenilaianController::class, 'dataForAuthorization'])->name('datatables'); - Route::get('show/{id}', [PenilaianController::class, 'show'])->name('show'); - }); - - - - Route::name('surveyor.')->prefix('surveyor')->group(function () { - Route::get('/', [SurveyorController::class, 'index'])->name('index'); - Route::get('{id}/show', [SurveyorController::class, 'show'])->name('show'); - Route::post('store', [SurveyorController::class, 'store'])->name('store'); - Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah'); - Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal'); - Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); - Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto'); - Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus'); - - Route::get('datatables', [SurveyorController::class, 'dataForDatatables'])->name('datatables'); - Route::get('inspeksi/{id}/{jaminanId}', [SurveyorController::class, 'formInspeksi'])->name('inspeksi'); - Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah'); - Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto'); - Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding'); - Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor'); - }); - - Route::name('penilai.')->prefix('penilai')->group(function () { - Route::get('/', [PenilaiController::class, 'index'])->name('index'); - Route::get('/{id}/show', [PenilaiController::class, 'show'])->name('show'); - Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); - }); -}); - -require __DIR__ . '/registrasi.php'; + require __DIR__ . '/registrasi.php'; From 793d80270b70b3de8e8d8b6e10dae11a5ee269d0 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:47:38 +0700 Subject: [PATCH 07/26] Tambah breadcrumb persetujuan penawaran Menambahkan jalur breadcrumb baru untuk halaman persetujuan penawaran di dalam file `breadcrumbs.php`. Hal ini akan memudahkan navigasi ke halaman persetujuan penawaran melalui breadcrumb. --- routes/breadcrumbs.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 0b0b178..fc93573 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -564,5 +564,10 @@ Breadcrumbs::for('sla', function (BreadcrumbTrail $trail) { $trail->push('SLA', route('basicdata.sla.index')); }); + +Breadcrumbs::for('persetujuan-penawaran', function (BreadcrumbTrail $trail) { + $trail->push('Persetujuan Penawaran', route('persetujuan-penawaran.index')); +}); + // add andy require __DIR__ . '/breadcrumbs_registrasi.php'; From 08ebcb740ca8c07553680f14c1861ca79b392272 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:47:49 +0700 Subject: [PATCH 08/26] Tambah menu "Persetujuan Penawaran" Menu baru "Persetujuan Penawaran" dengan role "administrator" dan "pemohon-ao" telah ditambahkan ke file `module.json`. Ini memberikan kemampuan tambahan kepada pengguna untuk mengakses fungsi persetujuan penawaran yang sebelumnya tidak tersedia. --- module.json | 1407 +++++++++++++++++++++++++++++---------------------- 1 file changed, 811 insertions(+), 596 deletions(-) diff --git a/module.json b/module.json index 9e3a069..db1356b 100644 --- a/module.json +++ b/module.json @@ -1,600 +1,815 @@ { - "name": "Lpj", - "alias": "lpj", - "database": "", - "description": "", - "keywords": [], - "priority": 0, - "providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"], - "files": ["app/Helpers/Lpj.php"], - "menu": { - "main": [ - { - "title": "Permohonan", - "path": "permohonan", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Registrasi", - "path": "registrasi", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tender", - "path": "tender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"], - "sub": [ - { - "title": "Data Proses Penawaran", - "path": "tender.prosespenawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Data Penawaran Ulang", - "path": "tender.penawaran.ulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - } - ] - }, - { - "title": "Otorisasi Tender", - "path": "otorisasitender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"], - "sub": [ - { - "title": "Otorisasi Penawaran", - "path": "otorisasitender.penawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"] - } - ] - }, - { - "title": "SPK", - "path": "spk", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Registrasi Final", - "path": "registrasifinal", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Pembatalan", - "path": "", - "icon": "ki-filled ki-file-deleted text-lg text-danger", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Data Debitur", - "path": "debitur", - "icon": "ki-filled ki-people text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Authorization", - "path": "authorization", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-eo"] - }, - { - "title": "Assignment", - "path": "penilaian", - "icon": "ki-filled ki-badge text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Team Activity", - "path": "activity.progres", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Otorisator", - "path": "otorisator", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"], - "sub": [ - { - "title": "Pelaporan", - "path": "otorisator.pelaporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Pembayaran", - "path": "otorisator.pembayaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Pembatalan", - "path": "otorisator.pembatalan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "SLA", - "path": "otorisator.sla", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - } - ] - }, - { - "title": "Surveyor", - "path": "surveyor", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Activity", - "path": "activity", - "icon": "ki-filled ki-calendar-edit text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "surveyor" - ] - }, - { - "title": "Penilai", - "path": "penilai", - "icon": "ki-filled ki-brush text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Laporan", - "path": "laporan", - "icon": "ki-filled ki-filter-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "senior-officer" - ], - "sub": [ - { - "title": "Sederhana", - "path": "laporan.sederhana", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Standard", - "path": "laporan.standard", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "senior-officer" - ] - } - ] - }, - { - "title": "Resume", - "path": "resume", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - } + "name": "Lpj", + "alias": "lpj", + "database": "", + "description": "", + "keywords": [], + "priority": 0, + "providers": [ + "Modules\\Lpj\\Providers\\LpjServiceProvider" ], - "master": [ - { - "title": "Basic Data", - "path": "basicdata", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "surveyor" - ], - "sub": [ - { - "title": "Jenis Fasilitas Kredit", - "path": "basicdata.jenis-fasilitas-kredit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Legalitas Jaminan", - "path": "basicdata.jenis-legalitas-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Aset", - "path": "basicdata.jenis-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Dokumen", - "path": "basicdata.jenis-dokumen", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Tujuan Penilaian", - "path": "basicdata.tujuan-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Nilai Plafond", - "path": "basicdata.nilai-plafond", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Pemilik Jaminan", - "path": "basicdata.hubungan-pemilik-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Penghuni Jaminan", - "path": "basicdata.hubungan-penghuni-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Arah Mata Angin", - "path": "basicdata.arah-mata-angin", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Status Permohonan", - "path": "basicdata.status-permohonan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Region", - "path": "basicdata.region", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "Staff Appraisal", - "path": "basicdata.teams", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Jenis Penilaian", - "path": "basicdata.jenis-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "KJPP", - "path": "basicdata.kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Jenis Laporan", - "path": "basicdata.jenis_laporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tujuan Penilaian KJPP", - "path": "basicdata.tujuan_penilaian_kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Ijin Usaha", - "path": "basicdata.ijin_usaha", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "SLA", - "path": "basicdata.sla", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Bentuk", - "path": "basicdata.bentuk-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kontur Tanah", - "path": "basicdata.kontur-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Posisi Kavling", - "path": "basicdata.posisi-kavling", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Ketinggian Tanah", - "path": "basicdata.ketinggian-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kondisi Fisik Tanah", - "path": "basicdata.kondisi-fisik-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Jenis Bangunan", - "path": "basicdata.jenis-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kondisi Bangunan", - "path": "basicdata.kondisi-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Sifat Bangunan", - "path": "basicdata.sifat-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Sarana Pelengkap", - "path": "basicdata.sarana-pelengkap", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Lalu Lintas Sekitar", - "path": "basicdata.lalu-lintas-lokasi", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Tingkat Keramaian", - "path": "basicdata.tingkat-keramaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Masyarakat Sekitar", - "path": "basicdata.gol-mas-sekitar", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Lantai Unit", - "path": "basicdata.lantai-unit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "View unit", - "path": "basicdata.view-unit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Spesifikasi Bangunan", - "path": "basicdata.spek-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kategori Speksikasi Bangunan", - "path": "basicdata.spek-kategori-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Perkerasan jalan", - "path": "basicdata.perkerasan-jalan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Jenis Pesawat", - "path": "basicdata.jenis-pesawat", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Jenis kapal", - "path": "basicdata.jenis-kapal", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Jenis Kendaraan", - "path": "basicdata.jenis-kendaraan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Model Alat Berat", - "path": "basicdata.model-alat-berat", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - } - ] - } + "files": [ + "app/Helpers/Lpj.php" ], - "system": [] - } + "menu": { + "main": [ + { + "title": "Permohonan", + "path": "permohonan", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Persetujuan Penawaran", + "path": "persetujuan-penawaran", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao" + ] + }, + { + "title": "Registrasi", + "path": "registrasi", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Tender", + "path": "tender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ], + "sub": [ + { + "title": "Data Proses Penawaran", + "path": "tender.prosespenawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Data Penawaran Ulang", + "path": "tender.penawaran.ulang", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + } + ] + }, + { + "title": "Otorisasi Tender", + "path": "otorisasitender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "EO Appraisal", + "DD Appraisal" + ], + "sub": [ + { + "title": "Otorisasi Penawaran", + "path": "otorisasitender.penawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "EO Appraisal", + "DD Appraisal" + ] + } + ] + }, + { + "title": "SPK", + "path": "spk", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Registrasi Final", + "path": "registrasifinal", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Pembatalan", + "path": "", + "icon": "ki-filled ki-file-deleted text-lg text-danger", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Data Debitur", + "path": "debitur", + "icon": "ki-filled ki-people text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Authorization", + "path": "authorization", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-eo" + ] + }, + { + "title": "Assignment", + "path": "penilaian", + "icon": "ki-filled ki-badge text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Team Activity", + "path": "activity.progres", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Otorisator", + "path": "otorisator", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ], + "sub": [ + { + "title": "Pelaporan", + "path": "otorisator.pelaporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Pembayaran", + "path": "otorisator.pembayaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Pembatalan", + "path": "otorisator.pembatalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "SLA", + "path": "otorisator.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + } + ] + }, + { + "title": "Surveyor", + "path": "surveyor", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Activity", + "path": "activity", + "icon": "ki-filled ki-calendar-edit text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ] + }, + { + "title": "Penilai", + "path": "penilai", + "icon": "ki-filled ki-brush text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Laporan", + "path": "laporan", + "icon": "ki-filled ki-filter-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" + ], + "sub": [ + { + "title": "Sederhana", + "path": "laporan.sederhana", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Standard", + "path": "laporan.standard", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" + ] + } + ] + }, + { + "title": "Resume", + "path": "resume", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + } + ], + "master": [ + { + "title": "Basic Data", + "path": "basicdata", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ], + "sub": [ + { + "title": "Jenis Fasilitas Kredit", + "path": "basicdata.jenis-fasilitas-kredit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Legalitas Jaminan", + "path": "basicdata.jenis-legalitas-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Aset", + "path": "basicdata.jenis-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Dokumen", + "path": "basicdata.jenis-dokumen", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Tujuan Penilaian", + "path": "basicdata.tujuan-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Nilai Plafond", + "path": "basicdata.nilai-plafond", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Hubungan Pemilik Jaminan", + "path": "basicdata.hubungan-pemilik-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Hubungan Penghuni Jaminan", + "path": "basicdata.hubungan-penghuni-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Arah Mata Angin", + "path": "basicdata.arah-mata-angin", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + }, + { + "title": "Status Permohonan", + "path": "basicdata.status-permohonan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + }, + { + "title": "Region", + "path": "basicdata.region", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "senior-officer" + ] + }, + { + "title": "Staff Appraisal", + "path": "basicdata.teams", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Jenis Penilaian", + "path": "basicdata.jenis-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "senior-officer" + ] + }, + { + "title": "KJPP", + "path": "basicdata.kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Jenis Laporan", + "path": "basicdata.jenis_laporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Tujuan Penilaian KJPP", + "path": "basicdata.tujuan_penilaian_kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Ijin Usaha", + "path": "basicdata.ijin_usaha", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "SLA", + "path": "basicdata.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Bentuk", + "path": "basicdata.bentuk-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kontur Tanah", + "path": "basicdata.kontur-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Posisi Kavling", + "path": "basicdata.posisi-kavling", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Ketinggian Tanah", + "path": "basicdata.ketinggian-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kondisi Fisik Tanah", + "path": "basicdata.kondisi-fisik-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Bangunan", + "path": "basicdata.jenis-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kondisi Bangunan", + "path": "basicdata.kondisi-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Sifat Bangunan", + "path": "basicdata.sifat-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Sarana Pelengkap", + "path": "basicdata.sarana-pelengkap", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Lalu Lintas Sekitar", + "path": "basicdata.lalu-lintas-lokasi", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Tingkat Keramaian", + "path": "basicdata.tingkat-keramaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Masyarakat Sekitar", + "path": "basicdata.gol-mas-sekitar", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Lantai Unit", + "path": "basicdata.lantai-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "View unit", + "path": "basicdata.view-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Spesifikasi Bangunan", + "path": "basicdata.spek-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kategori Speksikasi Bangunan", + "path": "basicdata.spek-kategori-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Perkerasan jalan", + "path": "basicdata.perkerasan-jalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Pesawat", + "path": "basicdata.jenis-pesawat", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis kapal", + "path": "basicdata.jenis-kapal", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Kendaraan", + "path": "basicdata.jenis-kendaraan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Model Alat Berat", + "path": "basicdata.model-alat-berat", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + } + ] + } + ], + "system": [] + } } From 254274b40f725f5eb23d468b6215937a3380ac21 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:48:18 +0700 Subject: [PATCH 09/26] Refactor OtorisasiPenawaranController indentation and formatting Merubah indentation dan formatting pada file OtorisasiPenawaranController.php untuk meningkatkan keterbacaan kode. Perubahan ini meliputi perbaikan penempatan namespace, import statements, dan penyesuaian indentasi method-method dalam controller tersebut tanpa mengubah logika bisnis. --- .../OtorisasiPenawaranController.php | 572 +++++++++--------- 1 file changed, 289 insertions(+), 283 deletions(-) diff --git a/app/Http/Controllers/OtorisasiPenawaranController.php b/app/Http/Controllers/OtorisasiPenawaranController.php index 82f6fff..1786d03 100644 --- a/app/Http/Controllers/OtorisasiPenawaranController.php +++ b/app/Http/Controllers/OtorisasiPenawaranController.php @@ -1,323 +1,329 @@ user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); + /** + * Display a listing of the resource. + */ + public function index() + { + // dd('hai otorisasi'); + return view('lpj::otorisasipenawaran.index'); } - // Retrieve data from the database - $query =PenawaranTender::query() - ->select('penawaran.*', - 'debitures.name as debitures_name', - 'permohonan.tanggal_permohonan', - 'users.name as user_pemohon', - 'branches.name as branches_name', - 'tujuan_penilaian.name as tujuan_penilaian_name', - 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name') - ->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi') - ->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id') - ->leftJoin('users', 'users.id', '=', 'permohonan.user_id') - ->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id') - ->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id') - ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') - ->where('penawaran.status','=','proposal-tender') - ->withCount('penawarandetails'); - - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $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(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - $data = $query->get(); - - // format date - $i = 0; - foreach ($data as $obj) { - - // tanggal_permohonan - if ($obj->tanggal_permohonan) { - $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y'); + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); } - // date_range - $data[$i]->date_range = "-"; - if ($obj->start_date && $obj->end_date) - { - $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . - Carbon::parse($obj->end_date)->format('d M Y'); + // Retrieve data from the database + $query = PenawaranTender::query()->select( + 'penawaran.*', + 'debitures.name as debitures_name', + 'permohonan.tanggal_permohonan', + 'users.name as user_pemohon', + 'branches.name as branches_name', + 'tujuan_penilaian.name as tujuan_penilaian_name', + 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', + )->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')->leftJoin( + 'debitures', + 'debitures.id', + '=', + 'permohonan.debiture_id', + )->leftJoin('users', 'users.id', '=', 'permohonan.user_id')->leftJoin( + 'branches', + 'branches.id', + '=', + 'permohonan.branch_id', + )->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id', '=', 'permohonan.tujuan_penilaian_id')->leftJoin( + 'tujuan_penilaian_kjpp', + 'tujuan_penilaian_kjpp.id', + '=', + 'penawaran.tujuan_penilaian_kjpp_id', + )->where('penawaran.status', '=', 'proposal-tender')->withCount('penawarandetails'); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); } - $i++; + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $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(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + $data = $query->get(); + + // format date + $i = 0; + foreach ($data as $obj) { + // tanggal_permohonan + if ($obj->tanggal_permohonan) { + $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y'); + } + + // date_range + $data[$i]->date_range = "-"; + if ($obj->start_date && $obj->end_date) { + $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . Carbon::parse( + $obj->end_date, + )->format('d M Y'); + } + + $i++; + } + // format date + + // 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, + ]); } - // format date - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); + public function edit($id) + { + return view('lpj::otorisasipenawaran.edit', compact('id')); + } - // Calculate the current page number - $currentPage = 0 + 1; + public function setData(Request $request) + : JsonResponse { + $data = []; + $penawaran = []; + $penawrandetails = []; + $penawarandetailLogs = []; - // 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 - ]); - } + if (request()->ajax()) { + $id = $request->id; + $penawaran = PenawaranTender::where('status', '=', 'proposal-tender')->find($id); - public function edit($id) - { - return view('lpj::otorisasipenawaran.edit', compact('id')); - } + if ($penawaran) { + $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id', $id)->leftJoin( + 'kjpp', + 'kjpp.id', + '=', + 'detail_penawaran_logs.kjpp_rekanan_id', + )->select( + 'detail_penawaran_logs.*', + DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"), + 'kjpp.code AS kjpp_code', + 'kjpp.name AS kjpp_name', + )->get(); + $penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id)->leftJoin( + 'kjpp', + 'kjpp.id', + '=', + 'detail_penawaran.kjpp_rekanan_id', + )->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')->where( + 'detail_penawaran.status', + '=', + 1, + )->get(); - public function setData(Request $request): JsonResponse - { - $data = array(); - $penawaran = array(); - $penawrandetails = array(); - $penawarandetailLogs = array(); - - if (request()->ajax()) { - $id = $request->id; - $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); - - if ($penawaran) { - $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id') - ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') - ->get(); - $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') - ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') - ->where('detail_penawaran.status','=',1) - ->get(); - - if(sizeof($penawarandetailLogs)>0) - { - $h=0; - foreach($penawarandetailLogs as $obj1) - { - if($obj1->dokumen_persetujuan && Storage::disk('public')->exists($obj1->dokumen_persetujuan)) - { - $penawarandetailLogs_path = Storage::url($obj1->dokumen_persetujuan); - $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path; + if (sizeof($penawarandetailLogs) > 0) { + $h = 0; + foreach ($penawarandetailLogs as $obj1) { + if ($obj1->dokumen_persetujuan && Storage::disk('public')->exists( + $obj1->dokumen_persetujuan, + )) { + $penawarandetailLogs_path = Storage::url( + $obj1->dokumen_persetujuan, + ); + $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path; + } + $h++; } - $h++; } - } - - $i=0; - foreach($penawrandetails as $obj) - { - if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) - { - $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); - $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; - + $i = 0; + foreach ($penawrandetails as $obj) { + if ($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) { + $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); + $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; + } + $i++; } - $i++; - } - $penawaranString = ""; - if($penawaran->status) - { - $penawaranString = convertSlug($penawaran->status); - $penawaran->status = $penawaranString; - } + $penawaranString = ""; + if ($penawaran->status) { + $penawaranString = convertSlug($penawaran->status); + $penawaran->status = $penawaranString; + } - $kjpp=null; - $kjpp = KJPP::pluck('name', 'id'); - $data['penawaran'] = $penawaran; - $data['penawrandetails'] = $penawrandetails; - $data['penawarandetailLogs'] = $penawarandetailLogs; - $data['status'] = 'success'; - $data['message']['message_success'] = array("data successfully found"); + $kjpp = null; + $kjpp = KJPP::pluck('name', 'id'); + $data['penawaran'] = $penawaran; + $data['penawrandetails'] = $penawrandetails; + $data['penawarandetailLogs'] = $penawarandetailLogs; + $data['status'] = 'success'; + $data['message']['message_success'] = ["data successfully found"]; + } else { + $data['status'] = 'error'; + $data['penawaran'] = null; + $data['penawrandetails'] = null; + $data['message']['message_data'] = ["data not found"]; + } } else { - $data['status'] = 'error'; - $data['penawaran'] = null; - $data['penawrandetails'] = null; - $data['message']['message_data'] = array("data not found"); + $data['status'] = 'error'; + $data['message']['message_ajax'] = ["no ajax request"]; } - } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = array("no ajax request"); + + return response()->json($data); } - return response()->json($data); - } + public function otorisasiPenawaranKJPP(Request $request, $id) + : JsonResponse { + $data = []; + $dataDetailPenawaranLog = []; + if (request()->ajax()) { + // cek masa aktif penawaran + $detailpenawaran = PenawaranDetailTender::find($id); + $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id); + $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); + // cek masa aktif penawaran + if ($checkActiveDateRange) { + DB::beginTransaction(); + try { + // update status KJPP yg tidak terpilih menjadi 2 -> kalah + // update status Penawaran menjadi SPK + // update status Permohonan menjadi SPK + // insert detail_permohonan_log - public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse - { - $data = array(); - $dataDetailPenawaranLog=[]; - if (request()->ajax()) { + PenawaranDetailTender::where('status', 1) + ->where('penawaran_id', $request->penawaran_id) + ->whereNotIn('id', [$id]) + ->update([ + 'status' => 2, + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); - // cek masa aktif penawaran - $detailpenawaran = PenawaranDetailTender::find($id); - $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id); - $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); - // cek masa aktif penawaran - if($checkActiveDateRange) - { - DB::beginTransaction(); - try { - - // update status KJPP yg tidak terpilih menjadi 2 -> kalah - // update status Penawaran menjadi SPK - // update status Permohonan menjadi SPK - // insert detail_permohonan_log - - PenawaranDetailTender::where('status', 1) - ->where('penawaran_id', $request->penawaran_id) - ->whereNotIn('id', [$id]) - ->update(['status' => 2, - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - PenawaranTender::where('id', $request->penawaran_id) - ->update(['status'=>'spk', - 'nama_kjpp_sebelumnya'=>$request->kjppName, - 'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran, - 'tanggal_penilaian_sebelumnya'=>now(), - 'authorized_status'=>1, - 'authorized_at'=>now(), - 'authorized_by'=>Auth::id(), - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - Permohonan::where('nomor_registrasi',$request->noReg) - ->update(['status'=>'spk', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - // log - $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); - if(sizeof($detailPenawaran)>0) - { - - foreach ($detailPenawaran as $model) { - array_push($dataDetailPenawaranLog, [ - 'detail_penawaran_id' =>$model->id, - 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, - 'penawaran_id' =>$model->penawaran_id, - 'biaya_penawaran' =>$model->biaya_penawaran, - 'attachment' =>$model->attachment, - 'dokumen_persetujuan' =>$model->dokumen_persetujuan, - 'status' =>$model->status, - 'authorized_status' =>$model->authorized_status, - 'authorized_at' =>$model->authorized_at, - 'authorized_at' =>$model->authorized_at, - 'created_at' =>$model->created_at, - 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, - 'created_by' =>$model->created_by, - 'updated_by' =>$model->updated_by, - 'deleted_by' =>$model->deleted_by + PenawaranTender::where('id', $request->penawaran_id)->update([ + 'status' => 'spk', + 'nama_kjpp_sebelumnya' => $request->kjppName, + 'biaya_kjpp_sebelumnya' => $request->biaya_penawaran, + 'tanggal_penilaian_sebelumnya' => now(), + 'authorized_status' => 1, + 'authorized_at' => now(), + 'authorized_by' => Auth::id(), + 'updated_by' => Auth::id(), + 'updated_at' => now(), ]); + Permohonan::where('nomor_registrasi', $request->noReg)->update([ + 'status' => 'persetujuan-penawaran', + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + + // log + $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); + if (sizeof($detailPenawaran) > 0) { + foreach ($detailPenawaran as $model) { + array_push($dataDetailPenawaranLog, [ + 'detail_penawaran_id' => $model->id, + 'kjpp_rekanan_id' => $model->kjpp_rekanan_id, + 'penawaran_id' => $model->penawaran_id, + 'biaya_penawaran' => $model->biaya_penawaran, + 'attachment' => $model->attachment, + 'dokumen_persetujuan' => $model->dokumen_persetujuan, + 'status' => $model->status, + 'authorized_status' => $model->authorized_status, + 'authorized_at' => $model->authorized_at, + 'authorized_at' => $model->authorized_at, + 'created_at' => $model->created_at, + 'updated_at' => $model->updated_at, + 'deleted_at' => $model->deleted_at, + 'created_by' => $model->created_by, + 'updated_by' => $model->updated_by, + 'deleted_by' => $model->deleted_by, + ]); + } + + PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); } + // log - PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); + DB::commit(); + $data['status'] = 'success'; + $data['message']['message_success'] = ['Otorisasi Penawaran KJPP ' . $request->kjppName . ' successfully']; + } catch (Exception $e) { + DB::rollBack(); + $data['status'] = 'error'; + $data['message']['message_error'] = ["Otorisasi Penawaran KJPP failed.."]; } - // log - - DB::commit(); - $data['status'] = 'success'; - $data['message']['message_success'] = array('Otorisasi Penawaran KJPP '.$request->kjppName.' successfully'); - } catch (Exception $e) { - DB::rollBack(); - $data['status'] = 'error'; - $data['message']['message_error'] = array("Otorisasi Penawaran KJPP failed.."); + } else { + $data['status'] = 'error'; + $data['message'] ['active_date_range'] = ["Penawaran sudah di tutup"]; } + } else { + $data['status'] = 'error'; + $data['message']['message_ajax'] = ["no ajax request"]; } - else - { - $data['status'] = 'error'; - $data['message'] ['active_date_range'] = array("Penawaran sudah di tutup"); - } - - } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = array("no ajax request"); + return response()->json($data); } - return response()->json($data); - } - public function show($id) - { - $prosespenawaran = PenawaranTender::find($id); - return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran')); + public function show($id) + { + $prosespenawaran = PenawaranTender::find($id); + return view('lpj::otorisasipenawaran.show', compact('id', 'prosespenawaran')); + } } -} From c41e7da05ff19013cbef64a88252013b2dfbf9a7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:48:36 +0700 Subject: [PATCH 10/26] Tambah relasi detail pada model PenawaranTender Menambahkan fungsi relasi "detail" untuk menghubungkan model PenawaranTender dengan PenawaranDetailTender berdasarkan kondisi status 1. Relasi ini menggunakan belongTo untuk mendapatkan detail penawaran yang berstatus aktif. --- app/Models/PenawaranTender.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index b69c92c..16b8532 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -24,6 +24,10 @@ class PenawaranTender extends Model { return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id', 'id')->where('status', '=', 1); } + + public function detail(){ + return $this->belongsTo(PenawaranDetailTender::class, 'id', 'penawaran_id')->where('status', 1); + } // andy add public function emailTenderLog(): HasMany From 5fdbe4fc25bb106daca1016954a95daa8ae129a4 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:48:43 +0700 Subject: [PATCH 11/26] Ubah relasi penawaranTender dari hasMany ke belongsTo Mengganti metode `penawaranTender` dalam model `Permohonan` dari `hasMany` menjadi `belongsTo`. Perubahan ini diperlukan untuk mencocokkan struktur relasi database yang benar antara `Permohonan` dan `PenawaranTender` berdasarkan `nomor_registrasi`. --- app/Models/Permohonan.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 0255e63..81b94b7 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -136,7 +136,7 @@ public function penawaranTender() { - return $this->hasMany(PenawaranTender::class, 'nomor_registrasi'); + return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); } public function region() From 666419507fdfb5405f323e5acbfa73af8d387d5c Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 20 Nov 2024 22:48:52 +0700 Subject: [PATCH 12/26] Tambah halaman daftar persetujuan penawaran Buat berkas `index.blade.php` untuk menampilkan daftar persetujuan penawaran dengan tabel yang mendukung pencarian dan ekspor ke Excel. Halaman ini juga mencakup pengelolaan melalui kolom-kolom seperti nomor registrasi, nama debitur, nomor proposal, tanggal proposal, biaya final, SLA resume, SLA final, dan catatan. Menyertakan interaksi seperti pengeditan melalui aksi pada setiap baris tabel. --- .../persetujuan_penawaran/index.blade.php | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 resources/views/persetujuan_penawaran/index.blade.php diff --git a/resources/views/persetujuan_penawaran/index.blade.php b/resources/views/persetujuan_penawaran/index.blade.php new file mode 100644 index 0000000..f55ee5b --- /dev/null +++ b/resources/views/persetujuan_penawaran/index.blade.php @@ -0,0 +1,154 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('persetujuan-penawaran') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Persetujuan Penawaran +

+
+
+ +
+ +
+
+ + +
+
+ + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Nama Debitur + + + Nomor Proposal + + + Tanggal Proposal + + + Biaya Final + + + SLA Resume + + + SLA Final + + + Catatan + + Action
+
+
+
+ @endsection + + @push('scripts') + + @endpush From d2c24362123b82eecc726be2f9f2d400429f3200 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 21 Nov 2024 11:18:43 +0700 Subject: [PATCH 13/26] Tambah relasi persetujuan ke model PenawaranTender Menambahkan fungsi `persetujuan` untuk menghubungkan model `PenawaranTender` dengan model `PersetujuanPenawaran` menggunakan relasi `belongsTo`. Hal ini memungkinkan pengambilan data persetujuan terkait penawaran tender. --- app/Http/Controllers/PersetujuanPenawaranController.php | 2 +- app/Models/PenawaranTender.php | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php index 73f7429..f33d626 100644 --- a/app/Http/Controllers/PersetujuanPenawaranController.php +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -125,7 +125,7 @@ $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['debiture','penawaranTender.detail'])->get(); + $data = $query->with(['debiture','penawaranTender.detail','penawaranTender.persetujuan'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index 16b8532..b27e251 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -55,4 +55,8 @@ class PenawaranTender extends Model { return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id'); } + + public function persetujuan(){ + return $this->belongsTo(PersetujuanPenawaran::class, 'penawaran_id', 'id'); + } } From 9c0fb1383708e11368b65289604d3fd3640d1eff Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 21 Nov 2024 11:19:21 +0700 Subject: [PATCH 14/26] Tambah Kolom Dokumen Persetujuan dan Proses Data Menambahkan kolom baru "Dokumen Persetujuan" pada tampilan tabel persetujuan penawaran untuk dapat mengunduh dokumen terkait. Juga menambahkan fungsi JavaScript "prosesData" yang menggunakan Swal untuk konfirmasi persetujuan atau pengembalian data penawaran untuk dikaji ulang. Fungsi render untuk beberapa kolom diperbarui untuk menampilkan data dengan format yang lebih sesuai. --- .../persetujuan_penawaran/index.blade.php | 83 ++++++++++++++++++- 1 file changed, 79 insertions(+), 4 deletions(-) diff --git a/resources/views/persetujuan_penawaran/index.blade.php b/resources/views/persetujuan_penawaran/index.blade.php index f55ee5b..ae3ec2c 100644 --- a/resources/views/persetujuan_penawaran/index.blade.php +++ b/resources/views/persetujuan_penawaran/index.blade.php @@ -49,6 +49,10 @@ Tanggal Proposal + + Dokumen Persetujuan + + Biaya Final @@ -75,6 +79,43 @@ @endsection @push('scripts') + + @endpush \ No newline at end of file diff --git a/resources/views/prosespenawaran/edit.blade.php b/resources/views/prosespenawaran/edit.blade.php index 124e9aa..ef58152 100644 --- a/resources/views/prosespenawaran/edit.blade.php +++ b/resources/views/prosespenawaran/edit.blade.php @@ -65,6 +65,9 @@

Data KJPP

+
diff --git a/resources/views/prosespenawaran/editulang.blade.php b/resources/views/prosespenawaran/editulang.blade.php index e3b25b8..350239d 100644 --- a/resources/views/prosespenawaran/editulang.blade.php +++ b/resources/views/prosespenawaran/editulang.blade.php @@ -128,6 +128,9 @@

Data KJPP

+
diff --git a/resources/views/prosespenawaran/js/editextjs.blade.php b/resources/views/prosespenawaran/js/editextjs.blade.php index 05d583f..64b20a8 100644 --- a/resources/views/prosespenawaran/js/editextjs.blade.php +++ b/resources/views/prosespenawaran/js/editextjs.blade.php @@ -34,6 +34,7 @@ } function updateData(id, kjpp_id, kjppName){ + // id => detail_penawaran.id removeErrorCssMsg(); let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val(); let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val(); @@ -92,6 +93,7 @@ } function deleteData(data, kjppName) { + // data => detail_penawaran.id Swal.fire({ title: 'Are you sure?', text: "You won't be able to revert KJPP "+kjppName+"!", @@ -126,7 +128,7 @@ } else { - Swal.fire('Error!', response.message.message_error_try_catch[0], 'error'); + Swal.fire('Error!', response.message.message_error[0], 'error'); } diff --git a/resources/views/prosespenawaran/js/editjs.blade.php b/resources/views/prosespenawaran/js/editjs.blade.php index 8adaa2f..de12089 100644 --- a/resources/views/prosespenawaran/js/editjs.blade.php +++ b/resources/views/prosespenawaran/js/editjs.blade.php @@ -66,6 +66,7 @@ function setTablesKJPP1(datas) { + // value.id => detail_penawaran.id let i=1; $.each(datas, function(key, value){ var kjppName = value.kjpp_code+' - '+value.kjpp_name; @@ -288,6 +289,65 @@ }); } + }); + + // update status + $("#{{$route[1]}}_toProsesPenawaran").click(function(e) { + e.preventDefault(); + + Swal.fire({ + title: ' ', + text: "Yakin akan Penawaran ulang?", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes' + }).then((result) => { + if (result.isConfirmed) + { + //define variable + // $id ==> penawaran.id + let token = "{{ csrf_token() }}"; + let noReg = $("#textReg").text(); + let useURL = "{{ route('otorisasitender.penawaran.penawaranulang',$id) }}"; + + var input_data = new Object(); + input_data._token = token; + input_data.id = "{{ $id }}"; + input_data.noReg =noReg; + // alert('url = ' + useURL); + $.ajax({ + url: useURL, + type: "PUT", + cache: false, + data: input_data, + dataType: "json", + success: function(response) { + console.log(response); + if('success' == response.status) + { + swal.fire('Sukses Penawaran ulang!', response.message.message_success[0], 'success').then(() => { + var url = "{{ route('tender.prosespenawaran.index') }}"; + $(location).attr('href',url); + }); + } + else + { + Swal.fire('Error!', response.message.message_error[0], 'error'); + } + + }, + error: function(response, textStatus, errorThrown) { + // var errors = response.responseJSON.errors; + // console.log(errors); + console.log(response); + + } + }); + } + }) + }); @endpush \ No newline at end of file diff --git a/resources/views/prosespenawaran/js/editulangjs.blade.php b/resources/views/prosespenawaran/js/editulangjs.blade.php index 53de74b..7e2a705 100644 --- a/resources/views/prosespenawaran/js/editulangjs.blade.php +++ b/resources/views/prosespenawaran/js/editulangjs.blade.php @@ -147,5 +147,63 @@ $('#{{$route[1]}}_kjpps1').append(new Option(stringVal, value.id)); }); } + + // update status + $("#{{$route[1]}}_toPenawaranUlang").click(function(e) { + e.preventDefault(); + + Swal.fire({ + title: ' ', + text: "Yakin akan Penawaran ulang?", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes' + }).then((result) => { + if (result.isConfirmed) + { + //define variable + // $id ==> penawaran.id + let token = "{{ csrf_token() }}"; + let noReg = $("#textReg").text(); + let useURL = "{{ route('otorisasitender.penawaran.penawaranulang',$id) }}"; + + var input_data = new Object(); + input_data._token = token; + input_data.id = "{{ $id }}"; + input_data.noReg =noReg; + // alert('url = ' + useURL); + $.ajax({ + url: useURL, + type: "PUT", + cache: false, + data: input_data, + dataType: "json", + success: function(response) { + console.log(response); + if('success' == response.status) + { + swal.fire('Sukses Penawaran ulang!', response.message.message_success[0], 'success').then(() => { + var url = "{{ route('tender.prosespenawaran.index') }}"; + $(location).attr('href',url); + }); + } + else + { + Swal.fire('Error!', response.message.message_error[0], 'error'); + } + + }, + error: function(response, textStatus, errorThrown) { + // var errors = response.responseJSON.errors; + // console.log(errors); + console.log(response); + + } + }); + } + }) + }); @endpush diff --git a/resources/views/spk/documentSPK.blade.php b/resources/views/spk/documentSPK.blade.php index 0f9f78a..af84a07 100644 --- a/resources/views/spk/documentSPK.blade.php +++ b/resources/views/spk/documentSPK.blade.php @@ -9,26 +9,42 @@ @foreach($cssFiles as $file) @endforeach - +
- +
- Logo + + Logo -

PT BANK ARTHA GRAHA INTERNASIONAL

-

- Sub Direktorat Appraisal -

-

- Jl. Kwitang Raya No. 24-26, Jakarta – 10420, Indonesia -

-

- Telp. (021) 3903040 -

+   +
+

PT BANK ARTHA GRAHA INTERNASIONAL

+

+ Sub Direktorat Appraisal +

+

+ Jl. Kwitang Raya No. 24-26, Jakarta – 10420, Indonesia +

+

+ Telp. (021) 3903040 +

@@ -50,7 +66,7 @@

Perihal: Penunjukan sebagai Penyedia Jasa Penilaian Agunan


- Berdasarkan surat penawaran Saudara [No proposal penawaran sesuai data pemeriksaan persetujuan penawaran] tanggal [Tgl proposal penawaran sesuai data pemeriksaan persetujuan penawaran] atas nama {{ $data->debiture->name }}, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini. + Berdasarkan surat penawaran Saudara {{ $penawaran->detail_penawaran_no_proposal }} tanggal {{ $penawaran->detail_penawaran_tgl_proposal }} atas nama {{ $data->debiture->name }}, dengan ini PT. Bank Artha Graha Internasional.Tbk., menunjuk Saudara untuk melakukan penilaian atas agunan sebagaimana rincian dibawah ini.


Rincian Penilaian

@@ -144,48 +160,28 @@


- - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +
- PT Bank Artha Graha Internasional.
Sub Direktorat Appraisal
- {{ $penawaran->kjpp_name }} -
-
-
-
-
-
-
-
-
-
-
- BTS -
- {{ $data->user->name }}
- {{ $data->user->getRoleNames()[0] }} -
(……………………………………..)
PT Bank Artha Graha Internasional.
Sub Direktorat Appraisal
{{ $penawaran->kjpp_name }}


+
+ Meterai 10.000 +
+
+ {{ $data->user->name }}
+ {{ $data->user->getRoleNames()[0] }} +
(……………………………………..)
diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php index 171d57a..932bb44 100644 --- a/resources/views/spk/edit.blade.php +++ b/resources/views/spk/edit.blade.php @@ -10,6 +10,20 @@ @endphp @section('content') +
@@ -27,12 +41,16 @@
diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index 1f6bb0c..88f4df1 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -36,18 +36,38 @@ - Kode Penawaran + Nomor Penawaran - + + Tanggal Permohonan + + + + User Pemohon + + + + Cabang Pemohon + + + + Debitur + + + Tanggal Penawaran - + Tujuan Penilaian - + + Tujuan Penilaian KJPP + + + KJPP Data @@ -84,15 +104,6 @@ var url = "{{ url('/') }}"+url1; $(location).attr('href',url); } - - function formatTanggalIndonesia(dateString) { - const date = new Date(dateString); - const day = date.getDate().toString().padStart(2, '0'); - const monthNames = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember']; - const month = monthNames[date.getMonth()]; - const year = date.getFullYear(); - return `${day} ${month} ${year}`; - }