From 3931600346c6b52c69df446d0e81a83856d617d5 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 5 Jan 2025 19:06:10 +0700 Subject: [PATCH] fix(transaksi): mengubah datatable client side menjadi server side --- .../Admin/Manage/TransactionController.php | 49 ++++++++-- app/Models/Transaction.php | 2 +- .../js/datatable/custom-table/transaction.js | 27 ++++++ .../admin/manage/transaction/index.blade.php | 90 ++----------------- .../views/partials/admin/_actions.blade.php | 32 +++++++ 5 files changed, 112 insertions(+), 88 deletions(-) create mode 100644 public/assets/admin/js/datatable/custom-table/transaction.js create mode 100644 resources/views/partials/admin/_actions.blade.php diff --git a/app/Http/Controllers/Admin/Manage/TransactionController.php b/app/Http/Controllers/Admin/Manage/TransactionController.php index e2f6120..d68161a 100644 --- a/app/Http/Controllers/Admin/Manage/TransactionController.php +++ b/app/Http/Controllers/Admin/Manage/TransactionController.php @@ -13,24 +13,61 @@ use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Storage; +use Yajra\DataTables\Facades\DataTables; class TransactionController extends Controller { use DeleteAttachment, UploadAttachment; - public function index(): View + public function index(Request $request): View|JsonResponse { - return view('pages.admin.manage.transaction.index', [ - 'pageTitle' => 'Transaksi', - 'transactions' => Transaction::with(['user', 'user.biography', 'cashier', 'cashier.biography', 'customer', 'service', 'barbershop']) + if ($request->ajax()) { + $transactions = Transaction::with(['user', 'user.biography', 'cashier', 'cashier.biography', 'customer', 'service', 'barbershop']) ->barbershop() ->when(auth()->user()->role_id === 5, function ($query) { return $query->where('user_id', auth()->id()); + }); + + return DataTables::eloquent($transactions) + ->addIndexColumn() + ->editColumn('created_at', function ($item) { + return formatDateIndo($item->created_at); }) - ->latest() - ->get(), + ->editColumn('payment_method', function ($item) { + switch ($item->payment_method) { + case '1': + return 'Tunai'; + case '2': + return 'Qris'; + case '2': + return 'Lainnya'; + + default: + return 'Tidak Diketahui'; + } + }) + ->addColumn('image', function ($item) { + if ($item->attachment && $item->attachment->formatted_attachment) { + $imageUrl = Storage::url("transactions/{$item->attachment->formatted_attachment}"); + + return 'Check-in Image'; + } + + return '-'; + }) + ->addColumn('actions', function ($item) { + return view('partials.admin._actions', ['item' => $item]); + }) + ->rawColumns(['payment_method', 'image', 'actions']) + ->make(); + } + + return view('pages.admin.manage.transaction.index', [ + 'pageTitle' => 'Transaksi', ]); } diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index a58668e..861136e 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -30,7 +30,7 @@ class Transaction extends Model public function scopeBarbershop(Builder $query): Builder { - return $query->where('barbershop_id', Auth::user()->barbershop_id); + return $query->where('transactions.barbershop_id', Auth::user()->barbershop_id); } public function scopeToday(Builder $query): Builder diff --git a/public/assets/admin/js/datatable/custom-table/transaction.js b/public/assets/admin/js/datatable/custom-table/transaction.js new file mode 100644 index 0000000..c84a903 --- /dev/null +++ b/public/assets/admin/js/datatable/custom-table/transaction.js @@ -0,0 +1,27 @@ +window.columns = [ + { + data: 'DT_RowIndex', + orderable: false, + searchable: false + }, + { + data: 'cashier.biography.full_name', + }, + { + data: 'user.biography.full_name', + }, + { data: 'customer.name' }, + { data: 'service.name' }, + { data: 'price' }, + { data: 'discount' }, + { data: 'total' }, + { data: 'payment_method' }, + { + data: 'image', + orderable: false, + searchable: false + + }, + { data: 'created_at' }, + { data: 'actions' }, +]; diff --git a/resources/views/pages/admin/manage/transaction/index.blade.php b/resources/views/pages/admin/manage/transaction/index.blade.php index 6e6bc94..0d1890f 100644 --- a/resources/views/pages/admin/manage/transaction/index.blade.php +++ b/resources/views/pages/admin/manage/transaction/index.blade.php @@ -16,7 +16,7 @@
- +
@@ -30,88 +30,10 @@ - @if (in_array(auth()->user()->role_id, [1, 3, 4])) - - @endif + - @foreach ($transactions as $transaction) - - - - - - - - - - - - - @if (in_array(auth()->user()->role_id, [1, 3, 4])) - - @endif - - @endforeach
NoMetode Pembayaran Gambar TanggalAksiAksi
{{ $loop->iteration }}{{ $transaction->cashier->biography->full_name ?? '-deleted-' }}{{ $transaction->user->biography->full_name ?? '-deleted-' }}{{ $transaction->customer->name }}{{ $transaction->service->name }}{{ formatToRupiah($transaction->price) }}{{ formatToRupiah($transaction->discount) }}{{ formatToRupiah($transaction->total) }} - @if ($transaction->payment_method === '1') - Tunai - @elseif($transaction->payment_method === '2') - Qris - @elseif($transaction->payment_method === '3') - Lainnya - @else - Tidak Diketahui - @endif - - @if ($transaction->attachment && $transaction->attachment->formatted_attachment) - attachment->formatted_attachment}") }}"> - attachment->formatted_attachment}") }}" - alt="{{ $transaction->name }}" width="77" height="77"> - - @else - - Default Image - - @endif - {{ formatDateIndo($transaction->created_at) }} -
    -
  • - - - -
  • -
  • - - - -
  • - @if (auth()->user()->role_id === 1) -
  • -
    - @csrf - @method('delete') - - - -
    -
  • - @endif -
-
@@ -200,8 +122,14 @@ let userRole = {!! auth()->user()->role_id !!}; - + + + @endsection diff --git a/resources/views/partials/admin/_actions.blade.php b/resources/views/partials/admin/_actions.blade.php new file mode 100644 index 0000000..1bfb374 --- /dev/null +++ b/resources/views/partials/admin/_actions.blade.php @@ -0,0 +1,32 @@ +@if (in_array(auth()->user()->role_id, [1, 3, 4])) + +
    +
  • + + + +
  • +
  • + + + +
  • + @if (auth()->user()->role_id === 1) +
  • +
    + @csrf + @method('delete') + + + +
    +
  • + @endif +
+ +@endif