diff --git a/app/Http/Controllers/KartuAtmController.php b/app/Http/Controllers/KartuAtmController.php new file mode 100644 index 0000000..3369e76 --- /dev/null +++ b/app/Http/Controllers/KartuAtmController.php @@ -0,0 +1,105 @@ +has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('crdno', 'LIKE', "%$search%") + ->orWhere('accflag', 'LIKE', "%$search%") + ->orWhere('cracc1', 'LIKE', "%$search%") + ->orWhere('cracc2', 'LIKE', "%$search%") + ->orWhere('cracc3', 'LIKE', "%$search%") + ->orWhere('cracc4', 'LIKE', "%$search%") + ->orWhere('cracc5', 'LIKE', "%$search%") + ->orWhere('craccnam1', 'LIKE', "%$search%") + ->orWhere('craccnam2', 'LIKE', "%$search%") + ->orWhere('craccnam3', 'LIKE', "%$search%") + ->orWhere('craccnam4', 'LIKE', "%$search%") + ->orWhere('craccnam5', 'LIKE', "%$search%") + ->orWhere('crsts', 'LIKE', "%$search%") + ->orWhere('cttype', 'LIKE', "%$search%") + ->orWhere('ctdesc', 'LIKE', "%$search%") + ->orWhere('crdate', 'LIKE', "%$search%") + ->orWhere('branch', 'LIKE', "%$search%") + ->orWhere('fee', 'LIKE', "%$search%") + ->orWhere('currency', '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->get(); + + // Calculate the page count + $pageCount = ceil($filteredRecords / ($request->get('size') ?: 1)); + + // Calculate the current page number + $currentPage = $request->get('page') ?: 1; + + $data = $data->map(function ($item) { + $item->fee = $item->biaya->biaya; + return $item; + }); + + // 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, + ]); + } + + } diff --git a/app/Models/Atmcard.php b/app/Models/Atmcard.php index 3f43217..7bcdc04 100644 --- a/app/Models/Atmcard.php +++ b/app/Models/Atmcard.php @@ -14,4 +14,8 @@ class Atmcard extends Model * The attributes that are mass assignable. */ protected $guarded = ['id']; + + public function biaya(){ + return $this->belongsTo(JenisKartu::class,'ctdesc','code'); + } } diff --git a/module.json b/module.json index d8f6836..1de580a 100644 --- a/module.json +++ b/module.json @@ -11,6 +11,17 @@ "files": [], "menu": { "main": [ + { + "title": "Kartu ATM", + "path": "kartu-atm", + "icon": "ki-filled ki-credit-cart text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + }, { "title": "Nasabah", "path": "customer", @@ -32,14 +43,28 @@ ], "master": [ { - "title": "Jenis Kartu", - "path": "jenis-kartu", - "icon": "ki-filled ki-category text-lg", + "title": "Basic Data", + "path": "basicdata", + "icon": "ki-filled ki-category text-lg text-primary", "classes": "", "attributes": [], "permission": "", "roles": [ - "administrator" + "administrator", + "admin" + ], + "sub": [ + { + "title": "Jenis Kartu", + "path": "jenis-kartu", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + } ] }, { diff --git a/resources/views/kartu-atm/index.blade.php b/resources/views/kartu-atm/index.blade.php new file mode 100644 index 0000000..5940a29 --- /dev/null +++ b/resources/views/kartu-atm/index.blade.php @@ -0,0 +1,127 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+

+ Daftar Kartu ATM +

+
+
+ +
+
+
+
+
+ + + + + + + + + + + + +
+ Nomor Kartu + + + Rekening + + + Nama + + + Tipe Kartu + + + Deskripsi + + + Cabang + + + Biaya + +
+
+ +
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 3c1f5fc..c5fec4c 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -77,3 +77,9 @@ $trail->parent('jenis-kartu.index'); $trail->push('Edit Jenis Kartu', route('jenis-kartu.edit', $data->id)); }); + + + Breadcrumbs::for('kartu-atm.index', function (BreadcrumbTrail $trail) { + $trail->parent('home'); + $trail->push('Kartu ATM', route('kartu-atm.index')); + }); diff --git a/routes/web.php b/routes/web.php index 58e3235..f202ef6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Route; use Modules\Webstatement\Http\Controllers\BiayaKartuController; use Modules\Webstatement\Http\Controllers\JenisKartuController; + use Modules\Webstatement\Http\Controllers\KartuAtmController; use Modules\Webstatement\Http\Controllers\MigrasiController; use Modules\Webstatement\Http\Controllers\WebstatementController; use Modules\Webstatement\Http\Controllers\CustomerController; @@ -38,6 +39,11 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('jenis-kartu', JenisKartuController::class); + Route::prefix('kartu-atm')->name('kartu-atm.')->group(function () { + Route::get('datatables', [KartuAtmController::class, 'dataForDatatables'])->name('datatables'); + }); + Route::resource('kartu-atm', KartuAtmController::class)->only('index'); + Route::prefix('emailblast')->group(function () { Route::get('/', [EmailBlastController::class, 'index'])->name('emailblast.index'); Route::get('/create', [EmailBlastController::class, 'create'])->name('emailblast.create');