Revisi kontroller transaksi

This commit is contained in:
Muhammad Raihan Surya 2023-11-01 11:31:58 +07:00
parent 1a3a6234ad
commit ebd309e471
5 changed files with 135 additions and 167 deletions

View File

@ -6,14 +6,11 @@ use App\Models\Transaction;
use App\Models\TransactionDescription; use App\Models\TransactionDescription;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Contact; use App\Models\Contact;
use App\Models\Refund;
use App\Models\RefundDescription;
use App\Models\Setting; use App\Models\Setting;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\TransactionUser; use App\Models\TransactionUser;
use App\Models\User; use App\Models\User;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@ -169,9 +166,7 @@ class UserTransactionController extends Controller
'callbacks' => [ 'callbacks' => [
'finish' => route('user-transaction.index.pembeli'), 'finish' => route('user-transaction.index.pembeli'),
], ],
'enabled_payments' => [ 'enabled_payments' => ['credit_card', 'gopay', 'shopeepay'],
'credit_card', 'gopay', 'shopeepay'
],
'expiry' => [ 'expiry' => [
'start_time' => $now->format('Y-m-d H:i:s P'), 'start_time' => $now->format('Y-m-d H:i:s P'),
'unit' => 'days', 'unit' => 'days',
@ -183,7 +178,7 @@ class UserTransactionController extends Controller
$token = $snap_token; $token = $snap_token;
$status = 'created'; $status = 'created';
try{ try {
DB::beginTransaction(); DB::beginTransaction();
$query = Transaction::create([ $query = Transaction::create([
@ -231,7 +226,7 @@ class UserTransactionController extends Controller
'status' => true, 'status' => true,
'message' => 'Berhasil menambahkan transaksi. Silahkan lakukan pembayaran.', 'message' => 'Berhasil menambahkan transaksi. Silahkan lakukan pembayaran.',
]); ]);
}catch(Throwable $e){ } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
Log::error($e->getMessage()); Log::error($e->getMessage());
@ -245,10 +240,13 @@ class UserTransactionController extends Controller
public function acceptTransaction($id) public function acceptTransaction($id)
{ {
$query = Transaction::where('id', $id)->update([ try {
DB::beginTransaction();
Transaction::where('id', $id)->update([
'status' => 'process', 'status' => 'process',
]); ]);
if ($query) {
TransactionDescription::create([ TransactionDescription::create([
'transaction_id' => $id, 'transaction_id' => $id,
'status' => 'process', 'status' => 'process',
@ -258,11 +256,17 @@ class UserTransactionController extends Controller
'deskripsi' => 'Transaksi telah diterima oleh ' . Auth::user()->nama_depan, 'deskripsi' => 'Transaksi telah diterima oleh ' . Auth::user()->nama_depan,
]); ]);
DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.', 'message' => 'Transaksi telah diterima. Siapkan pesanan untuk dikirim ke penjual.',
]); ]);
} else { } catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Gagal update status karena kesalahan server.', 'message' => 'Gagal update status karena kesalahan server.',
@ -272,10 +276,13 @@ class UserTransactionController extends Controller
public function sendingOrder($id) public function sendingOrder($id)
{ {
$query = Transaction::where('id', $id)->update([ try {
DB::beginTransaction();
Transaction::where('id', $id)->update([
'status' => 'sending', 'status' => 'sending',
]); ]);
if ($query) {
TransactionDescription::create([ TransactionDescription::create([
'transaction_id' => $id, 'transaction_id' => $id,
'status' => 'sending', '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.', 'deskripsi' => 'Pesanan telah dikirim oleh ' . Auth::user()->nama_depan . ' dan sedang dalam perjalanan menuju pembeli.',
]); ]);
DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pesanan sedang dikirim dan menuju pembeli.', 'message' => 'Pesanan sedang dikirim dan menuju pembeli.',
]); ]);
} else { } catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Gagal update status karena kesalahan server.', 'message' => 'Gagal update status karena kesalahan server.',
@ -299,10 +312,13 @@ class UserTransactionController extends Controller
public function sentOrder($id) public function sentOrder($id)
{ {
$query = Transaction::where('id', $id)->update([ try {
DB::beginTransaction();
Transaction::where('id', $id)->update([
'status' => 'sended', 'status' => 'sended',
]); ]);
if ($query) {
TransactionDescription::create([ TransactionDescription::create([
'transaction_id' => $id, 'transaction_id' => $id,
'status' => 'sended', 'status' => 'sended',
@ -312,11 +328,17 @@ class UserTransactionController extends Controller
'deskripsi' => 'Pesanan telah sampai di tempat pembeli.', 'deskripsi' => 'Pesanan telah sampai di tempat pembeli.',
]); ]);
DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pesanan telah sampai di tempat pembeli.', 'message' => 'Pesanan telah sampai di tempat pembeli.',
]); ]);
} else { } catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Gagal update status karena kesalahan server.', 'message' => 'Gagal update status karena kesalahan server.',
@ -326,24 +348,33 @@ class UserTransactionController extends Controller
public function finishTransaction($id) public function finishTransaction($id)
{ {
$query = Transaction::where('id', $id)->update([ try {
DB::beginTransaction();
Transaction::where('id', $id)->update([
'status' => 'finished', 'status' => 'finished',
]); ]);
if ($query) {
TransactionDescription::create([ TransactionDescription::create([
'transaction_id' => $id, 'transaction_id' => $id,
'status' => 'sended', 'status' => 'finished',
'background' => 'bg-buyer', 'background' => 'bg-buyer',
'user' => Auth::user()->email, 'user' => Auth::user()->email,
'judul' => 'fas fa-check', '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([ return response()->json([
'status' => true, '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([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Gagal update status karena kesalahan server.', 'message' => 'Gagal update status karena kesalahan server.',
@ -362,8 +393,11 @@ class UserTransactionController extends Controller
$payment = Trans::status($id); $payment = Trans::status($id);
$result = json_decode(json_encode($payment), true); $result = json_decode(json_encode($payment), true);
if (in_array($result['status_code'], ['200', '201', '202'])) { if ($result['status_code'] == '200') {
$query = Transaction::where('id', $id)->update([ try {
DB::beginTransaction();
Transaction::where('id', $id)->update([
'currency' => $result['currency'], 'currency' => $result['currency'],
'merchant_id' => $result['merchant_id'], 'merchant_id' => $result['merchant_id'],
'metode_pembayaran' => $result['payment_type'], 'metode_pembayaran' => $result['payment_type'],
@ -372,47 +406,33 @@ class UserTransactionController extends Controller
'status' => $result['transaction_status'], 'status' => $result['transaction_status'],
'fraud_status' => $result['fraud_status'], 'fraud_status' => $result['fraud_status'],
]); ]);
if ($query) {
if ($result['transaction_status'] == 'pending') {
TransactionDescription::create([ TransactionDescription::create([
'transaction_id' => $id, 'transaction_id' => $id,
'status' => $result['transaction_status'], 'status' => $result['transaction_status'],
'user' => Auth::user()->email, 'user' => Auth::user()->email,
'judul' => 'fas fa-clock', 'judul' => 'fas fa-check',
'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'], 'status_code' => $result['status_code'],
'background' => 'bg-buyer', 'background' => 'bg-buyer',
'deskripsi' => Auth::user()->nama_depan . ' telah sukses melakukan pembayaran. Transaksi diteruskan ke penjual.', 'deskripsi' => Auth::user()->nama_depan . ' telah sukses melakukan pembayaran. Transaksi diteruskan ke penjual.',
]); ]);
DB::rollBack();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Pembayaran sukses.', 'message' => 'Pembayaran sukses.',
]); ]);
} } catch (Throwable $e) {
} else { DB::rollBack();
Log::error($e->getMessage());
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Transaksi pembayaran gagal.', '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 { } else {
return response()->json([ return response()->json([
'status' => false, 'status' => false,
@ -426,17 +446,18 @@ class UserTransactionController extends Controller
// Membuat objek Google Translate // Membuat objek Google Translate
$translator = new GoogleTranslate(); $translator = new GoogleTranslate();
// Mengatur bahasa sumber (Inggris) dan bahasa target (Indonesia)
$translator->setSource('en'); $translator->setSource('en');
$translator->setTarget('id'); $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();
if ($transaction->status == 'created') { Transaction::where('id', $id)->update([
$query = Transaction::where('id', $id)->update([
'status' => 'cancel', 'status' => 'cancel',
]); ]);
if ($query) {
TransactionDescription::create([ TransactionDescription::create([
'transcation_id' => $id, 'transcation_id' => $id,
'status' => 'cancel', 'status' => 'cancel',
@ -446,53 +467,31 @@ class UserTransactionController extends Controller
'deskripsi' => 'Transaksi dibatalkan', 'deskripsi' => 'Transaksi dibatalkan',
]); ]);
DB::commit();
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Transaksi berhasil dibatal', 'message' => 'Transaksi berhasil dibatal',
]); ]);
} else { } catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Transaksi gagal dibatalkan', 'message' => 'Transaksi gagal dibatalkan',
]); ]);
} }
} else { } 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([ return response()->json([
'status' => false, 'status' => false,
'message' => $translator->translate($cancel['status_message']), 'message' => $translator->translate($cancel['status_message']),
]); ]);
} }
} }
}
public function complainTransaction($id) public function complaintTransaction($id)
{ {
return view('user.refund.new-refund', compact('id')); return view('user.refund.new-refund', compact('id'));
} }

