diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php new file mode 100644 index 0000000..5978e19 --- /dev/null +++ b/app/Http/Controllers/PembayaranController.php @@ -0,0 +1,150 @@ +user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } + + + /* + // Tentukan status berdasarkan otorisator + $status = match ($otorisator) { + 'Pelaporan' => 'proses-laporan', + 'Pembayaran' => 'proses', + 'Pembatalan' => 'batal', + 'SLA' => 'freeze', + default => '', + }; + */ + + $query = Permohonan::query()->whereIn('status_bayar', ['sudah_bayar']); + /* + // Pencarian berdasarkan parameter search + 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->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + */ + + // Filter berdasarkan region user yang login + // $query->whereHas('region.teams.teamsUsers', function ($q) { + // $q->where('user_id', Auth::id()); + // }); + + + // Sorting berdasarkan sortField dan sortOrder + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Hitung total records + $totalRecords = $query->count(); + + // Pagination (default page size 10) + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; + + $query->skip($offset)->take($size); + } + + // Filtered records + $filteredRecords = $query->count(); + + // Ambil data dengan relasi + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + + + // Hitung jumlah halaman + $pageCount = ceil($totalRecords / $size); + + // Ambil current page + $currentPage = max(1, $request->get('page', 1)); + + // Return JSON response + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + + } + + public function update(Request $request, $id) + : JsonResponse { + // init + $data = []; + $dataku = []; + $tindakan = null; + if (request()->ajax()) { + + try { + + $dataku = [ + 'approve_bayar_by' => Auth::id(), + 'approve_bayar_at' => now(), + ]; + + if ($request->keterangan) { + $dataku['approve_keterangan_bayar'] = $request->keterangan; + } + + $data['dataku'] = $dataku; + + $modal = Permohonan::find($id); + $modal->update($dataku); + // + $data['status'] = 'success'; + $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] = ['Otorisasi gagal di lakukan.']; + } + + } + return response()->json($data); + } +} \ No newline at end of file diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index f8d57da..d47b68e 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -40,7 +40,11 @@ 'registrasi_at', 'jenis_penilaian_id', 'region_id', - 'sla' + 'sla', + // andy add + 'approve_keterangan_bayar', + 'approve_bayar_by', + 'approve_bayar_at', ]; protected static function boot() diff --git a/database/migrations/2024_10_01_095350_update_permohonan_table.php b/database/migrations/2024_10_01_095350_update_permohonan_table.php index 98794df..2bc1272 100644 --- a/database/migrations/2024_10_01_095350_update_permohonan_table.php +++ b/database/migrations/2024_10_01_095350_update_permohonan_table.php @@ -26,7 +26,11 @@ return new class extends Migration public function down(): void { Schema::table('permohonan', function (Blueprint $table) { - + $table->dropColumn('registrasi_catatan'); + $table->dropColumn('registrasi_by'); + $table->dropColumn('registrasi_at'); + $table->dropColumn('jenis_penilaian_id'); + $table->dropColumn('region_id'); }); } }; diff --git a/database/migrations/2024_12_23_041954_update_permohonan_table.php b/database/migrations/2024_12_23_041954_update_permohonan_table.php new file mode 100644 index 0000000..b8166f4 --- /dev/null +++ b/database/migrations/2024_12_23_041954_update_permohonan_table.php @@ -0,0 +1,32 @@ +text('approve_keterangan_bayar')->nullable()->after('status_bayar')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + $table->unsignedBigInteger('approve_bayar_by')->nullable()->after('approve_keterangan_bayar')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + $table->timestamp('approve_bayar_at')->nullable()->after('approve_bayar_by')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn('approve_keterangan_bayar'); + $table->dropColumn('approve_bayar_by'); + $table->dropColumn('approve_bayar_at'); + }); + } +}; diff --git a/module.json b/module.json index bf39dc9..bc0647f 100644 --- a/module.json +++ b/module.json @@ -151,6 +151,18 @@ "admin" ] }, + { + "title": "Pembayaran", + "path": "pembayaran", + "icon": "ki-filled ki-file-added text-lg text-success", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, { "title": "Data Debitur", "path": "debitur", diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php new file mode 100644 index 0000000..506560a --- /dev/null +++ b/resources/views/pembayaran/index.blade.php @@ -0,0 +1,265 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('pembayaran') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Pembayaran +

+
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status Approve + + + Status Bayar + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + +@endpush + diff --git a/routes/breadcrumbs_registrasi.php b/routes/breadcrumbs_registrasi.php index df7fc01..e2523e7 100644 --- a/routes/breadcrumbs_registrasi.php +++ b/routes/breadcrumbs_registrasi.php @@ -103,3 +103,9 @@ Breadcrumbs::for('registrasifinal.edit', function (BreadcrumbTrail $trail) { $trail->push('Tambah Registrasi Final'); }); // registrasi final + +// pembayaran +Breadcrumbs::for('pembayaran', function (BreadcrumbTrail $trail) { + $trail->push('Pembayaran', route('pembayaran.index')); +}); +// pembayaran diff --git a/routes/registrasi.php b/routes/registrasi.php index 5593cbd..550a920 100644 --- a/routes/registrasi.php +++ b/routes/registrasi.php @@ -7,6 +7,7 @@ use Modules\Lpj\Http\Controllers\ProsesPenawaranController; use Modules\Lpj\Http\Controllers\RegistrasiFinalController; use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController; use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController; +use Modules\Lpj\Http\Controllers\PembayaranController; Route::middleware(['auth'])->group(function () { @@ -124,4 +125,11 @@ Route::middleware(['auth'])->group(function () { Route::get('/registrasifinal/{registrasifinal}/edit', 'edit')->name('registrasifinal.edit'); Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update'); }); + + Route::controller(PembayaranController::class)->group(function () { + Route::get('/pembayaran', 'index')->name('pembayaran.index'); + Route::get('/pembayaran/datatables', 'dataForDatatables')->name('pembayaran.datatables'); + + Route::put('/pembayaran/{pembayaran}', 'update')->name('pembayaran.update'); + }); });