This commit is contained in:
oktaviaramadani 2023-11-15 16:28:22 +07:00
commit a6897b3f15
9 changed files with 660 additions and 467 deletions

View File

@ -9,6 +9,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use App\Models\User; use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@ -416,8 +417,12 @@ class LoginController extends Controller
} }
public function invoice(){ public function invoice(){
return view('invoice.export-invoice', [ // return view('invoice.export-invoice', [
'transaction' => Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc'), // 'transaction' => Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc'),
]); // ]);
$transaction = Transaction::findOrFail('80d9b19b-ba17-4aea-8cad-c3b4661d33bc');
$pdf = Pdf::loadView('invoice.export-invoice',compact('transaction'))->setPaper('A4','portrait');
return $pdf->download("invoice-80d9b19b-ba17-4aea-8cad-c3b4661d33b-".uniqid().".pdf");
} }
} }

View File

@ -4,6 +4,7 @@ namespace App\Http\Controllers\User;
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\Setting; use App\Models\Setting;
use App\Models\Transaction; use App\Models\Transaction;
use App\Models\TransactionDescription; use App\Models\TransactionDescription;
@ -362,7 +363,7 @@ class PembeliController extends Controller
return response()->json(); return response()->json();
} }
public function cancelTransaction(Request $request) public function cancelPayment(Request $request)
{ {
$auth = base64_encode(env('MIDTRANS_SERVER_KEY')); $auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
@ -420,6 +421,82 @@ class PembeliController extends Controller
} }
} }
public function cancelTransaction(Request $request){
$transaction = Transaction::where('id', $request->id)->first();
$params = [
'refund_key' => $request->id . '-ref1',
'amount' => $transaction->total_bayar,
'reason' => $request->complaint,
];
$auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
$response = Http::withOptions([
'verify' => false,
])
->withHeaders([
'Content-Type' => 'application/json',
'Authorization' => "Basic $auth",
])
->post('https://api.sandbox.midtrans.com/v2/' . $request->id . '/refund', $params);
$result = json_decode($response->body(), true);
$code = $result['status_code'];
$code = '200';
if ($code == '200') {
try {
DB::beginTransaction();
Transaction::where('id', $request->id)->update([
'status_transaksi' => 'failure',
'status_pembayaran' => 'refund',
]);
Refund::create([
'transaction_id' => $request->id,
'total' => $transaction->total_bayar,
'due_date' => now(),
'status' => 'refund',
'complaint' => $request->complaint,
]);
TransactionDescription::create([
'transaction_id' => $request->id,
'status' => 'refund',
'background' => 'bg-seller',
'user' => auth()->user()->email,
'judul' => 'fas fa-times',
'deskripsi' => 'Transaksi dibatalkan oleh ' . auth()->user()->nama_depan . '. Alasan : ' . $request->complaint,
]);
DB::commit();
return response()->json([
'status' => true,
'message' => 'Transaksi telah dibatalkan.',
]);
} catch (Throwable $e) {
DB::rollBack();
Log::error($e->getMessage());
return response()->json([
'status' => false,
'message' => 'Gagal update status karena kesalahan server.',
]);
}
} else {
Log::error($result['status_message']);
return response()->json([
'status' => false,
'message' => 'Transaksi gagal',
]);
}
}
public function pendingTransaction(Request $request) public function pendingTransaction(Request $request)
{ {
$auth = base64_encode(env('MIDTRANS_SERVER_KEY')); $auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
@ -566,12 +643,12 @@ class PembeliController extends Controller
$result = json_decode($response->body(), true); $result = json_decode($response->body(), true);
$status = $result['transaction_status'] == null ? '' : $result['transaction_status']; $status = $result['status_code'] == '404' ? '' : $result['transaction_status'];
if ($status == '') { if ($status == '') {
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'On Close', 'message' => 'Halaman pembayaran telah ditutup. Silahkan lakukan pembayaran lagi.',
]); ]);
} else { } else {
try { try {
@ -649,6 +726,7 @@ class PembeliController extends Controller
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Terjadi error di bagian server.', 'message' => 'Terjadi error di bagian server.',
'data' => $result
]); ]);
} }
} }
@ -723,7 +801,15 @@ class PembeliController extends Controller
href="#">Bayar</a> href="#">Bayar</a>
</li> </li>
<li><a href="#" data-id="'.$row->id.'" <li><a href="#" data-id="'.$row->id.'"
id="cancel" class="dropdown-item">Batal</a> id="cancelPayment" class="dropdown-item">Batal Pembayaran</a>
</li>
';
}
if($row->status_transaksi == 'success'){
$html_code .= '
<li><a href="#" data-id="'.$row->id.'"
id="cancelTransaction" class="dropdown-item">Batal Transaksi</a>
</li> </li>
'; ';
} }

View File