View File

@ -52,7 +52,7 @@ $("#table-2").dataTable({
// Transaksi pembeli // Transaksi pembeli
$("#table-3").dataTable({ $("#table-3").dataTable({
columnDefs: [{ sortable: false, targets: [6] }], columnDefs: [{ sortable: false, targets: [7] }],
searchable: true, searchable: true,
}); });

View File

@ -37,6 +37,7 @@
# #
</th> </th>
<th>Penjual</th> <th>Penjual</th>
<th>Nama Barang</th>
<th>Total</th> <th>Total</th>
<th>Tanggal Transaksi</th> <th>Tanggal Transaksi</th>
<th>Tanggal Update</th> <th>Tanggal Update</th>
@ -50,6 +51,7 @@
<td>{{ $loop->iteration }}</td> <td>{{ $loop->iteration }}</td>
<td>{{ $transaction->data_penjual->nama_depan . ' ' . $transaction->data_penjual->nama_belakang }} <td>{{ $transaction->data_penjual->nama_depan . ' ' . $transaction->data_penjual->nama_belakang }}
</td> </td>
<td>{{ $transaction->nama_barang }}</td>
<td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td> <td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td>
<td>{{ $transaction->created_at }}</td> <td>{{ $transaction->created_at }}</td>
<td>{{ $transaction->updated_at }}</td> <td>{{ $transaction->updated_at }}</td>
@ -72,7 +74,7 @@
<button type="button" class="btn btn-primary dropdown-toggle" <button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"> aria-expanded="false">
Action ...
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
@ -97,7 +99,7 @@
</li> </li>
@endif @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 }}" <li><a href="#" data-id="{{ $transaction->id }}"
id="cancel" class="dropdown-item">Batal</a></li> id="cancel" class="dropdown-item">Batal</a></li>
@endif @endif

