diff --git a/app/Http/Controllers/Admin/AdminRefundController.php b/app/Http/Controllers/Admin/AdminRefundController.php index 3538705..5020163 100644 --- a/app/Http/Controllers/Admin/AdminRefundController.php +++ b/app/Http/Controllers/Admin/AdminRefundController.php @@ -134,21 +134,16 @@ class AdminRefundController extends Controller public function listRefund(Request $request) { - $subQuery = Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id') - ->join('users as b', 'transactions.pembeli', '=', 'b.email') - ->join('users as s', 'transactions.penjual', '=', 's.email') - ->latest() - ->select('refunds.id as id', DB::raw("CONCAT(b.nama_depan,' ', b.nama_belakang) as pembeli"), DB::raw("CONCAT(s.nama_depan,' ', s.nama_belakang) as penjual"), 'transactions.nama_barang as nama_barang', 'refunds.total as total', 'refunds.created_at', 'refunds.due_date', 'refunds.status'); + try { + $subQuery = Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id') + ->join('users as b', 'transactions.pembeli', '=', 'b.email') + ->join('users as s', 'transactions.penjual', '=', 's.email') + ->latest() + ->select('refunds.id as id', DB::raw("CONCAT(b.nama_depan,' ', b.nama_belakang) as pembeli"), DB::raw("CONCAT(s.nama_depan,' ', s.nama_belakang) as penjual"), 'transactions.nama_barang as nama_barang', 'refunds.total as total', 'refunds.created_at', 'refunds.due_date', 'refunds.status'); - if ($request->has('search') && !empty($request->search['value'])) { - $searchRefund = $request->search['value']; - if (!is_numeric($searchRefund)) { - // if(strtotime($searchRefund) != false){ - // $subQuery->where(function ($a) use ($searchRefund) { - // $a->whereDate('refunds.created_at','=',Carbon::createFromFormat('d/m/y', ucfirst(strtolower($searchRefund)))->format('Y-m-d')) - // ->orWhereDate('refunds.due_date','=',Carbon::createFromFormat('d/m/y', ucfirst(strtolower($searchRefund)))->format('Y-m-d')); - // }); - // }else{ + if ($request->has('search') && !empty($request->search['value'])) { + $searchRefund = $request->search['value']; + if (!is_numeric($searchRefund)) { $subQuery->where(function ($a) use ($searchRefund) { $a->whereRaw('LOWER(b.nama_depan) LIKE ?', ['%' . strtolower($searchRefund) . '%']) ->orWhereRaw('LOWER(b.nama_belakang) LIKE ?', ['%' . strtolower($searchRefund) . '%']) @@ -157,33 +152,31 @@ class AdminRefundController extends Controller ->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?', ['%' . strtolower($searchRefund) . '%']) ->orWhereRaw('LOWER(refunds.status) LIKE ?', ['%' . strtolower($searchRefund) . '%']); }); - // } - - }else { - $subQuery->where(function ($a) use ($searchRefund) { - $a->whereDay('refunds.created_at', '=', $searchRefund) - ->orWhereMonth('refunds.created_at', '=', $searchRefund) - ->orWhereYear('refunds.created_at', '=', $searchRefund) - ->orWhereDay('refunds.due_date', '=', $searchRefund) - ->orWhereMonth('refunds.due_date', '=', $searchRefund) - ->orWhereYear('refunds.due_date', '=', $searchRefund) - ->orWhere('refunds.total','=',$searchRefund); - }); + } else { + $subQuery->where(function ($a) use ($searchRefund) { + $a->whereDay('refunds.created_at', '=', $searchRefund) + ->orWhereMonth('refunds.created_at', '=', $searchRefund) + ->orWhereYear('refunds.created_at', '=', $searchRefund) + ->orWhereDay('refunds.due_date', '=', $searchRefund) + ->orWhereMonth('refunds.due_date', '=', $searchRefund) + ->orWhereYear('refunds.due_date', '=', $searchRefund) + ->orWhere('refunds.total', '=', $searchRefund); + }); + } } - } - $queryRefund = Refund::from(DB::raw("({$subQuery->toSql()}) as tmp")) - ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters - ->select('*') - ->get(); + $queryRefund = Refund::from(DB::raw("({$subQuery->toSql()}) as tmp")) + ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters + ->select('*') + ->get(); - if ($request->ajax()) { - return DataTables::of($queryRefund) - ->addIndexColumn() - ->addColumn('action', function ($row) { - $url = route('admin-refund.show', ['id' => $row->id]); - $html_code = - ' + if ($request->ajax()) { + return DataTables::of($queryRefund) + ->addIndexColumn() + ->addColumn('action', function ($row) { + $url = route('admin-refund.show', ['id' => $row->id]); + $html_code = + '
'; - return $html_code; - }) - ->rawColumns(['action']) - ->make(true); + return $html_code; + }) + ->rawColumns(['action']) + ->make(true); + } + } catch (Throwable $e) { + Log::error($e->getMessage()); + + return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); } } } diff --git a/resources/views/Admin/refund/index.blade.php b/resources/views/Admin/refund/index.blade.php index 0232005..8f957a0 100644 --- a/resources/views/Admin/refund/index.blade.php +++ b/resources/views/Admin/refund/index.blade.php @@ -44,7 +44,16 @@ let listRefund = $('#table-refund').DataTable({ processing: true, serverSide: true, - ajax: `{{ route('admin-refund.list-refund') }}`, + // ajax: "{{ route('admin-refund.list-refund') }}", + ajax: { + url: `{{ route('admin-refund.list-refund') }}`, + data: function(d) { + // Validasi dan pembersihan input sebelum dikirim + d.search.value = cleanAndValidateInput(d.search.value); + // Tambahan data lain yang akan dikirim + // ... + } + }, columns: [{ data: 'DT_RowIndex', name: 'DT_RowIndex', @@ -66,18 +75,32 @@ { data: 'total', name: 'total', + render: function(data, type, row) { + // Memastikan bahwa ini adalah tampilan (bukan sorting atau filtering) + if (type === 'display') { + // Mengubah nilai 'total' menjadi format mata uang Indonesia + return new Intl.NumberFormat('id-ID', { + style: 'currency', + currency: 'IDR' + }).format(data); + } + // Untuk tipe yang lain, kembalikan nilai asli + return data; + }, }, { data: 'created_at', name: 'created_at', render: function(data, type, row) { - if (type == 'display') { + if (type === 'display') { var date = new Date(data); - var formattedDate = date.toLocaleDateString('id-ID', { - year: '2-digit', - month: '2-digit', - day: '2-digit' + var day = date.getDate(); + var month = date.toLocaleString('en-US', { + month: 'short' }); + var year = date.getFullYear(); + + var formattedDate = day + ' ' + month + ' ' + year; return formattedDate; } return data; @@ -87,13 +110,15 @@ data: 'due_date', name: 'due_date', render: function(data, type, row) { - if (type == 'display') { + if (type === 'display') { var date = new Date(data); - var formattedDate = date.toLocaleDateString('id-ID', { - year: '2-digit', - month: '2-digit', - day: '2-digit' + var day = date.getDate(); + var month = date.toLocaleString('en-US', { + month: 'short' }); + var year = date.getFullYear(); + + var formattedDate = day + ' ' + month + ' ' + year; return formattedDate; } return data; @@ -120,8 +145,15 @@ searchable: false } ], - }) - }) + }); + + // Fungsi untuk membersihkan dan validasi input + function cleanAndValidateInput(input) { + // Lakukan pembersihan atau validasi sesuai kebutuhan + // Contoh: Mengganti karakter yang tidak diizinkan dengan spasi + return input.replace(/[^a-zA-Z0-9\s]/g, ''); + } + }); @extends('admin.transaction.modal-keterangan-status') @endsection