Revisi list admin refund

This commit is contained in:
Muhammad Raihan Surya 2023-11-10 15:20:26 +07:00
parent fbd0e5b006
commit 603d91c845
2 changed files with 87 additions and 57 deletions

View File

@ -134,21 +134,16 @@ class AdminRefundController extends Controller
public function listRefund(Request $request) public function listRefund(Request $request)
{ {
$subQuery = Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id') try {
->join('users as b', 'transactions.pembeli', '=', 'b.email') $subQuery = Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id')
->join('users as s', 'transactions.penjual', '=', 's.email') ->join('users as b', 'transactions.pembeli', '=', 'b.email')
->latest() ->join('users as s', 'transactions.penjual', '=', 's.email')
->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'); ->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'])) { if ($request->has('search') && !empty($request->search['value'])) {
$searchRefund = $request->search['value']; $searchRefund = $request->search['value'];
if (!is_numeric($searchRefund)) { 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{
$subQuery->where(function ($a) use ($searchRefund) { $subQuery->where(function ($a) use ($searchRefund) {
$a->whereRaw('LOWER(b.nama_depan) LIKE ?', ['%' . strtolower($searchRefund) . '%']) $a->whereRaw('LOWER(b.nama_depan) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(b.nama_belakang) 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(transactions.nama_barang) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(refunds.status) LIKE ?', ['%' . strtolower($searchRefund) . '%']); ->orWhereRaw('LOWER(refunds.status) LIKE ?', ['%' . strtolower($searchRefund) . '%']);
}); });
// } } else {
$subQuery->where(function ($a) use ($searchRefund) {
}else { $a->whereDay('refunds.created_at', '=', $searchRefund)
$subQuery->where(function ($a) use ($searchRefund) { ->orWhereMonth('refunds.created_at', '=', $searchRefund)
$a->whereDay('refunds.created_at', '=', $searchRefund) ->orWhereYear('refunds.created_at', '=', $searchRefund)
->orWhereMonth('refunds.created_at', '=', $searchRefund) ->orWhereDay('refunds.due_date', '=', $searchRefund)
->orWhereYear('refunds.created_at', '=', $searchRefund) ->orWhereMonth('refunds.due_date', '=', $searchRefund)
->orWhereDay('refunds.due_date', '=', $searchRefund) ->orWhereYear('refunds.due_date', '=', $searchRefund)
->orWhereMonth('refunds.due_date', '=', $searchRefund) ->orWhere('refunds.total', '=', $searchRefund);
->orWhereYear('refunds.due_date', '=', $searchRefund) });
->orWhere('refunds.total','=',$searchRefund); }
});
} }
}
$queryRefund = Refund::from(DB::raw("({$subQuery->toSql()}) as tmp")) $queryRefund = Refund::from(DB::raw("({$subQuery->toSql()}) as tmp"))
->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters ->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters
->select('*') ->select('*')
->get(); ->get();
if ($request->ajax()) { if ($request->ajax()) {
return DataTables::of($queryRefund) return DataTables::of($queryRefund)
->addIndexColumn() ->addIndexColumn()
->addColumn('action', function ($row) { ->addColumn('action', function ($row) {
$url = route('admin-refund.show', ['id' => $row->id]); $url = route('admin-refund.show', ['id' => $row->id]);
$html_code = $html_code =
' '
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle" <button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@ -193,15 +186,20 @@ class AdminRefundController extends Controller
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item" <li><a class="dropdown-item"
href="' . href="' .
$url . $url .
'">Detail</a> '">Detail</a>
</li> </li>
</ul> </ul>
</div>'; </div>';
return $html_code; return $html_code;
}) })
->rawColumns(['action']) ->rawColumns(['action'])
->make(true); ->make(true);
}
} catch (Throwable $e) {
Log::error($e->getMessage());
return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
} }
} }
} }

View File

@ -44,7 +44,16 @@
let listRefund = $('#table-refund').DataTable({ let listRefund = $('#table-refund').DataTable({
processing: true, processing: true,
serverSide: 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: [{ columns: [{
data: 'DT_RowIndex', data: 'DT_RowIndex',
name: 'DT_RowIndex', name: 'DT_RowIndex',
@ -66,18 +75,32 @@
{ {
data: 'total', data: 'total',
name: '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', data: 'created_at',
name: 'created_at', name: 'created_at',
render: function(data, type, row) { render: function(data, type, row) {
if (type == 'display') { if (type === 'display') {
var date = new Date(data); var date = new Date(data);
var formattedDate = date.toLocaleDateString('id-ID', { var day = date.getDate();
year: '2-digit', var month = date.toLocaleString('en-US', {
month: '2-digit', month: 'short'
day: '2-digit'
}); });
var year = date.getFullYear();
var formattedDate = day + ' ' + month + ' ' + year;
return formattedDate; return formattedDate;
} }
return data; return data;
@ -87,13 +110,15 @@
data: 'due_date', data: 'due_date',
name: 'due_date', name: 'due_date',
render: function(data, type, row) { render: function(data, type, row) {
if (type == 'display') { if (type === 'display') {
var date = new Date(data); var date = new Date(data);
var formattedDate = date.toLocaleDateString('id-ID', { var day = date.getDate();
year: '2-digit', var month = date.toLocaleString('en-US', {
month: '2-digit', month: 'short'
day: '2-digit'
}); });
var year = date.getFullYear();
var formattedDate = day + ' ' + month + ' ' + year;
return formattedDate; return formattedDate;
} }
return data; return data;
@ -120,8 +145,15 @@
searchable: false 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, '');
}
});
</script> </script>
@extends('admin.transaction.modal-keterangan-status') @extends('admin.transaction.modal-keterangan-status')
@endsection @endsection