From ebd309e47103748f00efd39eca086931c9b85a4f Mon Sep 17 00:00:00 2001 From: Raihan Surya <raihansurya4000@gmail.com> Date: Wed, 1 Nov 2023 11:31:58 +0700 Subject: [PATCH] Revisi kontroller transaksi --- .../User/UserTransactionController.php | 235 +++++++++--------- public/assets/js/page/modules-datatables.js | 2 +- .../User/transaction/Pembeli/index.blade.php | 6 +- .../User/transaction/penjual/index.blade.php | 18 +- routes/web.php | 41 +-- 5 files changed, 135 insertions(+), 167 deletions(-) diff --git a/app/Http/Controllers/User/UserTransactionController.php b/app/Http/Controllers/User/UserTransactionController.php index 3103e8a..930e2e4 100644 --- a/app/Http/Controllers/User/UserTransactionController.php +++ b/app/Http/Controllers/User/UserTransactionController.php @@ -6,14 +6,11 @@ use App\Models\Transaction; use App\Models\TransactionDescription; use App\Http\Controllers\Controller; use App\Models\Contact; -use App\Models\Refund; -use App\Models\RefundDescription; use App\Models\Setting; use Illuminate\Http\Request; use App\Models\TransactionUser; use App\Models\User; use Carbon\Carbon; -use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; @@ -169,9 +166,7 @@ class UserTransactionController extends Controller 'callbacks' => [ 'finish' => route('user-transaction.index.pembeli'), ], - 'enabled_payments' => [ - 'credit_card', 'gopay', 'shopeepay' - ], + 'enabled_payments' => ['credit_card', 'gopay', 'shopeepay'], 'expiry' => [ 'start_time' => $now->format('Y-m-d H:i:s P'), 'unit' => 'days', @@ -183,7 +178,7 @@ class UserTransactionController extends Controller $token = $snap_token; $status = 'created'; - try{ + try { DB::beginTransaction(); $query = Transaction::create([ @@ -231,7 +226,7 @@ class UserTransactionController extends Controller 'status' => true, 'message' => 'Berhasil menambahkan transaksi. Silahkan lakukan pembayaran.', ]); - }catch(Throwable $e){ + } catch (Throwable $e) { DB::rollBack(); Log::error($e->getMessage()); @@ -245,10 +240,13 @@ class UserTransactionController extends Controller public function acceptTransaction($id) { - $query = Transaction::where('id', $id)->update([ - 'status' => 'process', - ]); - if ($query) { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'status' => 'process', + ]); + TransactionDescription::create([ 'transaction_id' => $id, 'status' => 'process', @@ -258,11 +256,17 @@ class UserTransactionController extends Controller 'deskripsi' => 'Transaksi telah diterima oleh ' . Auth::user()->nama_depan, ]); + DB::commit(); + return response()->json([ 'status' => true, 'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.', ]); - } else { + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Gagal update status karena kesalahan server.', @@ -272,10 +276,13 @@ class UserTransactionController extends Controller public function sendingOrder($id) { - $query = Transaction::where('id', $id)->update([ - 'status' => 'sending', - ]); - if ($query) { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'status' => 'sending', + ]); + TransactionDescription::create([ 'transaction_id' => $id, 'status' => 'sending', @@ -285,11 +292,17 @@ class UserTransactionController extends Controller 'deskripsi' => 'Pesanan telah dikirim oleh ' . Auth::user()->nama_depan . ' dan sedang dalam perjalanan menuju pembeli.', ]); + DB::commit(); + return response()->json([ 'status' => true, 'message' => 'Pesanan sedang dikirim dan menuju pembeli.', ]); - } else { + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Gagal update status karena kesalahan server.', @@ -299,10 +312,13 @@ class UserTransactionController extends Controller public function sentOrder($id) { - $query = Transaction::where('id', $id)->update([ - 'status' => 'sended', - ]); - if ($query) { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'status' => 'sended', + ]); + TransactionDescription::create([ 'transaction_id' => $id, 'status' => 'sended', @@ -312,11 +328,17 @@ class UserTransactionController extends Controller 'deskripsi' => 'Pesanan telah sampai di tempat pembeli.', ]); + DB::commit(); + return response()->json([ 'status' => true, 'message' => 'Pesanan telah sampai di tempat pembeli.', ]); - } else { + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Gagal update status karena kesalahan server.', @@ -326,24 +348,33 @@ class UserTransactionController extends Controller public function finishTransaction($id) { - $query = Transaction::where('id', $id)->update([ - 'status' => 'finished', - ]); - if ($query) { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'status' => 'finished', + ]); + TransactionDescription::create([ 'transaction_id' => $id, - 'status' => 'sended', + 'status' => 'finished', 'background' => 'bg-buyer', 'user' => Auth::user()->email, 'judul' => 'fas fa-check', - 'deskripsi' => 'Pesanan telah sampai di tempat pembeli.', + 'deskripsi' => 'Pesanan telah diselesaikan oleh '.auth()->user()->nama_depan.'.', ]); + DB::commit(); + return response()->json([ 'status' => true, - 'message' => 'Pesanan telah sampai di tempat pembeli.', + 'message' => 'Pesanan telah diselesaikan oleh '.auth()->user()->nama_depan.'.', ]); - } else { + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Gagal update status karena kesalahan server.', @@ -362,57 +393,46 @@ class UserTransactionController extends Controller $payment = Trans::status($id); $result = json_decode(json_encode($payment), true); - if (in_array($result['status_code'], ['200', '201', '202'])) { - $query = Transaction::where('id', $id)->update([ - 'currency' => $result['currency'], - 'merchant_id' => $result['merchant_id'], - 'metode_pembayaran' => $result['payment_type'], - 'tanggal_transaksi' => $result['transaction_time'], - 'signature_key' => $result['signature_key'], - 'status' => $result['transaction_status'], - 'fraud_status' => $result['fraud_status'], - ]); - if ($query) { - if ($result['transaction_status'] == 'pending') { - TransactionDescription::create([ - 'transaction_id' => $id, - 'status' => $result['transaction_status'], - 'user' => Auth::user()->email, - 'judul' => 'fas fa-clock', - 'status_code' => $result['status_code'], - 'background' => 'bg-buyer', - 'deskripsi' => 'Pembayaran ditunda.', - ]); - return response()->json([ - 'status' => true, - 'message' => 'Transaksi ditunda. Silahkan bayar nanti selama dalam waktu batas pembayaran.', - ]); - } else { - TransactionDescription::create([ - 'transaction_id' => $id, - 'status' => $result['transaction_status'], - 'user' => Auth::user()->email, - 'judul' => 'fas fa-plus', - 'status_code' => $result['status_code'], - 'background' => 'bg-buyer', - 'deskripsi' => Auth::user()->nama_depan . ' telah sukses melakukan pembayaran. Transaksi diteruskan ke penjual.', - ]); - return response()->json([ - 'status' => true, - 'message' => 'Pembayaran sukses.', - ]); - } - } else { + if ($result['status_code'] == '200') { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'currency' => $result['currency'], + 'merchant_id' => $result['merchant_id'], + 'metode_pembayaran' => $result['payment_type'], + 'tanggal_transaksi' => $result['transaction_time'], + 'signature_key' => $result['signature_key'], + 'status' => $result['transaction_status'], + 'fraud_status' => $result['fraud_status'], + ]); + + TransactionDescription::create([ + 'transaction_id' => $id, + 'status' => $result['transaction_status'], + 'user' => Auth::user()->email, + 'judul' => 'fas fa-check', + 'status_code' => $result['status_code'], + 'background' => 'bg-buyer', + 'deskripsi' => Auth::user()->nama_depan . ' telah sukses melakukan pembayaran. Transaksi diteruskan ke penjual.', + ]); + + DB::rollBack(); + + return response()->json([ + 'status' => true, + 'message' => 'Pembayaran sukses.', + ]); + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Transaksi pembayaran gagal.', ]); } - } elseif (in_array($result['status_code'], ['400', '401', '402', '403', '404', '405', '406', '407', '408', '409', '410', '411', '412', '413'])) { - return response()->json([ - 'status' => false, - 'message' => 'Terjadi kesalahan di server.', - ]); } else { return response()->json([ 'status' => false, @@ -426,17 +446,18 @@ class UserTransactionController extends Controller // Membuat objek Google Translate $translator = new GoogleTranslate(); - // Mengatur bahasa sumber (Inggris) dan bahasa target (Indonesia) $translator->setSource('en'); $translator->setTarget('id'); - $transaction = Transaction::where('id', $id)->first(); + $cancel = json_decode(json_encode(Trans::cancel($id)), true); + if ($cancel['status_code'] == '200') { + try { + DB::beginTransaction(); + + Transaction::where('id', $id)->update([ + 'status' => 'cancel', + ]); - if ($transaction->status == 'created') { - $query = Transaction::where('id', $id)->update([ - 'status' => 'cancel', - ]); - if ($query) { TransactionDescription::create([ 'transcation_id' => $id, 'status' => 'cancel', @@ -446,53 +467,31 @@ class UserTransactionController extends Controller 'deskripsi' => 'Transaksi dibatalkan', ]); + DB::commit(); + return response()->json([ 'status' => true, 'message' => 'Transaksi berhasil dibatal', ]); - } else { + } catch (Throwable $e) { + DB::rollBack(); + + Log::error($e->getMessage()); + return response()->json([ 'status' => false, 'message' => 'Transaksi gagal dibatalkan', ]); } } else { - $cancel = json_decode(json_encode(Trans::cancel($id)), true); - if ($cancel['status_code'] == '200') { - $query = Transaction::where('id', $id)->update([ - 'status' => $cancel['transaction_status'], - ]); - if ($query) { - TransactionDescription::create([ - 'transaction_id' => $id, - 'status' => $cancel['transaction_status'], - 'user' => Auth::user()->email, - 'judul' => 'fas fa-exclamation', - 'status_code' => $cancel['status_code'], - 'background' => 'bg-buyer', - 'deskripsi' => $translator->translate($cancel['status_message']), - ]); - - return response()->json([ - 'status' => true, - 'message' => $translator->translate($cancel['status_message']), - ]); - } else { - return response()->json([ - 'status' => false, - 'message' => $translator->translate($cancel['status_message']), - ]); - } - } elseif ($cancel['status_code'] == '412') { - return response()->json([ - 'status' => false, - 'message' => $translator->translate($cancel['status_message']), - ]); - } + return response()->json([ + 'status' => false, + 'message' => $translator->translate($cancel['status_message']), + ]); } } - public function complainTransaction($id) + public function complaintTransaction($id) { return view('user.refund.new-refund', compact('id')); } diff --git a/public/assets/js/page/modules-datatables.js b/public/assets/js/page/modules-datatables.js index 8db18c9..cb2bb12 100644 --- a/public/assets/js/page/modules-datatables.js +++ b/public/assets/js/page/modules-datatables.js @@ -52,7 +52,7 @@ $("#table-2").dataTable({ // Transaksi pembeli $("#table-3").dataTable({ - columnDefs: [{ sortable: false, targets: [6] }], + columnDefs: [{ sortable: false, targets: [7] }], searchable: true, }); diff --git a/resources/views/User/transaction/Pembeli/index.blade.php b/resources/views/User/transaction/Pembeli/index.blade.php index c3d5f74..3d3c0a6 100644 --- a/resources/views/User/transaction/Pembeli/index.blade.php +++ b/resources/views/User/transaction/Pembeli/index.blade.php @@ -37,6 +37,7 @@ # </th> <th>Penjual</th> + <th>Nama Barang</th> <th>Total</th> <th>Tanggal Transaksi</th> <th>Tanggal Update</th> @@ -50,6 +51,7 @@ <td>{{ $loop->iteration }}</td> <td>{{ $transaction->data_penjual->nama_depan . ' ' . $transaction->data_penjual->nama_belakang }} </td> + <td>{{ $transaction->nama_barang }}</td> <td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td> <td>{{ $transaction->created_at }}</td> <td>{{ $transaction->updated_at }}</td> @@ -72,7 +74,7 @@ <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - Action + ... </button> <ul class="dropdown-menu"> @@ -97,7 +99,7 @@ </li> @endif - @if (in_array($transaction->status, ['pending', 'authorize', 'capture', 'created'])) + @if (in_array($transaction->status, ['pending', 'capture', 'created'])) <li><a href="#" data-id="{{ $transaction->id }}" id="cancel" class="dropdown-item">Batal</a></li> @endif diff --git a/resources/views/User/transaction/penjual/index.blade.php b/resources/views/User/transaction/penjual/index.blade.php index d79aab1..c00c50e 100644 --- a/resources/views/User/transaction/penjual/index.blade.php +++ b/resources/views/User/transaction/penjual/index.blade.php @@ -30,8 +30,8 @@ <th class="text-center"> # </th> - <th>Order ID</th> <th>Pembeli</th> + <th>Nama Barang</th> <th>Total</th> <th>Tanggal Pembuatan</th> <th>Tanggal Update</th> @@ -43,9 +43,9 @@ @forelse ($transactions as $transaction) <tr> <td>{{ $loop->iteration }}</td> - <td>{{ $transaction->id }}</td> <td>{{ $transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang }} </td> + <td>{{ $transaction->nama_barang }}</td> <td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td> <td>{{ $transaction->created_at }}</td> <td>{{ $transaction->updated_at }}</td> @@ -68,7 +68,7 @@ <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - Action + ... </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" @@ -81,12 +81,13 @@ </li> @endif {{-- Setelah dibayar --}} - @if ($transaction->status == 'settlement') - <li><a class="dropdown-item" href="#">Process</a> + @if (in_array($transaction->status, ['settlement', 'capture'])) + <li><a class="dropdown-item" href="#">Proses + Transaksi</a> </li> @endif {{-- Pengiriman barang --}} - @if ($transaction->status == 'progress') + @if ($transaction->status == 'process') <li><a class="dropdown-item" href="#">Kirim Barang</a> </li> @@ -96,6 +97,11 @@ sampai</a> </li> @endif + @if ($transaction->status == 'finished') + <li><a class="dropdown-item" href="#">Transaksi + Selesai</a> + </li> + @endif </ul> </div> </td> diff --git a/routes/web.php b/routes/web.php index b7453c9..b064c98 100644 --- a/routes/web.php +++ b/routes/web.php @@ -42,20 +42,6 @@ Route::get('/detail_transaction', function () { 'detail_transaction' => Transactions::allDetailTransactions() ]); })->name('transaction.detail'); -// Route::get('/history_transaction', function () { -// return view('admin/transaction/History_Transaction',[ -// 'name'=>'Jilhan Haura', -// "transaction"=> Transactions::allTransactions() -// ]); -// }); -// Route::get('/history_refund', function () { -// return view('admin/refund/history-refund',[ -// 'name'=>'Jilhan Haura', -// "history_refund" => Refunds::HistoryRefund() -// ]); -// }); - - Route::get('/detail_refund',function() { return view('admin/refund/detail-refund',[ @@ -68,31 +54,6 @@ Route::get('/next_detail_refund',function() { 'name'=>"Jilhan Haura" ]); }); -// Route::get('/list_user',function() { -// return view('Admin/users/list-user',[ -// 'name'=>"Jilhan Haura", -// "list_users" => Users::listUsers() -// ]); -// }); -// Route::get('/detail-user',function() { -// return view('Admin/users/detail-user',[ -// 'name'=>"Jilhan Haura", -// "detail_user" => Users::detailUser() -// ]); -// }); -// Route::get('/profile',function() { -// return view('admin/profile/index',[ -// 'name'=>"Jilhan Haura", -// ]); -// }); -// Route::get('/setting',function() { -// return view('admin/setting/index',[ -// 'name'=>"Jilhan Haura", -// "setting" => Settings:: HistorySetting() -// ]); -// }); - -// -------------------------------------------------------------------------------------------- //Index @@ -195,7 +156,7 @@ Route::middleware(['auth'])->group(function(){ Route::put('user-pembeli/bayar-transaksi/{id}','payTransaction')->name('user-pembeli.pay'); Route::put('user-pembeli/batal-transaksi/{id}','cancelTransaction')->name('user-pembeli.cancel'); Route::put('user-pembeli/transaksi-selesai/{id}','finishTransaction')->name('user-pembeli.finish'); - Route::put('user-pembeli/transaksi-komplain/{id}','complainTransaction')->name('user-pembeli.complain'); + Route::put('user-pembeli/transaksi-komplain/{id}','complaintTransaction')->name('user-pembeli.complain'); //Penjual Route::get('user-penjual','indexPenjual')->name('user-penjual.index');