This commit is contained in:
oktaviaramadani 2023-11-10 13:13:21 +07:00
commit 68860ef77d
6 changed files with 138 additions and 125 deletions

View File

@ -12,6 +12,7 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\TransactionDescription; use App\Models\TransactionDescription;
use Carbon\Carbon;
class AdminRefundController extends Controller class AdminRefundController extends Controller
{ {
@ -54,7 +55,7 @@ class AdminRefundController extends Controller
try { try {
Transaction::where('id', $refund->transaction_id)->update([ Transaction::where('id', $refund->transaction_id)->update([
'status_transaksi' => 'refund', 'status_transaksi' => 'refund',
'status_pembayaran' => 'refund' 'status_pembayaran' => 'refund',
]); ]);
Refund::where('id', $request->id)->update([ Refund::where('id', $request->id)->update([
@ -97,7 +98,7 @@ class AdminRefundController extends Controller
try { try {
Transaction::where('id', $refund->transaction_id)->update([ Transaction::where('id', $refund->transaction_id)->update([
'status_transaksi' => 'finished', 'status_transaksi' => 'finished',
'status_pembayaran' => 'settlement' 'status_pembayaran' => 'settlement',
]); ]);
Refund::where('id', $request->id)->update([ Refund::where('id', $request->id)->update([
@ -117,7 +118,7 @@ class AdminRefundController extends Controller
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Refund berhasil ditolak. Transaksi diselesaikan dan uang disampaikan ke penjual.' 'message' => 'Refund berhasil ditolak. Transaksi diselesaikan dan uang disampaikan ke penjual.',
]); ]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
@ -133,28 +134,56 @@ class AdminRefundController extends Controller
public function listRefund(Request $request) public function listRefund(Request $request)
{ {
$subQuery = Refund::with('transaction') $subQuery = Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id')
->select('id', 'pembeli', 'nama_barang', 'penjual', 'total', 'tanggal_transaksi', 'batas_konfirmasi_transaksi', 'status'); ->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'])) { if ($request->has('search') && !empty($request->search['value'])) {
$searchRefund = $request->search['value']; $searchRefund = $request->search['value'];
$subQuery->where(function ($a) use ($searchRefund) { if (!is_numeric($searchRefund)) {
$a->whereRaw('pembeli LIKE ?', ['%' . $searchRefund . '%']) // if(strtotime($searchRefund) != false){
->orWhereRaw('nama_barang LIKE ?', ['%' . $searchRefund . '%']) // $subQuery->where(function ($a) use ($searchRefund) {
->orWhereRaw('penjual LIKE ?', ['%' . $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'));
} // });
$queryRefund = Refund::from(DB::raw("({$subQuery->toSql()}) as tmp")) // }else{
->mergeBindings($subQuery->getQuery()) // Menggabungkan binding parameters $subQuery->where(function ($a) use ($searchRefund) {
->select('*') $a->whereRaw('LOWER(b.nama_depan) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->get(); ->orWhereRaw('LOWER(b.nama_belakang) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(s.nama_depan) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(s.nama_belakang) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?', ['%' . strtolower($searchRefund) . '%'])
->orWhereRaw('LOWER(refunds.status) LIKE ?', ['%' . strtolower($searchRefund) . '%']);
});
// }
if ($request->ajax()) { }else {
return DataTables::of($queryRefund) $subQuery->where(function ($a) use ($searchRefund) {
->addIndexColumn() $a->whereDay('refunds.created_at', '=', $searchRefund)
->addColumn('aksi', function ($row) { ->orWhereMonth('refunds.created_at', '=', $searchRefund)
$url = route('admin-refund.show', ['id' => $row->id]); ->orWhereYear('refunds.created_at', '=', $searchRefund)
$html_code = ' ->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();
if ($request->ajax()) {
return DataTables::of($queryRefund)
->addIndexColumn()
->addColumn('action', function ($row) {
$url = route('admin-refund.show', ['id' => $row->id]);
$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">
@ -163,14 +192,16 @@ class AdminRefundController extends Controller
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item" <li><a class="dropdown-item"
href="'.$url.'">Detail</a> href="' .
$url .
'">Detail</a>
</li> </li>
</ul> </ul>
</div>'; </div>';
return $html_code; return $html_code;
}) })
->rawColumns(['aksi']) ->rawColumns(['action'])
->make(true); ->make(true);
} }
} }
} }

View File

@ -113,7 +113,7 @@ class AdminSettingController extends Controller
return DataTables::of($querySetting) return DataTables::of($querySetting)
->addIndexColumn() ->addIndexColumn()
->addColumn('action', function($row){ ->addColumn('action', function($row){
$status = $row->status ? 'checked' : ''; $status = $row->status == 'Active' ? 'checked' : '';
$html_code = '<label class="switch"> $html_code = '<label class="switch">
<input type="checkbox" '.$status.' <input type="checkbox" '.$status.'
data-id="'. $row->id.'"> data-id="'. $row->id.'">

View File

@ -29,37 +29,9 @@
<th>Aksi</th> <th>Aksi</th>
</tr> </tr>
</thead> </thead>
{{-- <tbody> <tbody>
@foreach ($refunds as $refund)
<tr> </tbody>
<td>{{ $loop->iteration }}</td>
<td>{{ $refund->transaction->data_pembeli->nama_depan }}
</td>
<td>{{ $refund->transaction->nama_barang }}
</td>
<td>{{ $refund->transaction->data_penjual->nama_depan }}
</td>
<td>{{ $refund->total }}</td>
<td>{{ $refund->created_at }}</td>
<td>{{ $refund->due_date }}</td>
<td><a href="#" data-toggle="modal" data-target="#modalKeteranganStatus"
class="badge {{ $refund->status == 'partial refund' ? 'badge-succes' : ($refund->status == 'pending' ? 'badge-warning' : 'badge-danger') }}">{{ ucwords($refund->status) }}</a>
</td>
<td>
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
...
</button>
<div class="dropdown-menu">
<a class="dropdown-item"
href="{{ route('admin-refund.show', $refund->id) }}">Detail</a>
</div>
</div>
</td>
</tr>
@endforeach
</tbody> --}}
</table> </table>
</div> </div>
</div> </div>
@ -74,73 +46,79 @@
serverSide: true, serverSide: true,
ajax: `{{ route('admin-refund.list-refund') }}`, ajax: `{{ route('admin-refund.list-refund') }}`,
columns: [{ columns: [{
data: 'DT_RowIndex', data: 'DT_RowIndex',
name: 'DT_RowIndex', name: 'DT_RowIndex',
orderable: false, orderable: false,
searchable: true, searchable: true,
}, },
{ {
data: 'id', data: 'pembeli',
name: 'id', name: 'pembeli',
orderable: false, },
searchable: true, {
}, data: 'nama_barang',
{ name: 'nama_barang',
data: 'pembeli', },
name: 'pembeli', {
}, data: 'penjual',
{ name: 'penjual',
data: 'nama_barang', },
name: 'nama_barang', {
}, data: 'total',
{ name: 'total',
data: 'penjual', },
name: 'penjual', {
}, data: 'created_at',
{ name: 'created_at',
data: 'total', render: function(data, type, row) {
name: 'total', if (type == 'display') {
}, var date = new Date(data);
{ var formattedDate = date.toLocaleDateString('id-ID', {
data: 'tanggal_pengajuan', year: '2-digit',
name: 'tanggal_pengajuan', month: '2-digit',
render: function(data, type, row) { day: '2-digit'
if (type == 'display') { });
var date = new Date(data); return formattedDate;
var formattedDate = date.toLocaleDateString('en-US', { }
year: '2-digit', return data;
month: '2-digit',
day: '2-digit'
});
return formattedDate;
}
return data;
}
},
{
data: 'batas_konfirmasi',
name: 'batas_konfirmasi',
},
{
data: null,
render: function(data, type, row) {
if (row.status == 'partial refund') {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-success">${row.status}</a>`;
}else if (row.status == 'pending') {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-warning">${row.status}</a>`;
}else {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-danger">${row.status}</a>`;
} }
}, },
orderable: true, {
searchable: true data: 'due_date',
}, name: 'due_date',
{ render: function(data, type, row) {
data: 'aksi', if (type == 'display') {
name: 'aksi', var date = new Date(data);
orderable: false, var formattedDate = date.toLocaleDateString('id-ID', {
searchable: true year: '2-digit',
} month: '2-digit',
day: '2-digit'
});
return formattedDate;
}
return data;
}
},
{
data: 'status',
render: function(data, type, row) {
if (row.status == 'partial refund') {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-success">${row.status}</a>`;
} else if (row.status == 'pending') {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-warning">${row.status}</a>`;
} else {
return `<a href="#" data-toggle="modal" data-target="#modalKeteranganStatus" class="badge badge-danger">${row.status}</a>`;
}
},
orderable: true,
searchable: true
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
}
], ],
}) })
}) })

View File

@ -43,7 +43,7 @@
$("#bulan").select2(); $("#bulan").select2();
$('#tambahModal').click(function() { $('#tambahModal').click(function() {
$('#ModalSetting').modal('show'); $('#modalSetting').modal('show');
}); });
$('#buttonTanya').click(function() { $('#buttonTanya').click(function() {
@ -96,6 +96,8 @@
if (response.status) { if (response.status) {
Swal.close(); Swal.close();
listSetting.ajax.reload(); listSetting.ajax.reload();
form.reset();
$('#modalSetting').modal('hide');
} }
}); });
}, },

View File

@ -1,4 +1,4 @@
<div class="modal fade" id="ModalSetting" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" <div class="modal fade" id="modalSetting" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle"
aria-hidden="true"> aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content"> <div class="modal-content">

View File

@ -134,6 +134,8 @@
data-client-key="SB-Mid-client-lEMALcmIPviksRRe"></script> data-client-key="SB-Mid-client-lEMALcmIPviksRRe"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
let listPembeli = $('#table-pembeli').DataTable({});
// Bayar // Bayar
$('#table-3').on('click', '#bayar', function() { $('#table-3').on('click', '#bayar', function() {
const id = $(this).data('id'); const id = $(this).data('id');