@ -21,29 +21,23 @@ class PenjualController extends Controller
return view('user.transaction.penjual.index'); return view('user.transaction.penjual.index');
} }
public function listPenjual(Request $request){ public function listPenjual(Request $request)
try{ {
$subQuery = Transaction::join('users','transactions.pembeli','=','users.email') try {
->where('transactions.penjual',auth()->user()->email) $subQuery = Transaction::join('users', 'transactions.pembeli', '=', 'users.email')
->select( ->where('transactions.penjual', auth()->user()->email)
'transactions.id', ->select('transactions.id', DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_pembeli"), 'transactions.nama_barang', 'transactions.total_harga', 'transactions.created_at', 'transactions.status_transaksi');
DB::raw("CONCAT(users.nama_depan,' ',users.nama_belakang) as nama_pembeli"),
'transactions.nama_barang',
'transactions.total_harga',
'transactions.created_at',
'transactions.status_transaksi',
);
if($request->has('search') && !empty($request->search['value'])){ if ($request->has('search') && !empty($request->search['value'])) {
$searchPenjual = $request->search['value']; $searchPenjual = $request->search['value'];
if(!is_numeric($searchPenjual)){ if (!is_numeric($searchPenjual)) {
$subQuery->where(function($a) use ($searchPenjual){ $subQuery->where(function ($a) use ($searchPenjual) {
$a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?",['%'.strtolower($searchPenjual).'%']) $a->whereRaw("LOWER(CONCAT(users.nama_depan,' ',users.nama_belakang)) LIKE ?", ['%' . strtolower($searchPenjual) . '%'])
->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?',['%'.strtolower($searchPenjual).'%']) ->orWhereRaw('LOWER(transactions.nama_barang) LIKE ?', ['%' . strtolower($searchPenjual) . '%'])
->orWhereRaw('LOWER(transactions.status_transaksi) LIKE ?',['%'.strtolower($searchPenjual).'%']); ->orWhereRaw('LOWER(transactions.status_transaksi) LIKE ?', ['%' . strtolower($searchPenjual) . '%']);
}); });
}else{ } else {
$subQuery->where(function($a) use ($searchPenjual){ $subQuery->where(function ($a) use ($searchPenjual) {
$a->whereDay('transactions.created_at', '=', $searchPenjual) $a->whereDay('transactions.created_at', '=', $searchPenjual)
->orWhereMonth('transactions.created_at', '=', $searchPenjual) ->orWhereMonth('transactions.created_at', '=', $searchPenjual)
->orWhereYear('transactions.created_at', '=', $searchPenjual) ->orWhereYear('transactions.created_at', '=', $searchPenjual)
@ -62,8 +56,9 @@ class PenjualController extends Controller
->addIndexColumn() ->addIndexColumn()
->addColumn('action', function ($row) { ->addColumn('action', function ($row) {
$url = route('user-transaction.show', ['id' => $row->id]); $url = route('user-transaction.show', ['id' => $row->id]);
$invoice = route('invoice.get',['id' => $row->id]); $invoice = route('invoice.get', ['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">
@ -72,44 +67,62 @@ class PenjualController 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>
<li><a class="dropdown-item" <li><a class="dropdown-item"
href="'.$invoice.'">Invoice</a> href="' .
$invoice .
'">Invoice</a>
</li> </li>
<li><a class="dropdown-item" data-toggle="modal" <li><a class="dropdown-item" data-toggle="modal"
data-target="#modalTracking" data-target="#modalTracking"
data-id="'.$row->id.'" data-id="' .
$row->id .
'"
href="#">Tracking</a> href="#">Tracking</a>
</li>
<li><a class="dropdown-item" id="denyTransaction"
data-id="'.$row->id.'"
href="#">Tolak Transaksi</a>
</li>'; </li>';
if($row->status_transaksi == 'success'){ if ($row->status_transaksi == 'success') {
$html_code .= ' $html_code .=
'
<li><a class="dropdown-item" id="processTransaction" <li><a class="dropdown-item" id="processTransaction"
data-id="'.$row->id.'" data-id="' .
$row->id .
'"
href="#">Proses Transaksi</a> href="#">Proses Transaksi</a>
</li>
<li><a class="dropdown-item" id="denyTransaction"
data-id="' .
$row->id .
'"
href="#">Tolak Transaksi</a>
</li> </li>
'; ';
} }
if($row->status_transaksi == 'progress'){ if ($row->status_transaksi == 'progress') {
$html_code .= ' $html_code .=
'
<li><a class="dropdown-item" id="sendOrder" <li><a class="dropdown-item" id="sendOrder"
data-id="'.$row->id.'" data-id="' .
$row->id .
'"
href="#">Kirim barang</a> href="#">Kirim barang</a>
</li> </li>
'; ';
} }
if($row->status_transaksi == 'sent'){ if ($row->status_transaksi == 'sent') {
$html_code .= ' $html_code .=
'
<li><a class="dropdown-item" data-toggle="modal" <li><a class="dropdown-item" data-toggle="modal"
data-target="#modalOrderSent" data-target="#modalOrderSent"
data-id="'.$row->id.'" data-id="' .
$row->id .
'"
href="#">Barang sudah sampai</a> href="#">Barang sudah sampai</a>
</li> </li>
'; ';
@ -122,7 +135,7 @@ class PenjualController extends Controller
->rawColumns(['action']) ->rawColumns(['action'])
->make(true); ->make(true);
} }
}catch(Throwable $e){ } catch (Throwable $e) {
Log::error($e->getMessage()); Log::error($e->getMessage());
return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']); return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
@ -165,44 +178,46 @@ class PenjualController extends Controller
} }
} }
public function denyTransaction(Request $request){ public function denyTransaction(Request $request)
{
$transaction = Transaction::where('id', $request->id)->first(); $transaction = Transaction::where('id', $request->id)->first();
$refund = Refund::create([
$params = [
'refund_key' => $request->id . '-ref1',
'amount' => $transaction->total_bayar,
'reason' => $request->complaint,
];
$auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
$response = Http::withOptions([
'verify' => false,
])
->withHeaders([
'Content-Type' => 'application/json',
'Authorization' => "Basic $auth",
])
->post('https://api.sandbox.midtrans.com/v2/' . $request->id . '/refund', $params);
$result = json_decode($response->body(), true);
$code = $result['status_code'];
$code = '200';
if ($code == '200') {
try {
DB::beginTransaction();
Transaction::where('id', $request->id)->update([
'status_transaksi' => 'failure',
'status_pembayaran' => 'refund',
]);
Refund::create([
'transaction_id' => $request->id, 'transaction_id' => $request->id,
'total' => $transaction->total_bayar, 'total' => $transaction->total_bayar,
'due_date' => now(), 'due_date' => now(),
'status' => 'refund', 'status' => 'refund',
'complaint' => $request->complaint 'complaint' => $request->complaint,
]);
// $params = [
// 'refund_key' => $request->id . '-ref1',
// 'amount' => $refund->total,
// 'reason' => $refund->complaint,
// ];
// $auth = base64_encode(env('MIDTRANS_SERVER_KEY'));
// $response = Http::withOptions([
// 'verify' => false,
// ])
// ->withHeaders([
// 'Content-Type' => 'application/json',
// 'Authorization' => "Basic $auth",
// ])
// ->post('https://api.sandbox.midtrans.com/v2/'.$request->id.'/refund', $params);
// $result = json_decode($response->body(), true);
// $code = $result['status_code'];
$code = '200';
if($code == '200'){
try{
DB::beginTransaction();
Transaction::where('id', $request->id)->update([
]); ]);
TransactionDescription::create([ TransactionDescription::create([
@ -210,8 +225,8 @@ class PenjualController extends Controller
'status' => 'refund', 'status' => 'refund',
'background' => 'bg-seller', 'background' => 'bg-seller',
'user' => auth()->user()->email, 'user' => auth()->user()->email,
'judul' => 'fas fa-handshake', 'judul' => 'fas fa-times',
'deskripsi' => 'Transaksi ditolak '.auth()->user()->nama_depan.', uang akan dikembalikan ke pembeli. ', 'deskripsi' => 'Transaksi ditolak ' . auth()->user()->nama_depan . ', uang akan dikembalikan ke pembeli. Alasan : ' . $request->complaint,
]); ]);
DB::commit(); DB::commit();
@ -220,7 +235,7 @@ class PenjualController extends Controller
'status' => true, 'status' => true,
'message' => 'Transaksi telah ditolak. Uang akan dikirimkan ke pembeli.', 'message' => 'Transaksi telah ditolak. Uang akan dikirimkan ke pembeli.',
]); ]);
}catch(Throwable $e){ } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();
Log::error($e->getMessage()); Log::error($e->getMessage());
@ -230,8 +245,8 @@ class PenjualController extends Controller
'message' => 'Gagal update status karena kesalahan server.', 'message' => 'Gagal update status karena kesalahan server.',
]); ]);
} }
}else{ } else {
// Log::error($result['status_message']); Log::error($result['status_message']);
return response()->json([ return response()->json([
'status' => false, 'status' => false,
@ -301,7 +316,7 @@ class PenjualController extends Controller
'background' => 'bg-seller', 'background' => 'bg-seller',
'user' => auth()->user()->email, 'user' => auth()->user()->email,
'judul' => 'fas fa-check', 'judul' => 'fas fa-check',
'deskripsi' => 'Pesanan telah sampai di tempat pembeli. Keterangan: '.$request->keterangan_bukti, 'deskripsi' => 'Pesanan telah sampai di tempat pembeli. Keterangan: ' . $request->keterangan_bukti,
'bukti_foto' => $bukti_foto, 'bukti_foto' => $bukti_foto,
]); ]);
@ -325,7 +340,7 @@ class PenjualController extends Controller
return response([ return response([
'status' => true, 'status' => true,
'message' => 'Sukses kirim data.', 'message' => 'Sukses kirim data.',
'data' => $request 'data' => $request,
]); ]);
} }
} }

View File

@ -33,6 +33,7 @@ return new class extends Migration
$table->char('kode_kelurahan',10); $table->char('kode_kelurahan',10);
$table->string('no_rek')->nullable(); $table->string('no_rek')->nullable();
$table->string('nama_bank')->nullable(); $table->string('nama_bank')->nullable();
$table->string('keterangan')->nullable();
$table->rememberToken(); $table->rememberToken();
$table->timestamps(); $table->timestamps();

View File

@ -339,6 +339,7 @@
listPembeli.ajax.reload(); listPembeli.ajax.reload();
} }
}); });
console.log(response);
}, },
error: function(fail) { error: function(fail) {
Swal.fire({ Swal.fire({
@ -352,7 +353,7 @@
}); });
}); });
$('#table-pembeli').on('click', '#cancel', function() { $('#table-pembeli').on('click', '#cancelPayment', function() {
const id = $(this).data('id'); const id = $(this).data('id');
const csrfToken = $('meta[name="csrf-token"]').attr('content'); const csrfToken = $('meta[name="csrf-token"]').attr('content');
@ -382,7 +383,7 @@
}); });
$.ajax({ $.ajax({
url: "{{ route('user-pembeli.cancel') }}", url: "{{ route('user-pembeli.cancel-payment') }}",
type: "PUT", type: "PUT",
data: { data: {
id: id id: id
@ -410,6 +411,89 @@
} }
}); });
}); });
$('#table-pembeli').on('click', '#cancelTransaction', function() {
const id = $(this).data('id');
const csrfToken = $('meta[name="csrf-token"]').attr('content');
Swal.fire({
title: 'Batalkan Transaksi?',
text: 'Apakah anda yakin untuk membatalkan transaksi?',
icon: 'question',
showCancelButton: true,
cancelButtonText: 'Tidak.',
confirmButtonText: 'Ya, batalkan transaksi.'
}).then((result) => {
if (result.isConfirmed) {
Swal.fire({
title: 'Batalkan Transaksi?',
text: 'Berikan alasan untuk membatalkan transaksi.',
input: 'text',
inputPlaceholder: 'Cth: Salah penjual.',
showCancelButton: true,
cancelButtonText: 'Batal',
confirmButtonText: 'Kirim'
}).then((a) => {
if (a.isConfirmed) {
if (a.value) {
Swal.fire({
html: '<div class="mt-3"><lord-icon src="https://cdn.lordicon.com/etwtznjn.json" trigger="loop" colors="primary:#0ab39c,secondary:#405189" style="width:120px;height:120px"></lord-icon><div class="mt-4 pt-2 fs-15"><h4>Form Anda sedang diproses!</h4><p class="text-muted mx-4 mb-0">Mohon tunggu...</p></div></div>',
allowEscapeKey: false,
allowOutsideClick: false,
didOpen: () => {
Swal.showLoading();
}
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': csrfToken
}
});
$.ajax({
url: "{{ route('user-pembeli.cancel-transaction') }}",
type: 'PUT',
data: {
id: id,
complaint: a.value
},
success: function(response) {
Swal.fire({
title: response.status ?
'Berhasil' :
'Gagal',
text: response.message,
icon: response.status ?
'success' : 'error',
}).then(function() {
Swal.close();
if (response.status) {
listPembeli.ajax
.reload();
}
});
},
error: function(error) {
Swal.fire({
title: 'Gagal',
text: 'Pemrosesan transaksi gagal',
icon: 'error'
});
}
});
} else {
Swal.fire({
title: 'Gagal',
text: 'Masukan alasan untuk membatalkan transaksi',
icon: 'error'
});
}
}
});
}
});
});
}); });
</script> </script>