View File

@ -30,8 +30,8 @@
<th class="text-center"> <th class="text-center">
# #
</th> </th>
<th>Order ID</th>
<th>Pembeli</th> <th>Pembeli</th>
<th>Nama Barang</th>
<th>Total</th> <th>Total</th>
<th>Tanggal Pembuatan</th> <th>Tanggal Pembuatan</th>
<th>Tanggal Update</th> <th>Tanggal Update</th>
@ -43,9 +43,9 @@
@forelse ($transactions as $transaction) @forelse ($transactions as $transaction)
<tr> <tr>
<td>{{ $loop->iteration }}</td> <td>{{ $loop->iteration }}</td>
<td>{{ $transaction->id }}</td>
<td>{{ $transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang }} <td>{{ $transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang }}
</td> </td>
<td>{{ $transaction->nama_barang }}</td>
<td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td> <td>Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</td>
<td>{{ $transaction->created_at }}</td> <td>{{ $transaction->created_at }}</td>
<td>{{ $transaction->updated_at }}</td> <td>{{ $transaction->updated_at }}</td>
@ -68,7 +68,7 @@
<button type="button" class="btn btn-primary dropdown-toggle" <button type="button" class="btn btn-primary dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false"> aria-expanded="false">
Action ...
</button> </button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item" <li><a class="dropdown-item"
@ -81,12 +81,13 @@
</li> </li>
@endif @endif
{{-- Setelah dibayar --}} {{-- Setelah dibayar --}}
@if ($transaction->status == 'settlement') @if (in_array($transaction->status, ['settlement', 'capture']))
<li><a class="dropdown-item" href="#">Process</a> <li><a class="dropdown-item" href="#">Proses
Transaksi</a>
</li> </li>
@endif @endif
{{-- Pengiriman barang --}} {{-- Pengiriman barang --}}
@if ($transaction->status == 'progress') @if ($transaction->status == 'process')
<li><a class="dropdown-item" href="#">Kirim <li><a class="dropdown-item" href="#">Kirim
Barang</a> Barang</a>
</li> </li>
@ -96,6 +97,11 @@
sampai</a> sampai</a>
</li> </li>
@endif @endif
@if ($transaction->status == 'finished')
<li><a class="dropdown-item" href="#">Transaksi
Selesai</a>
</li>
@endif
</ul> </ul>
</div> </div>
</td> </td>

View File

@ -42,20 +42,6 @@ Route::get('/detail_transaction', function () {
'detail_transaction' => Transactions::allDetailTransactions() 'detail_transaction' => Transactions::allDetailTransactions()
]); ]);
})->name('transaction.detail'); })->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() { Route::get('/detail_refund',function() {
return view('admin/refund/detail-refund',[ return view('admin/refund/detail-refund',[
@ -68,31 +54,6 @@ Route::get('/next_detail_refund',function() {
'name'=>"Jilhan Haura" '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 //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/bayar-transaksi/{id}','payTransaction')->name('user-pembeli.pay');
Route::put('user-pembeli/batal-transaksi/{id}','cancelTransaction')->name('user-pembeli.cancel'); 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-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 //Penjual
Route::get('user-penjual','indexPenjual')->name('user-penjual.index'); Route::get('user-penjual','indexPenjual')->name('user-penjual.index');