View File

@ -291,16 +291,16 @@
confirmButtonText: 'Ya, tolak transaksi.' confirmButtonText: 'Ya, tolak transaksi.'
}).then((result) => { }).then((result) => {
if (result.isConfirmed) { if (result.isConfirmed) {
const { Swal.fire({
value: complaint
} = await Swal.fire({
title: 'Tolak Transaksi?', title: 'Tolak Transaksi?',
inputLabel: 'Berikan alasan untuk menolak transaksi ini', inputLabel: 'Berikan alasan untuk menolak transaksi ini',
input: 'text', input: 'text',
inputPlaceholder: 'Cth: Salah penjual.' inputPlaceholder: 'Cth: Salah penjual.',
}); showCancelButton: true,
cancelButtonText: 'Batal.'
if (complaint) { }).then((a) => {
if (a.isConfirmed) {
if (a.value) {
Swal.fire({ Swal.fire({
html: '<div class="mt-3"><lord-icon src="https://cdn.lordicon.com/etwtznjn.json" trigger="loop" colors="primary:#0ab39c,secondary:#405189" style="width:120px;height:120px"></lord-icon><div class="mt-4 pt-2 fs-15"><h4>Form Anda sedang diproses!</h4><p class="text-muted mx-4 mb-0">Mohon tunggu...</p></div></div>', html: '<div class="mt-3"><lord-icon src="https://cdn.lordicon.com/etwtznjn.json" trigger="loop" colors="primary:#0ab39c,secondary:#405189" style="width:120px;height:120px"></lord-icon><div class="mt-4 pt-2 fs-15"><h4>Form Anda sedang diproses!</h4><p class="text-muted mx-4 mb-0">Mohon tunggu...</p></div></div>',
allowEscapeKey: false, allowEscapeKey: false,
@ -321,19 +321,21 @@
type: 'PUT', type: 'PUT',
data: { data: {
id: id, id: id,
complaint: complaint complaint: a.value
}, },
success: function(response) { success: function(response) {
Swal.fire({ Swal.fire({
title: response.status ? 'Berhasil' : title: response.status ?
'Berhasil' :
'Gagal', 'Gagal',
text: response.message, text: response.message,
icon: response.status ? 'success' : icon: response.status ?
'error', 'success' : 'error',
}).then(function() { }).then(function() {
Swal.close(); Swal.close();
if (response.status) { if (response.status) {
listPenjual.ajax.reload(); listPenjual.ajax
.reload();
} }
}); });
}, },
@ -346,8 +348,16 @@
} }
}); });
} else { } else {
Swal.close(); Swal.fire({
title: 'Gagal',
text: 'Masukan alasan untuk menolak transaksi',
icon: 'error'
});
} }
}
});
} else { } else {
location.href = "{{ route('user-transaction.show', ':id') }}".replace(':id', location.href = "{{ route('user-transaction.show', ':id') }}".replace(':id',
id); id);

View File

@ -2,46 +2,104 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Verifikasi Email Pemulihan</title> <title>Document</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
<link rel="stylesheet" href="{{ asset('assets/modules/bootstrap/css/bootstrap.min.css') }}"> body {
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}"> font-family: "Arial", sans-serif;
background-color: #f4f4f4;
}
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.card {
background-color: #fff;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
padding: 20px;
max-width: 400px;
width: 100%;
}
.card-rekber {
text-align: center;
margin-bottom: 20px;
}
.large-text {
font-size: 3.5em;
font-weight: bold;
color: #b61754;
}
.small-text {
font-size: 0.8em;
color: #888;
}
.code-verifikasi,
.code,
.masa-berlaku {
margin-bottom: 15px;
}
.code-pendaftaran {
background-color: #b61754;
color: #fff;
text-align: center;
padding: 10px;
border-radius: 4px;
font-size: 3.5em;
margin: 10px 0;
font-weight: bold;
}
@media only screen and (max-width: 600px) {
.card {
max-width: 100%;
}
}
</style>
</head> </head>
<body> <body>
<div id="app"> <div class="container">
<section class="section">
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card"> <div class="card">
<div class="card-header d-flex justify-content-center bg-primary text-white font-weight-bold" <div class="card-rekber">
style="font-size: 36px; margin-bottom: -10px;"> <p class="large-text">Rekber</p>
REKBER <span class="small-text">Verifkasi Email</span>
</div>
<div class="d-flex justify-content-center bg-primary text-white">
<p class="mb-3">Verifikasi Email</p>
</div> </div>
<div class="card-body"> <div class="code-verifikasi">
<p>Rekber mengirimkan kode verifikasi ke</p> <p>Rekber mengirimkan kode verifikasi</p>
<p><b>{{ $verificationEmail['email'] }}</b></p> <p><b>{{ $verificationEmail['email'] }}</b></p>
<p class="mt-4">Gunakan kode ini untuk menyelesaikan syarat pendaftaran akun:</p>
<div class="d-flex justify-content-center">
<h1 class="verification-code">{{ $verificationEmail['code'] }}</h1>
</div> </div>
<div class="text-center">
<p><b>Masa berlaku kode ini akan berakhir dalam 2 menit.</b> </p> <div class="code">
<p>Gunakan kode ini untuk menyelesaikan syarat pendaftaraan akun:</p>
</div>
<div class="code-pendaftaran">
<p>{{ $verificationEmail['code'] }}</p>
</div>
<div class="masa-berlaku">
<p>Masa berlaku kode ini akan berakhir dalam 2 menit.</p>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</div>
</section>
</div>
</body> </body>
</html> </html>

View File

@ -3,328 +3,261 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}"> <title>Document</title>
<title>REKBER</title>
<link rel="stylesheet" href="{{ asset('assets/modules/bootstrap/css/bootstrap.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
<style> <style>
main, @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800&display=swap');
section {
display: block; * {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
} }
h1, body {
h2, width: 80%;
h3, margin: 0 auto;
h4,
h5,
h6 {
font-weight: 700;
}
.main-content {
transition: all 0.5s;
}
.main-content {
padding-left: 280px;
padding-right: 30px;
padding-top: 80px;
width: 100%;
position: relative;
}
.main-content {
padding-left: 30px;
padding-right: 30px;
width: 100% !important;
}
.section {
position: relative;
z-index: 1;
}
.section>*:first-child {
margin-top: -7px;
}
.section .section-title+.section-lead {
margin-top: -20px;
}
.section .section-buyer+.section-lead {
margin-top: -20px;
}
.section .section-seller+.section-lead {
margin-top: -20px;
}
.section .section-lead {
margin-left: 45px;
}
.section .section-title {
font-size: 18px;
color: #191d21;
font-weight: 600;
position: relative;
margin: 30px 0 25px 0;
}
.section .section-title:before {
content: " ";
border-radius: 5px;
height: 8px;
width: 30px;
background-color: #900c3f;
display: inline-block;
float: left;
margin-top: 6px;
margin-right: 15px;
}
.invoice {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03);
background-color: #fff;
border-radius: 3px;
border: none;
position: relative;
margin-bottom: 30px;
padding: 40px;
}
.invoice .invoice-title .invoice-number {
float: right;
font-size: 20px;
font-weight: 700;
margin-top: -45px;
}
.invoice hr {
margin-top: 40px;
margin-bottom: 40px;
border-top-color: #f9f9f9;
}
.invoice .invoice-detail-item {
margin-bottom: 15px;
}
.invoice .invoice-detail-item .invoice-detail-name {
letter-spacing: 0.3px;
color: #98a6ad;
margin-bottom: 4px;
}
.invoice .invoice-detail-item .invoice-detail-value {
font-size: 18px;
color: #34395e;
font-weight: 700;
}
.invoice .invoice-detail-item .invoice-detail-value.invoice-detail-value-lg {
font-size: 24px;
}
.row {
display: -ms-flexbox;
display: flex; display: flex;
-ms-flex-wrap: wrap; align-items: center;
flex-wrap: wrap; overflow-x: hidden;
margin-right: -15px;
margin-left: -15px;
} }
.col, .card {
.col-lg-12,
.col-md-6,
.col-lg-4,
.col-lg-8 {
position: relative;
width: 100%; width: 100%;
min-height: 1px; height: auto;
padding-right: 15px; border-radius: 0.5rem;
padding-left: 15px;
} }
.col-lg-12 { .info-user,
-ms-flex: 0 0 100%; .data-barang,
flex: 0 0 100%; .info-pembayaran {
max-width: 100%; border-collapse: collapse;
width: 100%;
} }
.col-md-6 { table p {
-ms-flex: 0 0 50%; font-weight: 600;
flex: 0 0 50%; text-transform: capitalize;
max-width: 50%; color: #414141;
font-size: 1rem;
} }
.col-lg-4 { table h3 {
-ms-flex: 0 0 33.333333%; font-size: 1.4rem;
flex: 0 0 33.333333%; color: #414141;
max-width: 33.333333%;
} }
.col-lg-8 { table span {
-ms-flex: 0 0 66.666667%; font-size: 0.9rem;
flex: 0 0 66.666667%;
max-width: 66.666667%;
} }
@media (min-width: 768px) { table h4 {
.text-md-left { font-weight: 600;
text-align: left !important; font-size: 1.1rem;
color: rgb(31, 31, 31);
text-transform: capitalize;
} }
.text-md-right { table label {
text-align: right !important; font-weight: 600;
text-transform: capitalize;
color: #777777;
font-size: 1rem;
} }
.text-md-center { .py-2 {
text-align: center !important; padding: 20px 0;
}
} }
.text-right { .pt-0 {
text-align: right !important; padding-top: 5px;
} }
.text-center { .pt-2 {
text-align: center !important; padding-top: 20px;
} }
.mt-4, .pt-4 {
.my-4 { padding-top: 40px;
margin-top: 1.5rem !important; }
.pr-1 {
padding-right: 10px;
}
.pl-1 {
padding-left: 10px;
}
.data-barang thead {
height: 40px;
text-transform: capitalize;
background: #900C3F;
color: whitesmoke;
font-size: 0.85rem;
}
.data-barang thead th:first-child {
border-top-left-radius: 1rem;
}
.data-barang thead th:last-child {
border-top-right-radius: 1rem;
}
.data-barang th {
padding: 10px 15px;
}
.data-barang tbody {
background: whitesmoke;
}
.data-barang tr {
height: 40px;
}
.data-barang td {
color: #414141;
font-size: 0.8rem;
padding: 10px 15px;
}
.data-barang td:nth-child(2) {
display: flex;
}
.data-barang td:first-child,
.data-barang td:nth-child(3),
.data-barang td:nth-child(4),
.data-barang th:last-child {
text-align: center;
} }
</style> </style>
</head> </head>
<body> <body>
<main id="main"> <div class="card">
<div class="main-content"> <table class="info-user">
<section class="section">
<div class="section-body">
<div class="invoice">
<div class="invoice-print">
<div class="row">
<div class="col-lg-12">
<div class="invoice-title">
<h2>Invoice</h2>
<div class="invoice-number">Order #{{ $transaction->id }}</div>
</div>
<hr>
<div class="row">
<div class="col-md-6">
<address>
<strong>Pembeli:</strong><br>
{{ ucwords(strtolower($transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang)) }}<br>
{{ ucwords(strtolower($transaction->data_pembeli->alamat)) }}<br>
{{ ucwords(strtolower($transaction->data_pembeli->getVillageName() . ', ' . $transaction->data_pembeli->getDistrictName())) }}<br>
{{ ucwords(strtolower($transaction->data_pembeli->getCityName() . ', ' . $transaction->data_pembeli->getProvinceName())) }}
</address>
</div>
<div class="col-md-6 text-md-right">
<address>
<strong>Penjual:</strong><br>
{{ ucwords(strtolower($transaction->data_penjual->nama_depan . ' ' . $transaction->data_penjual->nama_belakang)) }}<br>
{{ ucwords(strtolower($transaction->data_penjual->alamat)) }}<br>
{{ ucwords(strtolower($transaction->data_penjual->getVillageName() . ', ' . $transaction->data_penjual->getDistrictName())) }}<br>
{{ ucwords(strtolower($transaction->data_penjual->getCityName() . ', ' . $transaction->data_penjual->getProvinceName())) }}
</address>
</div>
</div>
<div class="row">
<div class="col-md-6">
<address>
<strong>Payment Method:</strong><br>
Visa ending **** 4242<br>
npannisa@gmail.com
</address>
</div>
<div class="col-md-6 text-md-right">
<address>
<strong>Tanggal Transaksi:</strong><br>
{{ $transaction->created_at->format('d M Y, g:i') }}<br><br>
</address>
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="col-lg-12">
<div class="section-title">Rangkuman Transaksi</div>
<p class="section-lead">Semua barang yang didaftarkan dalam transaksi.</p>
<div class="table-responsive">
<table class="table table-striped table-hover table-md"
style="font-size: 16px;">
<tr> <tr>
<th data-width="40">#</th> <td>
<th>Nama Barang</th> <h3>Invoice</h3>
<th class="text-center">Harga</th> </td>
<th class="text-center">Jumlah</th> <td align="end"><label>Order #8shd87ugd-18bg-273v</label></td>
<th class="text-right">Total</th>
</tr> </tr>
<tr> <tr>
<td>1</td> <td class="pt-4">
<td>{{ $transaction->nama_barang }}</td> <p>Pembeli</p>
<td class="text-center">
Rp.{{ number_format($transaction->harga_barang, 2, ',', '.') }}
</td> </td>
<td class="text-center">{{ $transaction->jumlah_barang }}</td> <td align="end" class="pt-4">
<td class="text-right"> <p>Penjual</p>
Rp.{{ number_format($transaction->total_harga, 2, ',', '.') }} </td>
</tr>
<tr>
<td><span>Septea</span></td>
<td align="end"><span>Takapedia Top Up</span></td>
</tr>
<tr>
<td class="pt-0">
<p>Alamat Pembeli</p>
</td>
<td align="end" class="pt-0">
<p>Alamat Penjual</p>
</td>
</tr>
<tr>
<td class="pr-1"><span>Pondok ponogoro jl.raya bogor no.26 rt 2/2Pondok ponogoro jl.raya bogor no.26
rt 2/2</span></td>
<td align="end" class="pl-1"><span>Pondok ponogoro jl.raya bogor no.26 rt 2/2Pondok ponogoro
jl.raya bogor no.26 rt 2/2</span></td>
</tr>
<tr>
<td class="pt-4">
<p>Payment Method</p>
<td align="end" class="pt-4">
<p>Tanggal Transaksi</p>
</td>
</tr>
<tr>
<td><span>visa ending ***4352</span></td>
<td align="end"><span>11 Nov 2023, 12:06</span></td>
</tr>
<tr>
<td align="end" class="pt-0" colspan="2">
<p>email</p>
</td>
</tr>
<tr>
<td align="end" colspan="2"><span>ripannisa@gmail.com</span></td>
</tr>
<tr>
<td class="pt-4">
<h4>Rangkuman Barang</h4>
</td>
<td></td>
</tr>
<tr>
<td align="start" colspan="2"><span>Semua barang yang di daftarkan dalam transaksi</span></td>
</tr>
</table>
<div class="table">
</div>
<table class="data-barang pt-2">
<thead>
<th>#</th>
<th>nama barang</th>
<th>harga</th>
<th>jumlah</th>
<th>total</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Iphone 17 Pro Max</td>
<td>Rp.17.994.592,00</td>
<td>2</td>
<td align="end">Rp.35.989.184,00</td>
</tr>
</tbody>
</table>
<table class="info-pembayaran">
<tr>
<td class="pt-4">
<h4>metode pembayaran</h4>
</td>
<td align="end" class="pt-4"><label>subtotal</label></td>
</tr>
<tr>
<td align="end" colspan="2">
<p>Rp.35.989.184,00</p>
</td>
</tr>
<tr>
<td align="end" colspan="2" class="pt-1"><label>biaya admin</label></td>
</tr>
<tr>
<td align="end" colspan="2">
<p>Rp.30.000,00</p>
</td>
</tr>
<tr>
<td></td>
<td class="py-2">
<hr>
</td>
</tr>
<tr>
<td align="end" colspan="2"><label>total</label></td>
</tr>
<tr>
<td align="end" colspan="2">
<p>Rp.30.000,00</p>
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div class="row mt-4">
<div class="col-lg-8">
<div class="section-title">Metode Pembayaran</div>
<div class="images">
@if ($transaction->metode_pembayaran != null)
<img style="width: 20%; height: 20%;"
src="{{ asset('assets/img/metode_pembayaran/' . $transaction->metode_pembayaran . '.png') }}"
alt="{{ $transaction->metode_pembayaran }}">
@endif
</div>
</div>
<div class="col-lg-4 text-right">
<div class="invoice-detail-item">
<div class="invoice-detail-name">Subtotal</div>
<div class="invoice-detail-value">
Rp.{{ number_format($transaction->total_harga, 2, ',', '.') }}
</div>
</div>
<div class="invoice-detail-item">
<div class="invoice-detail-name">Biaya Admin</div>
<div class="invoice-detail-value">
Rp.{{ number_format($transaction->total_keuntungan, 2, ',', '.') }}
</div>
</div>
<hr>
<div class="invoice-detail-item">
<div class="invoice-detail-name">Total</div>
<div class="invoice-detail-value invoice-detail-value-lg">
Rp.{{ number_format($transaction->total_bayar, 2, ',', '.') }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</main>
</body> </body>
</html> </html>

View File

@ -174,13 +174,14 @@ Route::middleware(['auth'])->group(function(){
}); });
// Pembeli // Pembeli
Route::controller(PenjualController::class)->group(function(){ Route::controller(PembeliController::class)->group(function(){
Route::get('user-pembeli','indexPembeli')->name('user-pembeli.index'); Route::get('user-pembeli','indexPembeli')->name('user-pembeli.index');
Route::get('user-pembeli/list-pembeli','listPembeli')->name('user-pembeli.list-pembeli'); Route::get('user-pembeli/list-pembeli','listPembeli')->name('user-pembeli.list-pembeli');
Route::get('user-pembeli/tambah-transaksi','create')->name('user-pembeli.create'); Route::get('user-pembeli/tambah-transaksi','create')->name('user-pembeli.create');
Route::post('user-pembeli','store')->name('user-pembeli.store'); Route::post('user-pembeli','store')->name('user-pembeli.store');
Route::put('user-pembeli/bayar-transaksi','payTransaction')->name('user-pembeli.pay'); Route::put('user-pembeli/bayar-transaksi','payTransaction')->name('user-pembeli.pay');
Route::put('user-pembeli/batal-transaksi','cancelTransaction')->name('user-pembeli.cancel'); Route::put('user-pembeli/batal-pembayaran','cancelPayment')->name('user-pembeli.cancel-payment');
Route::put('user-pembeli/batal-transaksi','cancelTransaction')->name('user-pembeli.cancel-transaction');
Route::put('user-pembeli/transaksi-pending', 'pendingTransaction')->name('user-pembeli.pending'); Route::put('user-pembeli/transaksi-pending', 'pendingTransaction')->name('user-pembeli.pending');
Route::put('user-pembeli/transaksi-error','onErrorTransaction')->name('user-pembeli.error'); Route::put('user-pembeli/transaksi-error','onErrorTransaction')->name('user-pembeli.error');
Route::put('user-pembeli/transaksi-close','onCloseTransaction')->name('user-pembeli.close'); Route::put('user-pembeli/transaksi-close','onCloseTransaction')->name('user-pembeli.close');
@ -189,10 +190,10 @@ Route::middleware(['auth'])->group(function(){
}); });
// Penjual // Penjual
Route::controller(PembeliController::class)->group(function(){ Route::controller(PenjualController::class)->group(function(){
Route::get('user-penjual','indexPenjual')->name('user-penjual.index'); Route::get('user-penjual','indexPenjual')->name('user-penjual.index');
Route::get('user-penjual/list-penjual','listPenjual')->name('user-penjual.list-penjual'); Route::get('user-penjual/list-penjual','listPenjual')->name('user-penjual.list-penjual');
Route::get('user-penjual/tolak-transaksi','denyTransaction')->name('user-penjual.deny'); Route::put('user-penjual/tolak-transaksi','denyTransaction')->name('user-penjual.deny');
Route::put('user-penjual/terima-transaksi','acceptTransaction')->name('user-penjual.accept'); Route::put('user-penjual/terima-transaksi','acceptTransaction')->name('user-penjual.accept');
Route::put('user-penjual/kirim-pesanan','sendingOrder')->name('user-penjual.sending'); Route::put('user-penjual/kirim-pesanan','sendingOrder')->name('user-penjual.sending');
Route::post('user-penjual/selesai-kirim-pesanan','sentOrder')->name('user-penjual.sent'); Route::post('user-penjual/selesai-kirim-pesanan','sentOrder')->name('user-penjual.sent');