Transaksi ke midtrans
This commit is contained in:
parent
6c18bb1a52
commit
ce8b355248
@ -4,14 +4,33 @@ namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Transactions;
|
||||
use App\Models\Transaction;
|
||||
use App\Models\Refund;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class AdminDashboardController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
$sumSettlement = 0;
|
||||
$sumCancelled = 0;
|
||||
$sumRefund = 0;
|
||||
$currentYear = Carbon::now()->year;
|
||||
$dataChartTransaction = [];
|
||||
$dataChartRefund = [];
|
||||
for($bulan = 1; $bulan <= 12; $bulan++){
|
||||
$transaction = Transaction::whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total_bayar');
|
||||
// $transaction = Transaction::where('status','finished')->whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total_bayar');
|
||||
// $refund = Refund::whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total');
|
||||
// $refund = Refund::where('status','Partial Refund')->whereMonth('created_at',$bulan)->whereYear('created_at', $currentYear)->sum('total');
|
||||
$dataChartTransaction[] = intval($transaction);
|
||||
// $dataChartRefund[] = intval($refund);
|
||||
}
|
||||
return view('admin.index',[
|
||||
"transaction"=>Transactions::allTransactions()
|
||||
"transaction"=>Transactions::allTransactions(),
|
||||
"dataChartTransaction" => $dataChartTransaction,
|
||||
// "dataChartRefund" => $dataChartRefund
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -34,10 +34,6 @@ class LoginController extends Controller
|
||||
|
||||
public function login()
|
||||
{
|
||||
$provinces = Province::all();
|
||||
$cities = City::all();
|
||||
$districts = District::all();
|
||||
$villages = Village::all();
|
||||
return view('index');
|
||||
}
|
||||
|
||||
@ -49,10 +45,18 @@ class LoginController extends Controller
|
||||
public function authenticate(Request $request)
|
||||
{
|
||||
// dd($request);
|
||||
$credentials = $request->validate([
|
||||
'email' => ['required', 'email'],
|
||||
'password' => ['required', 'min:8'],
|
||||
]);
|
||||
$credentials = $request->validate(
|
||||
[
|
||||
'email' => ['required', 'email'],
|
||||
'password' => ['required', 'min:8'],
|
||||
],
|
||||
[
|
||||
'email.required' => 'Alamat email wajib diisi.',
|
||||
'email.email' => 'Alamat email harus berformat valid.',
|
||||
'password.required' => 'Password wajib diisi.',
|
||||
'password.min' => 'Password harus memiliki panjang minimal 8 karakter.',
|
||||
]
|
||||
);
|
||||
|
||||
if (Auth::attempt($credentials)) {
|
||||
if (Auth::user()->status == 'Finished') {
|
||||
@ -63,17 +67,22 @@ class LoginController extends Controller
|
||||
} else {
|
||||
return redirect()->intended('user');
|
||||
}
|
||||
} else if(Auth::user()->status == 'Rejected'){
|
||||
Session::flash('message', 'Akun ditolak karena tidak memenuhi persyaratan');
|
||||
return redirect()->back();
|
||||
} else {
|
||||
Session::flash('message', 'Akun tidak ditemukan atau sedang dalam pengajuan');
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
||||
// $error = $credentials->errors();
|
||||
// ->withInput($request->except('key'))
|
||||
// ->withErrors($validator)
|
||||
|
||||
return redirect()
|
||||
->back()
|
||||
->withErrors([
|
||||
'email' => 'Email dengan' . $credentials['email'] . ' tidak tersedia.',
|
||||
])
|
||||
->withErrors($credentials)
|
||||
->onlyInput('email');
|
||||
}
|
||||
|
||||
@ -95,7 +104,6 @@ class LoginController extends Controller
|
||||
|
||||
public function register(Request $request)
|
||||
{
|
||||
// input
|
||||
$nama_depan = $request->get('nama-depan');
|
||||
$nama_belakang = $request->get('nama-belakang');
|
||||
$tanggal_lahir = $request->get('tanggal-lahir');
|
||||
@ -147,7 +155,7 @@ class LoginController extends Controller
|
||||
$namaOCR = '';
|
||||
$nikOCR = '';
|
||||
$nikInputan = $nik;
|
||||
$namaInputan = $nama_depan.' '.$nama_belakang;
|
||||
$namaInputan = $nama_depan . ' ' . $nama_belakang;
|
||||
|
||||
foreach ($lines as $line) {
|
||||
// Mencari NIK
|
||||
@ -163,7 +171,7 @@ class LoginController extends Controller
|
||||
|
||||
//Selesai
|
||||
|
||||
$persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent))/2;
|
||||
$persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2;
|
||||
// $status = 'Progress';
|
||||
|
||||
// if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) {
|
||||
@ -171,7 +179,6 @@ class LoginController extends Controller
|
||||
// } else {
|
||||
// $status = 'Progress';
|
||||
// }
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// $status = 'Progress';
|
||||
}
|
||||
@ -264,30 +271,31 @@ class LoginController extends Controller
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
public function kirimKodeVerifikasi(Request $request){
|
||||
public function kirimKodeVerifikasi(Request $request)
|
||||
{
|
||||
$email = $request->get('email');
|
||||
$code = $request->get('code');
|
||||
|
||||
$verificationEmail = [
|
||||
'code' => $code,
|
||||
'email' => $email
|
||||
'email' => $email,
|
||||
];
|
||||
try{
|
||||
try {
|
||||
Mail::to($email)->send(new verificationMail($verificationEmail));
|
||||
return response()->json([
|
||||
'message' => 'Kode verifikasi berhasil dikirim ke email. Silahkan cek di email anda.',
|
||||
'status' => true,
|
||||
]);
|
||||
|
||||
}catch(\Exception $e){
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Kode verifikasi gagal dikirim ke email. '.$e,
|
||||
'message' => 'Kode verifikasi gagal dikirim ke email. ' . $e,
|
||||
'status' => false,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function getOcr(){
|
||||
public function getOcr()
|
||||
{
|
||||
//OCR
|
||||
// dd(phpinfo());
|
||||
try {
|
||||
@ -325,7 +333,7 @@ class LoginController extends Controller
|
||||
|
||||
//Selesai
|
||||
|
||||
$persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent))/2;
|
||||
$persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent)) / 2;
|
||||
// $status = 'Progress';
|
||||
|
||||
dd([$persentase_kemiripan, $lines]);
|
||||
@ -335,7 +343,6 @@ class LoginController extends Controller
|
||||
// } else {
|
||||
// $status = 'Progress';
|
||||
// }
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// $status = 'Progress';
|
||||
dd($e);
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\User;
|
||||
|
||||
use App\Models\Transaction;
|
||||
use App\Models\TransactionDescription;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Http\Request;
|
||||
@ -14,6 +15,7 @@ use Illuminate\Support\Facades\Auth;
|
||||
use Ramsey\Uuid\Uuid;
|
||||
use Midtrans\Config;
|
||||
use Midtrans\Snap;
|
||||
use Midtrans\Transaction as Trans;
|
||||
|
||||
class UserTransactionController extends Controller
|
||||
{
|
||||
@ -23,9 +25,11 @@ class UserTransactionController extends Controller
|
||||
public function indexPembeli()
|
||||
{
|
||||
return view('user.transaction.pembeli.index', [
|
||||
'name' => 'npannisa',
|
||||
'TransactionUser' => TransactionUser::HistoryTransaction(),
|
||||
'transactions' => Transaction::where('pembeli', Auth::user()->email)
|
||||
->latest()
|
||||
->get(),
|
||||
]);
|
||||
// dd(Transaction::where('pembeli',Auth::user()->email)->get());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,18 +37,19 @@ class UserTransactionController extends Controller
|
||||
*/
|
||||
public function indexPenjual()
|
||||
{
|
||||
return view('user.transaction.penjual.transaction-penjual', [
|
||||
'name' => 'npannisa',
|
||||
'TransactionUser' => TransactionUser::HistoryTransaction(),
|
||||
return view('user.transaction.penjual.index', [
|
||||
'transactions' => Transaction::where('penjual', Auth::user()->email)->get(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function detailTransaction($id)
|
||||
{
|
||||
return view('user.transaction.pembeli.detail-transaction', [
|
||||
'name' => 'npannisa',
|
||||
'TransactionUser' => TransactionUser::HistoryTransaction(),
|
||||
'transaction' => Transaction::findOrFail($id),
|
||||
'trackings' => TransactionDescription::where('order_id', $id)->get(),
|
||||
]);
|
||||
|
||||
// dd(Transaction::findOrFail($id));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -52,10 +57,7 @@ class UserTransactionController extends Controller
|
||||
*/
|
||||
public function createTransaction(Request $request)
|
||||
{
|
||||
return view('user.transaction.pembeli.new-transaction', [
|
||||
'name' => 'npannisa',
|
||||
'TransactionUser' => TransactionUser::HistoryTransaction(),
|
||||
]);
|
||||
return view('user.transaction.pembeli.new-transaction');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -82,40 +84,69 @@ class UserTransactionController extends Controller
|
||||
$nama_depan_pembeli = Auth::user()->nama_depan;
|
||||
$nama_belakang_pembeli = Auth::user()->nama_belakang;
|
||||
$nohp_pembeli = Auth::user()->nohp;
|
||||
$nama_penjual = User::where('email', $penjual);
|
||||
$nama_penjual = User::where('email', $penjual)->value('nama_depan');
|
||||
$alamat = ucwords(strtolower(Auth::user()->alamat));
|
||||
$id = Uuid::uuid4();
|
||||
|
||||
$now = Carbon::now();
|
||||
$now = Carbon::now()->tz('Asia/Jakarta');
|
||||
$bulan = $now->format('F');
|
||||
$tahun = $now->year;
|
||||
|
||||
// $persentase_keuntungan = Setting::where('status','Active')
|
||||
// ->where('bulan','=',$bulan)
|
||||
// ->where('tahun','=',$tahun)->get();
|
||||
$persentase_keuntungan = floatval('5');
|
||||
$persentase_keuntungan = $request->get('persentase_keuntungan');
|
||||
|
||||
$total_harga = $jumlah_barang * $harga_barang;
|
||||
$total_keuntungan = $persentase_keuntungan * $total_harga;
|
||||
$biaya_admin = 0.1;
|
||||
$total_bayar = intval($biaya_admin + $total_keuntungan + $total_harga);
|
||||
$total_harga = $request->get('total_harga');
|
||||
$total_keuntungan = $request->get('total_keuntungan');
|
||||
$total_bayar = $request->get('total_bayar');
|
||||
|
||||
$batas_pembayaran = $now->addDays(1)->toDateTimeString();
|
||||
$batas_pengiriman_barang_awal = $now->addDays(2)->toDateTimeString();
|
||||
$batas_pengiriman_barang_akhir = $now->addDays(5)->toDateTimeString();
|
||||
|
||||
$params = [
|
||||
'transaction_details' => [
|
||||
'order_id' => Uuid::uuid4(),
|
||||
'order_id' => $id,
|
||||
'gross_amount' => $total_bayar,
|
||||
],
|
||||
'item_details' => [
|
||||
[
|
||||
'id' => $nama_barang.time(),
|
||||
'price' => $total_bayar,
|
||||
'quantity' => 1,
|
||||
'id' => $nama_barang . time(),
|
||||
'price' => $harga_barang,
|
||||
'quantity' => $jumlah_barang,
|
||||
'name' => $nama_barang,
|
||||
],
|
||||
[
|
||||
'id' => 'BA01',
|
||||
'price' => $total_keuntungan,
|
||||
'quantity' => 1,
|
||||
'name' => 'Biaya Admin',
|
||||
],
|
||||
],
|
||||
'customer_details' => [
|
||||
'firts_name' => $nama_depan_pembeli,
|
||||
'last_name' => $nama_belakang_pembeli,
|
||||
'email' => $pembeli,
|
||||
'phone' => $nohp_pembeli,
|
||||
'billing' => [
|
||||
'first_name' => $nama_depan_pembeli,
|
||||
'last_name' => $nama_belakang_pembeli,
|
||||
'email' => $pembeli,
|
||||
'phone' => $nohp_pembeli,
|
||||
'address' => Auth::user()->alamat,
|
||||
'city' => '',
|
||||
'postal_code' => '12190',
|
||||
'country_code' => 'IDN',
|
||||
],
|
||||
],
|
||||
'callbacks' => [
|
||||
'finish' => 'http://127.0.0.1:8000/user/user-transaction-pembeli/',
|
||||
],
|
||||
'expiry' => [
|
||||
'start_time' => $now->format('Y-m-d H:i:s P'),
|
||||
'unit' => 'days',
|
||||
'duration' => 1,
|
||||
],
|
||||
];
|
||||
|
||||
@ -128,11 +159,9 @@ class UserTransactionController extends Controller
|
||||
|
||||
$snap_token = Snap::getSnapToken($params);
|
||||
$token = $snap_token;
|
||||
$batas_pembayaran = $now->addDays(2)->toDateTimeString();
|
||||
$batas_pengiriman_barang = $now->addDays(6)->toDateTimeString();
|
||||
$status = 'Pending';
|
||||
$status = 'pending';
|
||||
$query = Transaction::create([
|
||||
'id' => Uuid::uuid4(),
|
||||
'id' => $id,
|
||||
'pembeli' => $pembeli,
|
||||
'penjual' => $penjual,
|
||||
'nama_barang' => $nama_barang,
|
||||
@ -142,32 +171,79 @@ class UserTransactionController extends Controller
|
||||
'jumlah_barang' => $jumlah_barang,
|
||||
'persentase_keuntungan' => $persentase_keuntungan,
|
||||
'total_keuntungan' => $total_keuntungan,
|
||||
'biaya_admin' => $biaya_admin,
|
||||
'total_harga' => $total_harga,
|
||||
'total_bayar' => $total_bayar,
|
||||
'token' => $token,
|
||||
'status' => $status,
|
||||
'batas_pembayaran' => $batas_pembayaran,
|
||||
'batas_pengiriman_barang' => $batas_pengiriman_barang,
|
||||
'batas_pengiriman_barang_awal' => $batas_pengiriman_barang_awal,
|
||||
'batas_pengiriman_barang_akhir' => $batas_pengiriman_barang_akhir,
|
||||
]);
|
||||
|
||||
return response()->json($query);
|
||||
if ($query) {
|
||||
TransactionDescription::create([
|
||||
'order_id' => $id,
|
||||
'status' => $status,
|
||||
'user' => $pembeli,
|
||||
'judul' => 'fa fa-plus',
|
||||
'background' => 'bg-buyer',
|
||||
'deskripsi' => $nama_depan_pembeli . ' telah membuat transaksi baru dengan ' . $nama_penjual,
|
||||
]);
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Berhasil menambahkan transaksi. Silahkan lakukan pembayaran.',
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Gagal menambahkan transaksi.',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// $result_api = json_decode($response->body(), true);
|
||||
public function updateStatusTransaction(Request $request)
|
||||
{
|
||||
}
|
||||
|
||||
// $token = '124';
|
||||
// $redirect_url = 'haha';
|
||||
public function acceptTransaction(Request $request)
|
||||
{
|
||||
}
|
||||
|
||||
// // save to db
|
||||
// $payment = new payment;
|
||||
// $payment->order_id = $params['transaction_details'][ 'order_id'];
|
||||
// $payment->status = 'pending';
|
||||
// $payment->price = $request->price;
|
||||
// $payment->customer_firts_name = $request->customer_firts_name;
|
||||
// $payment->customer_email = $request->customer_email;
|
||||
// $payment->item_name = $request->item_name;
|
||||
// $payment->checkout_link = $response['redirect_url'];
|
||||
// $payment->save();
|
||||
public function paymentTransaction(Request $request, $id)
|
||||
{
|
||||
Config::$serverKey = 'SB-Mid-server-8rydZAwKoWuoQ6g_3ot0-K7p';
|
||||
Config::$isProduction = false;
|
||||
// Set sanitization on (default)
|
||||
Config::$isSanitized = true;
|
||||
// Set 3DS transaction for credit card to true
|
||||
Config::$is3ds = true;
|
||||
|
||||
$payment = Trans::status($id);
|
||||
$result = json_decode(json_encode($payment), true);
|
||||
$query = Transaction::where('id', $id)->update([
|
||||
'acquire' => $result['acquirer'],
|
||||
'currency' => $result['currency'],
|
||||
'fraud_status' => $result['fraud_status'],
|
||||
'issuer' => $result['issuer'],
|
||||
'merchant_id' => $result['merchant_id'],
|
||||
'metode_pembayaran' => $result['payment_type'],
|
||||
'tanggal_pembayaran' => $result['settlement_time'],
|
||||
'signature_key' => $result['signature_key'],
|
||||
'status' => $result['transaction_status'],
|
||||
'tipe_transaction' => $result['transaction_type'],
|
||||
'status_code' => $result['status_code'],
|
||||
]);
|
||||
if ($query) {
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Pembayaran sukses. Proses akan dilanjutkan ke penjual',
|
||||
]);
|
||||
} else {
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Pembayaran gagal',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,6 +18,8 @@ class TransactionDescription extends Model
|
||||
'order_id',
|
||||
'user',
|
||||
'judul',
|
||||
'status',
|
||||
'background',
|
||||
'deskripsi'
|
||||
];
|
||||
|
||||
|
@ -25,13 +25,13 @@ class Transaction extends Model
|
||||
'jumlah_barang',
|
||||
'persentase_keuntungan',
|
||||
'total_keuntungan',
|
||||
'biaya_admin',
|
||||
'total_harga',
|
||||
'total_bayar',
|
||||
'token',
|
||||
'status',
|
||||
'batas_pembayaran',
|
||||
'batas_pengiriman_barang',
|
||||
'batas_pengiriman_barang_awal',
|
||||
'batas_pengiriman_barang_akhir',
|
||||
];
|
||||
|
||||
/**
|
||||
@ -46,12 +46,12 @@ class Transaction extends Model
|
||||
];
|
||||
|
||||
//Relasi
|
||||
public function pembeli(){
|
||||
return $this->belongsTo(User::class, 'email', 'pembeli');
|
||||
public function data_pembeli(){
|
||||
return $this->belongsTo(User::class, 'pembeli', 'email');
|
||||
}
|
||||
|
||||
public function penjual(){
|
||||
return $this->belongsTo(User::class, 'email', 'penjual');
|
||||
public function data_penjual(){
|
||||
return $this->belongsTo(User::class, 'penjual', 'email');
|
||||
}
|
||||
|
||||
public function refunds(){
|
||||
|
@ -22,15 +22,23 @@ return new class extends Migration
|
||||
$table->double('jumlah_barang');
|
||||
$table->double('persentase_keuntungan'); // persentase keuntungan
|
||||
$table->double('total_keuntungan'); // perolehan keuntungan
|
||||
$table->double('biaya_admin'); // biaya tambahan
|
||||
$table->double('total_harga'); // gross amount
|
||||
$table->double('total_bayar');
|
||||
$table->string('signature_key')->nullable();
|
||||
$table->string('token');
|
||||
$table->string('metode_pembayaran')->nullable();
|
||||
$table->enum('status',['Settlement','Capture','Pending','Cancel','Refund','Expire','Failure','Progress','Failed'])->default('Pending'); // transaction_status
|
||||
$table->string('acquire')->nullable();
|
||||
$table->string('issuer')->nullable();
|
||||
$table->char('currency',3)->nullable();
|
||||
$table->string('fraud_status')->nullable();
|
||||
$table->string('merchant_id')->nullable();
|
||||
$table->string('status_code')->nullable();
|
||||
$table->string('tipe_transaction')->nullable();
|
||||
$table->enum('status',['settlement','capture','pending','cancel','refund','expire','failure','progress','failed','sending','sended','finished'])->default('pending'); // transaction_status
|
||||
$table->timestamp('batas_pembayaran');
|
||||
$table->timestamp('batas_pengiriman_barang');
|
||||
$table->timestamp('batas_pengiriman_barang_awal');
|
||||
$table->timestamp('batas_pengiriman_barang_akhir');
|
||||
$table->timestamp('tanggal_pembayaran')->nullable();
|
||||
$table->timestamps();
|
||||
$table->foreign('pembeli')->on('users')->references('email');
|
||||
$table->foreign('penjual')->on('users')->references('email');
|
||||
|
@ -16,8 +16,8 @@ return new class extends Migration
|
||||
$table->foreignUuid('order_id');
|
||||
$table->double('total',10);
|
||||
$table->timestamp('due_date');
|
||||
$table->enum('status',['Partial Refund','Deny','Pending'])->default('Pending');
|
||||
|
||||
$table->enum('status',['partial refund','deny','pending'])->default('Pending');
|
||||
$table->timestamps();
|
||||
$table->foreign('order_id')->on('transactions')->references('id');
|
||||
});
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ return new class extends Migration
|
||||
$table->id();
|
||||
$table->string('bulan',20);
|
||||
$table->string('tahun',5);
|
||||
$table->string('persentase',5);
|
||||
$table->integer('persentase');
|
||||
$table->enum('status',['Active', 'Nonactive']);
|
||||
$table->timestamps();
|
||||
});
|
||||
|
@ -16,6 +16,7 @@ return new class extends Migration
|
||||
$table->foreignUuid('order_id');
|
||||
$table->string('status',15);
|
||||
$table->string('user');
|
||||
$table->string('background');
|
||||
$table->string('judul');
|
||||
$table->string('deskripsi');
|
||||
$table->timestamps();
|
||||
|
@ -5,6 +5,8 @@ namespace Database\Seeders;
|
||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use App\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Support\Str;
|
||||
use Faker\Factory as FakerFactory;
|
||||
use Faker\Provider\id_ID\Person as Person;
|
||||
@ -33,22 +35,26 @@ class DatabaseSeeder extends Seeder
|
||||
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
|
||||
'remember_token' => Str::random(10),
|
||||
'role' => 'Admin',
|
||||
'nik' => $faker->nik($faker->randomElement(['male','female']), $faker->dateTimeBetween('-65 years', '-18 years')),
|
||||
'alamat'=> $faker->address,
|
||||
'nohp'=> $faker->phoneNumber(),
|
||||
'status'=> 'Finished',
|
||||
'nik' => $faker->nik($faker->randomElement(['male', 'female']), $faker->dateTimeBetween('-65 years', '-18 years')),
|
||||
'alamat' => $faker->address,
|
||||
'nohp' => $faker->phoneNumber(),
|
||||
'status' => 'Finished',
|
||||
'persentase_kemiripan' => '100%',
|
||||
'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']),
|
||||
'kode_kelurahan' => '1101012002',
|
||||
]);
|
||||
User::factory(20)->create();
|
||||
|
||||
$this->call([
|
||||
ProvincesSeeder::class,
|
||||
CitiesSeeder::class,
|
||||
DistrictsSeeder::class,
|
||||
VillagesSeeder::class,
|
||||
$now = Carbon::now()->tz('Asia/Jakarta');
|
||||
$bulan = $now->format('F');
|
||||
$tahun = $now->year;
|
||||
Setting::factory()->create([
|
||||
'bulan' => $bulan,
|
||||
'tahun' => $tahun,
|
||||
'persentase' => 5,
|
||||
'status' => 'Active'
|
||||
]);
|
||||
|
||||
$this->call([ProvincesSeeder::class, CitiesSeeder::class, DistrictsSeeder::class, VillagesSeeder::class]);
|
||||
}
|
||||
}
|
||||
|
@ -83,6 +83,14 @@ a:not(.btn-social-icon):not(.btn-social):not(.page-link) .fab {
|
||||
background-color: #ba2760 !important;
|
||||
}
|
||||
|
||||
.bg-buyer {
|
||||
background-color: #d6760f !important;
|
||||
}
|
||||
|
||||
.bg-seller {
|
||||
background-color: #02a393 !important;
|
||||
}
|
||||
|
||||
.bg-secondary {
|
||||
background-color: #cdd3d8 !important;
|
||||
}
|
||||
@ -3486,10 +3494,58 @@ pre {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.section .section-buyer {
|
||||
font-size: 18px;
|
||||
color: #191d21;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
margin: 30px 0 25px 0;
|
||||
}
|
||||
|
||||
.section .section-buyer:before {
|
||||
content: " ";
|
||||
border-radius: 5px;
|
||||
height: 8px;
|
||||
width: 30px;
|
||||
background-color: #d6760f;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
margin-top: 6px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.section .section-seller {
|
||||
font-size: 18px;
|
||||
color: #191d21;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
margin: 30px 0 25px 0;
|
||||
}
|
||||
|
||||
.section .section-seller:before {
|
||||
content: " ";
|
||||
border-radius: 5px;
|
||||
height: 8px;
|
||||
width: 30px;
|
||||
background-color: #0cf9e1;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
margin-top: 6px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
@ -3509,6 +3565,14 @@ pre {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.section .section-buyer {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.section .section-seller {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.section .section-header {
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 20px !important;
|
||||
|
@ -52,6 +52,6 @@ $("#table-2").dataTable({
|
||||
|
||||
// Transaksi pembeli
|
||||
$("#table-3").dataTable({
|
||||
columnDefs: [{ sortable: false, targets: [6] }],
|
||||
columnDefs: [{ sortable: false, targets: [5] }],
|
||||
searchable: true,
|
||||
});
|
||||
|
4092
public/assets/modules/fontawesome/css/all.css
vendored
4092
public/assets/modules/fontawesome/css/all.css
vendored
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@
|
||||
<div class="card card-statistic-2">
|
||||
<div class="card-stats">
|
||||
<div class="card-stats-title">List Transaction -
|
||||
<div class="dropdown d-inline">
|
||||
{{-- <div class="dropdown d-inline">
|
||||
<a class="font-weight-600 dropdown-toggle" data-toggle="dropdown" href="#"
|
||||
id="orders-month">August</a>
|
||||
<ul class="dropdown-menu dropdown-menu-sm">
|
||||
@ -26,7 +26,7 @@
|
||||
<li><a href="#" class="dropdown-item">November</a></li>
|
||||
<li><a href="#" class="dropdown-item">December</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
<div class="card-stats-items">
|
||||
<div class="card-stats-item">
|
||||
@ -41,6 +41,10 @@
|
||||
<div class="card-stats-item-count">23</div>
|
||||
<div class="card-stats-item-label">Canceled</div>
|
||||
</div>
|
||||
<div class="card-stats-item">
|
||||
<div class="card-stats-item-count">23</div>
|
||||
<div class="card-stats-item-label">Refund</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-icon shadow-primary bg-primary">
|
||||
@ -170,8 +174,7 @@
|
||||
<div class="card-header">
|
||||
<h4>Top 5 Users</h4>
|
||||
<div class="card-header-action dropdown">
|
||||
<a href="#" data-toggle="dropdown"
|
||||
class="btn btn-primary dropdown-toggle">Month</a>
|
||||
<a href="#" data-toggle="dropdown" class="btn btn-primary dropdown-toggle">Month</a>
|
||||
<ul class="dropdown-menu dropdown-menu-sm dropdown-menu-right">
|
||||
<li class="dropdown-title">Select Period</li>
|
||||
<li><a href="#" class="dropdown-item">Today</a></li>
|
||||
@ -184,8 +187,8 @@
|
||||
<div class="card-body" id="top-5-scroll">
|
||||
<ul class="list-unstyled list-unstyled-border">
|
||||
<li class="media">
|
||||
<img class="mr-3 rounded" width="55" src="{{asset('assets/img/avatar/avatar-6.png')}}"
|
||||
alt="product">
|
||||
<img class="mr-3 rounded" width="55"
|
||||
src="{{ asset('assets/img/avatar/avatar-6.png') }}" alt="product">
|
||||
<div class="media-body">
|
||||
<div class="float-right">
|
||||
<div class="font-weight-600 text-muted text-small">86 Sales</div>
|
||||
@ -204,8 +207,8 @@
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<img class="mr-3 rounded" width="55" src="{{asset('assets/img/avatar/avatar-1.png')}}"
|
||||
alt="product">
|
||||
<img class="mr-3 rounded" width="55"
|
||||
src="{{ asset('assets/img/avatar/avatar-1.png') }}" alt="product">
|
||||
<div class="media-body">
|
||||
<div class="float-right">
|
||||
<div class="font-weight-600 text-muted text-small">67 Sales</div>
|
||||
@ -224,8 +227,8 @@
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<img class="mr-3 rounded" width="55" src="{{asset('assets/img/avatar/avatar-2.png')}}"
|
||||
alt="product">
|
||||
<img class="mr-3 rounded" width="55"
|
||||
src="{{ asset('assets/img/avatar/avatar-2.png') }}" alt="product">
|
||||
<div class="media-body">
|
||||
<div class="float-right">
|
||||
<div class="font-weight-600 text-muted text-small">63 Sales</div>
|
||||
@ -244,8 +247,8 @@
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<img class="mr-3 rounded" width="55" src="{{asset('assets/img/avatar/avatar-3.png')}}"
|
||||
alt="product">
|
||||
<img class="mr-3 rounded" width="55"
|
||||
src="{{ asset('assets/img/avatar/avatar-3.png') }}" alt="product">
|
||||
<div class="media-body">
|
||||
<div class="float-right">
|
||||
<div class="font-weight-600 text-muted text-small">28 Sales</div>
|
||||
@ -264,8 +267,8 @@
|
||||
</div>
|
||||
</li>
|
||||
<li class="media">
|
||||
<img class="mr-3 rounded" width="55" src="{{asset('assets/img/avatar/avatar-4.png')}}"
|
||||
alt="product">
|
||||
<img class="mr-3 rounded" width="55"
|
||||
src="{{ asset('assets/img/avatar/avatar-4.png') }}" alt="product">
|
||||
<div class="media-body">
|
||||
<div class="float-right">
|
||||
<div class="font-weight-600 text-muted text-small">19 Sales</div>
|
||||
@ -373,6 +376,48 @@
|
||||
</div>
|
||||
@include('admin.transaction.modal-tracking')
|
||||
<script>
|
||||
// Date picker range
|
||||
$(document).ready(function() {
|
||||
let searchParams = new URLSearchParams(window.location.search);
|
||||
let dateInterval = searchParams.get('from-to');
|
||||
let start = moment().subtract(29, 'days');
|
||||
let end = moment();
|
||||
|
||||
if (dateInterval) {
|
||||
dateInterval = dateInterval.split(' - ');
|
||||
start = moment(dateInterval[0]);
|
||||
end = moment(dateInterval[1]);
|
||||
}
|
||||
|
||||
$('#date-range').daterangepicker({
|
||||
"showDropdowns": true,
|
||||
"showWeekNumbers": true,
|
||||
"alwaysShowCalendars": true,
|
||||
startDate: start,
|
||||
endDate: end,
|
||||
locale: {
|
||||
format: 'YYYY-MM-DD',
|
||||
firstDay: 1,
|
||||
},
|
||||
ranges: {
|
||||
'Today': [moment(), moment()],
|
||||
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
|
||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||||
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1,
|
||||
'month').endOf(
|
||||
'month')],
|
||||
'This Year': [moment().startOf('year'), moment().endOf('year')],
|
||||
'Last Year': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year')
|
||||
.endOf(
|
||||
'year')
|
||||
],
|
||||
'All time': [moment().subtract(30, 'year').startOf('month'), moment().endOf('month')],
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Set new default font family and font color to mimic Bootstrap's default styling
|
||||
Chart.defaults.global.defaultFontFamily = 'Nunito',
|
||||
'-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
|
||||
@ -382,10 +427,12 @@
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "Oktober", "November", "December"],
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September",
|
||||
"Oktober", "November", "December"
|
||||
],
|
||||
datasets: [{
|
||||
label: 'Transaction',
|
||||
data: [3200, 18009, 4305, 3022, 6310, 5120, 5880, 6154, 0],
|
||||
data: {{json_encode($dataChartTransaction)}},
|
||||
borderWidth: 2,
|
||||
backgroundColor: 'rgba(63,82,227,.8)',
|
||||
borderWidth: 0,
|
||||
@ -410,12 +457,12 @@
|
||||
]
|
||||
},
|
||||
options: {
|
||||
layout:{
|
||||
layout: {
|
||||
padding: 20,
|
||||
},
|
||||
legend: {
|
||||
display: true,
|
||||
labels:{
|
||||
labels: {
|
||||
padding: 20,
|
||||
}
|
||||
},
|
||||
@ -428,7 +475,7 @@
|
||||
},
|
||||
ticks: {
|
||||
beginAtZero: true,
|
||||
stepSize: 15000,
|
||||
stepSize: 15000000,
|
||||
callback: function(value, index, values) {
|
||||
// return 'Rp.' + value;
|
||||
return new Intl.NumberFormat('id-ID', {
|
||||
|
@ -91,48 +91,6 @@
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
let searchParams = new URLSearchParams(window.location.search);
|
||||
let dateInterval = searchParams.get('from-to');
|
||||
let start = moment().subtract(29, 'days');
|
||||
let end = moment();
|
||||
|
||||
if (dateInterval) {
|
||||
dateInterval = dateInterval.split(' - ');
|
||||
start = moment(dateInterval[0]);
|
||||
end = moment(dateInterval[1]);
|
||||
}
|
||||
|
||||
$('#date-range').daterangepicker({
|
||||
"showDropdowns": true,
|
||||
"showWeekNumbers": true,
|
||||
"alwaysShowCalendars": true,
|
||||
startDate: start,
|
||||
endDate: end,
|
||||
locale: {
|
||||
format: 'YYYY-MM-DD',
|
||||
firstDay: 1,
|
||||
},
|
||||
ranges: {
|
||||
'Today': [moment(), moment()],
|
||||
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
|
||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||||
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1,
|
||||
'month').endOf(
|
||||
'month')],
|
||||
'This Year': [moment().startOf('year'), moment().endOf('year')],
|
||||
'Last Year': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year')
|
||||
.endOf(
|
||||
'year')
|
||||
],
|
||||
'All time': [moment().subtract(30, 'year').startOf('month'), moment().endOf('month')],
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- General JS Scripts -->
|
||||
<script src="{{ asset('assets/modules/jquery.min.js') }}"></script>
|
||||
|
@ -1,4 +1,4 @@
|
||||
@extends('Admin.layout.main')
|
||||
@extends('admin.layout.main')
|
||||
@section('content')
|
||||
<div class="main-content">
|
||||
<section class="section">
|
||||
@ -15,7 +15,7 @@
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="card-title pb-2 m-0">User Id<br /><span>#{{ $user->id }}</span>
|
||||
<div class="card-title pb-2 m-0">User ID<br /><span>#{{ $user->id }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex flex-column">
|
||||
@ -98,15 +98,13 @@
|
||||
@if ($user->foto_ktp == null)
|
||||
<a href="#" id="tampilKTP">
|
||||
<img id="fotoKTP" src="{{ asset('storage/foto-ktp/ktp.jpg') }}"
|
||||
alt="Foto KTP" class="align-self-center img-fluid"
|
||||
style="max-width: 350px;">
|
||||
alt="Foto KTP" class="align-self-center img-fluid" style="width: 400px">
|
||||
</a>
|
||||
@else
|
||||
<a href="#" id="tampilKTP">
|
||||
<img id="fotoKTP"
|
||||
src="{{ asset('storage/foto-ktp/' . $user->foto_ktp) }}"
|
||||
alt="Foto Wajah" class="align-self-center img-fluid"
|
||||
style="max-width: 350px;">
|
||||
alt="Foto Wajah" class="align-self-center img-fluid" style="width: 450px">
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
@ -115,15 +113,13 @@
|
||||
@if ($user->foto_wajah == null)
|
||||
<a href="#" id="tampilWajah">
|
||||
<img id="fotoWajah" src="{{ asset('storage/foto-wajah/wajah.jpg') }}"
|
||||
alt="Foto KTP" class="align-self-center img-fluid"
|
||||
style="max-width: 350px;">
|
||||
alt="Foto KTP" class="align-self-center img-fluid" style="width: 400px">
|
||||
</a>
|
||||
@else
|
||||
<a href="#" id="tampilWajah">
|
||||
<img id="fotoWajah"
|
||||
src="{{ asset('storage/foto-wajah/' . $user->foto_wajah) }}"
|
||||
alt="Foto Wajah" class="align-self-center img-fluid"
|
||||
style="max-width: 350px;">
|
||||
alt="Foto Wajah" class="align-self-center img-fluid" style="width: 400px">
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
|
@ -12,7 +12,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="section-body">
|
||||
<h2 class="section-title">npannisa</h2>
|
||||
<h2 class="section-title">
|
||||
Admin</h2>
|
||||
<h2 class="section-buyer">
|
||||
{{ $transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang }}</h2>
|
||||
<h2 class="section-seller">
|
||||
{{ $transaction->data_penjual->nama_depan . ' ' . $transaction->data_penjual->nama_belakang }}</h2>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="card-title pb-2 m-0">
|
||||
<h4>Timeline</h4>
|
||||
@ -23,66 +28,37 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="activities">
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-clipboard-list" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon clipboard-list dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">August 21, 2023, 8:30:15 am</span>
|
||||
{{-- Awal --}}
|
||||
@forelse ($trackings as $tracking)
|
||||
<div class="activity">
|
||||
<div
|
||||
class="activity-icon {{ $tracking->background }} text-white shadow-primary">
|
||||
<i class="{{ $tracking->judul }}" style="font-size: 30px;"
|
||||
aria-hidden="true"></i>
|
||||
<!-- Mengganti ikon dengan ikon clipboard-list dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<p>User Created Trade</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-bell" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon bell dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">August 22, 2023, 8:30:15 am</span>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">{{ $tracking->created_at }}</span>
|
||||
</div>
|
||||
<p>{{ $tracking->deskripsi }}</p>
|
||||
</div>
|
||||
<p>System Notified Admin</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-check-circle" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon check-circle dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">August 23, 2023, 8:30:15 am</span>
|
||||
@empty
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-ban" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon clipboard-list dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<p>Admin Accepted Trade</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-trash-alt" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon trash-alt dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">August 24, 2023, 8:30:15 am</span>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">--</span>
|
||||
</div>
|
||||
<p>Tidak ada histori</p>
|
||||
</div>
|
||||
<p>Trade in system</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="activity">
|
||||
<div class="activity-icon bg-primary text-white shadow-primary">
|
||||
<i class="fas fa-comment-alt" style="font-size: 36px;"></i>
|
||||
<!-- Mengganti ikon dengan ikon comment-alt dan mengatur ukuran ikon -->
|
||||
</div>
|
||||
<div class="activity-detail">
|
||||
<div class="mb-2">
|
||||
<span class="text-job text-primary">August 24, 2023, 8:30:15 am</span>
|
||||
</div>
|
||||
<p>Transaction Success</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforelse
|
||||
{{-- Akhir --}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -90,41 +66,50 @@
|
||||
<div class="section-body">
|
||||
<div class="invoice">
|
||||
<div class="invoice-print">
|
||||
<h2 style="margin-bottom: -1em">REKBER</h2>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<hr>
|
||||
<div class="section-title">Keterangan</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<address>
|
||||
<strong>Billed To:</strong><br>
|
||||
npannisa<br>
|
||||
1234 Main<br>
|
||||
Apt. 4B<br>
|
||||
Depok City, Indonesia
|
||||
<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>Shipped To:</strong><br>
|
||||
Jilhan Haura<br>
|
||||
12345 Main<br>
|
||||
Apt. 5B<br>
|
||||
Bogor Barat, Indonesia
|
||||
<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-12 text-md-left">
|
||||
<address>
|
||||
<strong>Tanggal Transaksi:</strong><br>
|
||||
{{ $transaction->created_at }}<br><br>
|
||||
</address>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<address>
|
||||
<strong>Payment Method:</strong><br>
|
||||
<strong>Metode Pembayaran:</strong><br>
|
||||
Visa ending **** 4242<br>
|
||||
npannisa@gmail.com
|
||||
</address>
|
||||
</div>
|
||||
<div class="col-md-6 text-md-right">
|
||||
<address>
|
||||
<strong>Order Date:</strong><br>
|
||||
September 19, 2023<br><br>
|
||||
<strong>Tanggal Pembayaran:</strong><br>
|
||||
{{ $transaction->updated_at }}<br><br>
|
||||
{{-- {{$transaction->tanggal_pembayaran}}<br><br> --}}
|
||||
</address>
|
||||
</div>
|
||||
</div>
|
||||
@ -133,53 +118,54 @@
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="col-md-12">
|
||||
<div class="section-title">Order Summary</div>
|
||||
<p class="section-lead">All items here cannot be deleted.</p>
|
||||
<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">
|
||||
<tr>
|
||||
<th data-width="40">#</th>
|
||||
<th>Item</th>
|
||||
<th class="text-center">Price</th>
|
||||
<th class="text-center">Quantity</th>
|
||||
<th class="text-right">Totals</th>
|
||||
<th>Nama Barang</th>
|
||||
<th class="text-center">Harga</th>
|
||||
<th class="text-center">Jumlah</th>
|
||||
<th class="text-right">Total</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Ayam Warna Warni</td>
|
||||
<td class="text-center">Rp. 50.000.000</td>
|
||||
<td class="text-center">1</td>
|
||||
<td class="text-right">Rp. 50.000.000</td>
|
||||
<td>{{ $transaction->nama_barang }}</td>
|
||||
<td class="text-center">{{ $transaction->harga_barang }}</td>
|
||||
<td class="text-center">{{ $transaction->jumlah_barang }}</td>
|
||||
<td class="text-right">
|
||||
{{ $transaction->harga_barang * $transaction->jumlah_barang }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row mt-4">
|
||||
<div class="col-lg-8">
|
||||
<div class="section-title">Payment Method</div>
|
||||
<p class="section-lead">The payment method that we provide
|
||||
is to make it easier for
|
||||
you to pay invoices.</p>
|
||||
<p class="section-lead">{{$transaction->metode_pembayaran}}</p>
|
||||
<div class="images">
|
||||
<img src="assets/img/visa.png" alt="visa">
|
||||
<img src="assets/img/jcb.png" alt="jcb">
|
||||
<img src="assets/img/mastercard.png" alt="mastercard">
|
||||
<img src="assets/img/paypal.png" alt="paypal">
|
||||
<img src="{{ asset('assets/img/visa.png') }}" alt="visa">
|
||||
<img src="{{ asset('assets/img/jcb.png') }}" alt="jcb">
|
||||
<img src="{{ asset('assets/img/mastercard.png') }}" alt="mastercard">
|
||||
<img src="{{ asset('assets/img/paypal.png') }}" alt="paypal">
|
||||
</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.670.000.000</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">Shipping</div>
|
||||
<div class="invoice-detail-value">Rp.15.000</div>
|
||||
<div class="invoice-detail-name">Biaya Admin</div>
|
||||
<div class="invoice-detail-value">
|
||||
Rp {{ number_format($transaction->total_keuntungan, 2, ',', '.') }}
|
||||
</div>
|
||||
</div>
|
||||
<hr class="mt-2 mb-2">
|
||||
<div class="invoice-detail-item">
|
||||
<div class="invoice-detail-name">Total</div>
|
||||
<div class="invoice-detail-value invoice-detail-value-lg">
|
||||
Rp.6.715.000.000</div>
|
||||
Rp {{ number_format($transaction->total_bayar, 2, ',', '.') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -191,99 +177,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
|
||||
|
||||
{{-- <div class="col-12 col-md-12 col-lg-7">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
@foreach ($TransactionUser as $HistoryTransaction) --}}
|
||||
{{-- <div class="d-flex flex-column">
|
||||
<div class="data-fieldr">
|
||||
<span class="fw-bold text-start">Order Details</span>
|
||||
|
||||
</div>
|
||||
<hr class="border border-1 opacity-75 w-100">
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Oder ID</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['orderId'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Customer</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['Customer'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Seller</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['seller'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Total</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['total'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Due Date</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['dueDate'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Status</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['status'] }}</span>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
{{-- @endforeach --}}
|
||||
|
||||
|
||||
|
||||
{{-- Pindahan modal --}}
|
||||
{{-- awal modal transaksi --}}
|
||||
{{-- <div class="modal fade" id="detailtransaksi" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1"
|
||||
aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header d-flex justify-content-center">
|
||||
<h1 class="modal-title fs-5" id="staticBackdropLabel">Detail Transaksi</h1>
|
||||
<a type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></a>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
@foreach ($TransactionUser as $HistoryTransaction)
|
||||
<div class="d-flex flex-column">
|
||||
<div class="data-fieldr">
|
||||
<span class="fw-bold text-start">Order Details</span>
|
||||
|
||||
</div>
|
||||
<hr class="border border-1 opacity-75 w-100">
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Oder ID</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['orderId'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Customer</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['Customer'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Seller</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['seller'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Total</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['total'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Due Date</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['dueDate'] }}</span>
|
||||
</div>
|
||||
<div class="data-field">
|
||||
<span class="fw-bold text-start">Status</span>
|
||||
<span class="text-muted ">{{ $HistoryTransaction['status'] }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="/transaction" type="button" class="btn btn-primary">OK!</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div> --}}
|
||||
@endsection
|
||||
|
@ -37,20 +37,22 @@
|
||||
<th>Order ID</th>
|
||||
<th>Penjual</th>
|
||||
<th>Total</th>
|
||||
<th>Batas Pengiriman</th>
|
||||
<th>Tanggal Pembuatan</th>
|
||||
<th>Tanggal Update</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($TransactionUser as $HistoryTransaction)
|
||||
@foreach ($transactions as $transaction)
|
||||
<tr>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td>{{ $HistoryTransaction['orderId'] }}</td>
|
||||
<td>{{ $HistoryTransaction['seller'] }}</td>
|
||||
<td>{{ $HistoryTransaction['total'] }}</td>
|
||||
<td>{{ $HistoryTransaction['dueDate'] }}</td>
|
||||
<td>{{ $HistoryTransaction['status'] }}</td>
|
||||
<td>{{ $transaction->id }}</td>
|
||||
<td>{{ $transaction->data_penjual->nama_depan.' '.$transaction->data_penjual->nama_belakang }}</td>
|
||||
<td>Rp {{number_format($transaction->total_bayar,2, ',', '.') }}</td>
|
||||
<td>{{ $transaction->created_at }}</td>
|
||||
<td>{{ $transaction->updated_at }}</td>
|
||||
<td>{{ ($transaction->status == 'pending' ? 'Menunggu Pembayaran' : 'Selesai') }}</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle"
|
||||
@ -60,19 +62,22 @@
|
||||
</button>
|
||||
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item"
|
||||
href="{{route('user-transaction.detail.pembeli',$HistoryTransaction['orderId'])}}">Detail</a></li>
|
||||
<li><a class="dropdown-item" href="{{route('user-transaction.detail.pembeli',$transaction->id)}}">Detail</a></li>
|
||||
{{-- @if ($transaction->status == 'Pending')
|
||||
|
||||
@endif --}}
|
||||
<li><a class="dropdown-item"
|
||||
href="/refund-transaction">Refund</a></li>
|
||||
{{-- <li><a class="dropdown-item"
|
||||
href="/invoice-transaction">Bayar</a></li> --}}
|
||||
<li><a class="dropdown-item" id="bayar"
|
||||
data-id="{{ $HistoryTransaction['orderId'] }}">Bayar</a>
|
||||
data-id="{{ $transaction->id }}"
|
||||
data-token="{{$transaction->token}}">Bayar</a>
|
||||
{{-- data-id="{{ $transaction }}">Bayar</a> --}}
|
||||
|
||||
</li>
|
||||
<li><a class="dropdown-item" id="selesai"
|
||||
data-id="{{ $HistoryTransaction['orderId'] }}">Selesai</a>
|
||||
data-id="{{ $transaction->id }}">Selesai</a>
|
||||
{{-- data-id="{{ $transaction }}">Selesai</a> --}}
|
||||
</li>
|
||||
</ul>
|
||||
@ -98,80 +103,74 @@
|
||||
// Bayar
|
||||
$('#table-3').on('click', '#bayar', function() {
|
||||
const id = $(this).data('id');
|
||||
const token =$(this).data('token');
|
||||
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||
|
||||
snap.pay("98f6ed6d-3562-42ba-9ef5-cb7d52258e9f", {
|
||||
snap.pay(token, {
|
||||
onSuccess: function(result) {
|
||||
/* You may add your own implementation here */
|
||||
alert("payment success!");
|
||||
const formData = new FormData();
|
||||
formData.append('status', result.transaction_status);
|
||||
formData.append('tanggal_pembayaran', result.transaction_time);
|
||||
formData.append('metode_pembayaran', result.payment_type);
|
||||
|
||||
$.ajaxSetup({
|
||||
headers:{
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url:"{{route('payment-transaction.pembeli',':id')}}".replace(':id',id),
|
||||
type:"POST",
|
||||
data: formData,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success:function(response){
|
||||
Swal.fire({
|
||||
title: response.status ? 'Berhasil' : 'Gagal',
|
||||
text: response.message,
|
||||
icon: response.status ? 'success' : 'error',
|
||||
confirmButtonText: 'OK'
|
||||
});
|
||||
console.log(response);
|
||||
},error:function(error){
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: 'Gagal mengupdate pembayaran ke database',
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
console.log(result);
|
||||
},
|
||||
onPending: function(result) {
|
||||
/* You may add your own implementation here */
|
||||
// alert("wating your payment!");
|
||||
Swal.fire({
|
||||
title: 'Ditunda',
|
||||
text: 'Pemabayaran ditunda. Silahkan tunggu sebentar ' + result,
|
||||
icon: 'info'
|
||||
});
|
||||
console.log(result);
|
||||
},
|
||||
onError: function(result) {
|
||||
/* You may add your own implementation here */
|
||||
alert("payment failed!");
|
||||
Swal.fire({
|
||||
title : 'Gagal',
|
||||
text: 'Terjadi kesalahan ' + result,
|
||||
icon: 'error'
|
||||
});
|
||||
console.log(result);
|
||||
},
|
||||
onClose: function(error) {
|
||||
/* You may add your own implementation here */
|
||||
alert('you closed the popup without finishing the payment '+error);
|
||||
Swal.fire({
|
||||
title: 'Ditunda',
|
||||
text: 'Kamu menutup halaman pembayaran. Silahkan masuk lagi untuk melakukan pembayaran',
|
||||
icon: 'warning'
|
||||
});
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
// $.ajaxSetup({
|
||||
// headers: {
|
||||
// 'X-CSRF-TOKEN': csrfToken
|
||||
// }
|
||||
// });
|
||||
|
||||
// $.ajax({
|
||||
// url: '/transaction',
|
||||
// type: 'POST',
|
||||
// data: formData,
|
||||
// processData: false,
|
||||
// contentType: false,
|
||||
// success: function(response) {
|
||||
// Swal.fire({
|
||||
// title: 'Berhasil!',
|
||||
// text: 'Berhasil bayar',
|
||||
// icon: 'success',
|
||||
// confirmButtonText: 'OK'
|
||||
// }).then(function() {
|
||||
// // console.log("Sukses bayar " + response['token']);
|
||||
// window.snap.pay("610bcd2b-700a-4bff-a570-35c6fbd0b57b", {
|
||||
// onSuccess: function(result) {
|
||||
// /* You may add your own implementation here */
|
||||
// alert("payment success!");
|
||||
// console.log(result);
|
||||
// },
|
||||
// onPending: function(result) {
|
||||
// /* You may add your own implementation here */
|
||||
// alert("wating your payment!");
|
||||
// console.log(result);
|
||||
// },
|
||||
// onError: function(result) {
|
||||
// /* You may add your own implementation here */
|
||||
// alert("payment failed!");
|
||||
// console.log(result);
|
||||
// },
|
||||
// onClose: function() {
|
||||
// /* You may add your own implementation here */
|
||||
// alert(
|
||||
// 'you closed the popup without finishing the payment'
|
||||
// );
|
||||
// }
|
||||
// });
|
||||
|
||||
// });
|
||||
// },
|
||||
// error: function(error) {
|
||||
// console.log("error");
|
||||
// }
|
||||
// });
|
||||
});
|
||||
|
||||
$('#table-3').on('click', '#selesai', function() {
|
||||
|
@ -76,13 +76,13 @@
|
||||
<input type="number" class="form-control" name="jumlah_barang" id="jumlahBarang"
|
||||
placeholder="Jumlah satuan">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{-- <div class="form-group">
|
||||
<label for="batasPengiriman">
|
||||
<h5>Batas Pengiriman Barang</h5>
|
||||
</label>
|
||||
<input type="date" class="form-control" name="batas_pengiriman"
|
||||
id="batasPengiriman" nama="batas_pengiriman">
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="form-group">
|
||||
<label for="inputDeskripsi">
|
||||
<h5>Deskripsi</h5>
|
||||
@ -93,19 +93,20 @@
|
||||
<div class="dashed-line"></div>
|
||||
|
||||
<div class="form-row">
|
||||
<label style="margin-right: 500px;">Nominal</label>
|
||||
<div style="display: inline-block;">Rp. 890000</div>
|
||||
<label style="margin-right: 200px;" id="jumlah">Nominal</label>
|
||||
<div style="display: inline-block;" id="totalBiaya">Rp 0,00</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<label style="margin-right: 500px;">Biaya Admin</label>
|
||||
<div style="display: inline-block; ">Rp.0</div>
|
||||
<label style="margin-right: 200px;" id="biayaAdmin" data-admin="">Biaya Admin
|
||||
(0.1%)</label>
|
||||
<div style="display: inline-block;" id="totalBiayaAdmin">Rp 0,00</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<h6 style="margin-right: 500px;">Total Biaya</h6>
|
||||
<div style="display: inline-block; ">
|
||||
<h6>Rp.0</h6>
|
||||
<h6 style="margin-right: 200px;">Total Biaya</h6>
|
||||
<div style="display: inline-block;">
|
||||
<h6 id="totalBayar">Rp 0,00</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -125,6 +126,31 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
let totalHarga = 0;
|
||||
let biayaAdmin = 0.1;
|
||||
let totalBiayaAdmin = 0;
|
||||
let totalBayar = 0;
|
||||
|
||||
function tampilTotalHarga(harga) {
|
||||
let tampilTotalNominal = document.getElementById('totalBiaya');
|
||||
let tampilTotalBiaya = document.getElementById('totalBayar');
|
||||
let tampilTotalBiayaAdmin = document.getElementById('totalBiayaAdmin');
|
||||
totalBiayaAdmin = harga * biayaAdmin / 100
|
||||
totalBayar = totalBiayaAdmin + harga
|
||||
tampilTotalNominal.innerHTML = harga.toLocaleString('id-ID', {
|
||||
style: 'currency',
|
||||
currency: 'IDR'
|
||||
});
|
||||
tampilTotalBiaya.innerHTML = totalBayar.toLocaleString('id-ID', {
|
||||
style: 'currency',
|
||||
currency: 'IDR'
|
||||
});;
|
||||
tampilTotalBiayaAdmin.innerHTML = totalBiayaAdmin.toLocaleString('id-ID', {
|
||||
style: 'currency',
|
||||
currency: 'IDR'
|
||||
});
|
||||
}
|
||||
|
||||
$("#selectContact").select2({
|
||||
placeholder: "Pilih Kontak",
|
||||
ajax: {
|
||||
@ -144,6 +170,40 @@
|
||||
},
|
||||
});
|
||||
|
||||
$('#hargaBarang').change(function() {
|
||||
let harga = $(this).val();
|
||||
let jumlah = $('#jumlahBarang').val();
|
||||
let biaya = document.getElementById('totalBiaya');
|
||||
if (harga.trim() != '') {
|
||||
if (jumlah.trim() != '') {
|
||||
totalHarga = harga * jumlah;
|
||||
} else {
|
||||
totalHarga = harga * 0;
|
||||
}
|
||||
tampilTotalHarga(totalHarga);
|
||||
}
|
||||
});
|
||||
|
||||
$('#jumlahBarang').change(function() {
|
||||
let jumlah = $(this).val();
|
||||
let harga = $('#hargaBarang').val();
|
||||
let nominal = document.getElementById('jumlah');
|
||||
if (jumlah.trim() != '') {
|
||||
if (jumlah == 0) {
|
||||
nominal.innerHTML = 'Nominal';
|
||||
} else {
|
||||
nominal.innerHTML = 'Nominal (x' + jumlah + ')';
|
||||
}
|
||||
if (harga.trim() != '') {
|
||||
totalHarga = harga * jumlah;
|
||||
|
||||
} else {
|
||||
totalHarga = 0 * jumlah;
|
||||
}
|
||||
tampilTotalHarga(totalHarga);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
$('#selectContact').change(function() {
|
||||
let email = $('#selectContact').val();
|
||||
@ -184,38 +244,47 @@
|
||||
icon: 'error'
|
||||
});
|
||||
} else {
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
if (email != "{{ Auth::user()->email }}") {
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('user-contact.email', ':email') }}".replace(':email', email),
|
||||
type: 'GET',
|
||||
success: function(response) {
|
||||
if (response.status) {
|
||||
Swal.fire({
|
||||
title: 'Berhasil',
|
||||
text: 'Akun tersedia',
|
||||
icon: 'success'
|
||||
});
|
||||
} else {
|
||||
$.ajax({
|
||||
url: "{{ route('user-contact.email', ':email') }}".replace(':email',
|
||||
email),
|
||||
type: 'GET',
|
||||
success: function(response) {
|
||||
if (response.status) {
|
||||
Swal.fire({
|
||||
title: 'Berhasil',
|
||||
text: 'Akun tersedia',
|
||||
icon: 'success'
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: response.message,
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: response.message,
|
||||
text: 'Terjadi error karena, ' + error,
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: 'Terjadi error karena, ' + error,
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: 'Email penjual tidak boleh sama denggan email pembeli',
|
||||
icon: 'error',
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -226,7 +295,6 @@
|
||||
let hargaBarang = document.querySelector('[name="harga_barang"]').value;
|
||||
let satuanBarang = document.querySelector('[name="satuan_barang"]').value;
|
||||
let jumlahBarang = document.querySelector('[name="jumlah_barang"]').value;
|
||||
let batasPengiriman = document.querySelector('[name="batas_pengiriman"]').value;
|
||||
let deskripsi = document.querySelector('[name="deskripsi"]').value;
|
||||
|
||||
let emptyInput = [];
|
||||
@ -243,6 +311,10 @@
|
||||
emptyInput.push("Kolom penjual tidak boleh kosong");
|
||||
}
|
||||
|
||||
if (penjual == "{{ Auth::user()->email }}") {
|
||||
emptyInput.push("Email penjual tidak boleh sama dengan email pembeli");
|
||||
}
|
||||
|
||||
if (namaBarang == "") {
|
||||
emptyInput.push("Nama barang tidak boleh kosong");
|
||||
}
|
||||
@ -259,9 +331,9 @@
|
||||
emptyInput.push("Jumlah barang tidak boleh kosong");
|
||||
}
|
||||
|
||||
if (batasPengiriman == "") {
|
||||
emptyInput.push("Batas pengiriman tidak boleh kosong");
|
||||
}
|
||||
// if (batasPengiriman == "") {
|
||||
// emptyInput.push("Batas pengiriman tidak boleh kosong");
|
||||
// }
|
||||
|
||||
if (emptyInput.length > 0) {
|
||||
const emptyInputError = emptyInput.join(', ');
|
||||
@ -279,36 +351,44 @@
|
||||
formData.append('satuan_barang', satuanBarang);
|
||||
formData.append('harga_barang', hargaBarang);
|
||||
formData.append('jumlah_barang', jumlahBarang);
|
||||
formData.append('batas_pengiriman', batasPengiriman);
|
||||
// formData.append('batas_pengiriman', batasPengiriman);
|
||||
formData.append('deskripsi', deskripsi);
|
||||
formData.append('persentase_keuntungan', 0.1);
|
||||
formData.append('total_keuntungan', totalBiayaAdmin);
|
||||
formData.append('total_harga', totalHarga);
|
||||
formData.append('total_bayar', totalBayar);
|
||||
|
||||
$.ajaxSetup({
|
||||
headers:{
|
||||
'X-CSRF-TOKEN':csrfToken
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url:"{{route('store-transaction.pembeli')}}",
|
||||
type:"POST",
|
||||
url: "{{ route('store-transaction.pembeli') }}",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function(response){
|
||||
success: function(response) {
|
||||
Swal.fire({
|
||||
title:'Berhasil',
|
||||
text: "Transaksi berhasil didaftar",
|
||||
icon: 'success'
|
||||
title: response.status ? 'Berhasil' : 'Gagal',
|
||||
text: response.message,
|
||||
icon: response.status ? 'success' : 'error',
|
||||
confirmButtonText: 'OK'
|
||||
}).then(function() {
|
||||
location.href =
|
||||
"{{ route('user-transaction.index.pembeli') }}"
|
||||
});
|
||||
console.log(response);
|
||||
},
|
||||
error: function(error){
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title:'Gagal',
|
||||
text:'Gagal mengirimkan data karena ' + error,
|
||||
title: 'Gagal',
|
||||
text: 'Gagal mengirimkan data karena ' + error,
|
||||
icon: 'error'
|
||||
});
|
||||
console.log(error)
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
<div class="hero bg-primary text-white">
|
||||
<div class="hero-inner">
|
||||
<h1>Welcome to the Rekber Aplication</h1>
|
||||
<p class="lead">Selamat Datang npannisa!</p>
|
||||
<p class="lead">Selamat Datang {{ Auth::user()->nama_depan }}!</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -30,27 +30,26 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>User ID</th>
|
||||
<th>Order ID</th>
|
||||
<th>Customer</th>
|
||||
<th>Seller</th>
|
||||
<th>Pembeli</th>
|
||||
<th>Total</th>
|
||||
<th>Due Date</th>
|
||||
<th>Batas Pengiriman Barang</th>
|
||||
<th>Status</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($TransactionUser as $key => $HistoryTransaction)
|
||||
@foreach ($transactions as $transaction)
|
||||
<tr>
|
||||
<td>{{ ++$key }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['userId'] }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['orderId'] }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['Customer'] }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['seller'] }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['total'] }}</td>
|
||||
<td>{{ $HistoryTransaction['dueDate'] }}</td>
|
||||
<td class="font-weight-600">{{ $HistoryTransaction['status'] }}</td>
|
||||
<td>{{ $loop->iteration }}</td>
|
||||
<td class="font-weight-600">{{ $transaction->id }}</td>
|
||||
<td class="font-weight-600">
|
||||
{{ ucwords(strtolower($transaction->data_pembeli->nama_depan . ' ' . $transaction->data_pembeli->nama_belakang)) }}
|
||||
</td>
|
||||
<td class="font-weight-600">{{ $transaction->total_bayar }}</td>
|
||||
{{-- <td class="font-weight-600">{{ $transaction->batas_pengiriman_barang }}</td> --}}
|
||||
<td>{{ $transaction->batas_pengiriman_barang }}</td>
|
||||
<td class="font-weight-600">{{ $transaction->status }}</td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle"
|
||||
@ -60,7 +59,8 @@
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item"
|
||||
href="/detail-transaction">Detail</a></li>
|
||||
href="{{ route('user-transaction.detail.pembeli', $transaction->id) }}">Detail</a>
|
||||
</li>
|
||||
<li><a class="dropdown-item" data-toggle="modal"
|
||||
data-target="#tracking">Tracking</a></li>
|
||||
{{-- <li><a class="dropdown-item" href="/tracking">Tracking</a></li> --}}
|
||||
@ -76,5 +76,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@extends('user.transaction.Penjual.tracking')
|
||||
@endsection
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
@extends('user.transaction.penjual.modal-tracking')
|
||||
@endsection
|
||||
|
@ -102,7 +102,6 @@
|
||||
<div style="width: 100%; display: flex; align-items: center;">
|
||||
<div class="input-field-signin-flex">
|
||||
<i class="fas fa-envelope" aria-hidden="true"></i>
|
||||
{{-- <input type="text" class="telp-input-signin" maxlength="13" oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 13);" placeholder="Nomer Telepon"> --}}
|
||||
<input type="email" class="telp-input-signin" placeholder="Email" name="email" required>
|
||||
</div>
|
||||
<button type="button" class="btn-otp solid" id="cekAkun">Cek Akun</button>
|
||||
@ -161,7 +160,7 @@
|
||||
<div class="input-field-signup-flex">
|
||||
<i class="fas fa-user"></i>
|
||||
<input type="text" placeholder="Nama Depan" class="first-name-input"
|
||||
name="nama_depan" />
|
||||
name="nama_depan" required />
|
||||
</div>
|
||||
<div class="input-field-signup-flex" style="margin-left: 3%">
|
||||
<i class="fas fa-user"></i>
|
||||
@ -399,6 +398,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"
|
||||
integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
@ -409,6 +410,26 @@
|
||||
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
<script src="{{ asset('assets/js/login_register/app.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/login_register/script.js') }}"></script>
|
||||
@if (Session::has('message'))
|
||||
<script>
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: "{{ Session::get('message') }}",
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<script>
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Kesalahan',
|
||||
text: @json($errors->all()).join(' '),
|
||||
});
|
||||
console.log(@json($errors->all()));
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
@ -416,6 +437,7 @@
|
||||
let verificationCode = '';
|
||||
let waktuSekarangDetik = 0;
|
||||
|
||||
// Generate Kode Verifikasi
|
||||
function generateVerificationCode() {
|
||||
const codeLength = 6;
|
||||
let code = '';
|
||||
@ -425,6 +447,7 @@
|
||||
return code;
|
||||
}
|
||||
|
||||
// Login Awal
|
||||
$('#cekAkun').on('click', function() {
|
||||
let email = document.querySelector('[name="email"]').value;
|
||||
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||
@ -491,7 +514,9 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
// Login Akhir
|
||||
|
||||
// Register Awal
|
||||
$('#newEmail').on('input', function() {
|
||||
const newEmail = $(this);
|
||||
clearTimeout(newEmail.timer); // Menghapus timeout yang ada
|
||||
@ -511,72 +536,91 @@
|
||||
}
|
||||
});
|
||||
|
||||
function isValidEmail(email) {
|
||||
// Ekspresi reguler untuk memeriksa validitas alamat email
|
||||
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
|
||||
// Menggunakan test() untuk memeriksa apakah email sesuai dengan ekspresi reguler
|
||||
return emailRegex.test(email);
|
||||
}
|
||||
|
||||
$('#verifikasiEmail').on('click', function() {
|
||||
const newEmail = $(this);
|
||||
let email = document.querySelector('[name="new_email"]').value;
|
||||
const email = document.querySelector('[name="new_email"]').value;
|
||||
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||
verificationCode = generateVerificationCode();
|
||||
verificationStatus = false
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('email', email);
|
||||
formData.append('code', verificationCode);
|
||||
if (isValidEmail(email)) {
|
||||
const formData = new FormData();
|
||||
formData.append('email', email);
|
||||
formData.append('code', verificationCode);
|
||||
|
||||
// Menonaktifkan tombol verifikasi
|
||||
newEmail.prop('disabled', true);
|
||||
// Menonaktifkan tombol verifikasi
|
||||
newEmail.prop('disabled', true);
|
||||
|
||||
// Mengatur waktu dalam detik (misalnya, 2 menit = 120 detik)
|
||||
const waktuTotalDetik = 120;
|
||||
waktuSekarangDetik = waktuTotalDetik;
|
||||
// Mengatur waktu dalam detik (misalnya, 2 menit = 120 detik)
|
||||
const waktuTotalDetik = 120;
|
||||
waktuSekarangDetik = waktuTotalDetik;
|
||||
|
||||
// Mengupdate teks tombol dengan format menit:detik
|
||||
function updateButtonText() {
|
||||
const menit = Math.floor(waktuSekarangDetik / 60);
|
||||
const detik = waktuSekarangDetik % 60 < 10 ? '0' + (waktuSekarangDetik % 60) :
|
||||
waktuSekarangDetik % 60;
|
||||
newEmail.text(`${menit}:${detik}`);
|
||||
// Mengupdate teks tombol dengan format menit:detik
|
||||
function updateButtonText() {
|
||||
const menit = Math.floor(waktuSekarangDetik / 60);
|
||||
const detik = waktuSekarangDetik % 60 < 10 ? '0' + (waktuSekarangDetik % 60) :
|
||||
waktuSekarangDetik % 60;
|
||||
newEmail.text(`${menit}:${detik}`);
|
||||
}
|
||||
|
||||
// Memulai timer dan mengupdate teks tombol setiap detik
|
||||
const timerInterval = setInterval(function() {
|
||||
if (waktuSekarangDetik > 0) {
|
||||
waktuSekarangDetik--;
|
||||
updateButtonText();
|
||||
} else {
|
||||
clearInterval(timerInterval);
|
||||
newEmail.text("Verifikasi"); // Mengembalikan teks awal tombol
|
||||
newEmail.prop('disabled', false); // Mengaktifkan kembali tombol
|
||||
}
|
||||
}, 1000); // Setiap 1 detik
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('kirim.kode') }}",
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function(response) {
|
||||
Swal.fire({
|
||||
title: response.status ? 'Berhasil' : 'Gagal',
|
||||
text: response.message,
|
||||
icon: response.status ? 'success' : 'error',
|
||||
});
|
||||
verificationStatus = true;
|
||||
},
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: 'Gagal karena kesalahan inputan atau jaringan',
|
||||
icon: 'error',
|
||||
});
|
||||
console.log(error);
|
||||
},
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: 'Kesalahan',
|
||||
text: 'Inputan yang anda masukan bukan alamat email. Silahkan masukan alamat email yang benar.',
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
|
||||
// Memulai timer dan mengupdate teks tombol setiap detik
|
||||
const timerInterval = setInterval(function() {
|
||||
if (waktuSekarangDetik > 0) {
|
||||
waktuSekarangDetik--;
|
||||
updateButtonText();
|
||||
} else {
|
||||
clearInterval(timerInterval);
|
||||
newEmail.text("Verifikasi"); // Mengembalikan teks awal tombol
|
||||
newEmail.prop('disabled', false); // Mengaktifkan kembali tombol
|
||||
}
|
||||
}, 1000); // Setiap 1 detik
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken
|
||||
}
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('kirim.kode') }}",
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
contentType: false,
|
||||
processData: false,
|
||||
success: function(response) {
|
||||
Swal.fire({
|
||||
title: response.status ? 'Berhasil' : 'Gagal',
|
||||
text: response.message,
|
||||
icon: response.status ? 'success' : 'error',
|
||||
});
|
||||
},
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title: 'Gagal',
|
||||
text: 'Gagal karena ' + error,
|
||||
icon: 'error',
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
verificationStatus = true;
|
||||
});
|
||||
|
||||
$('#signUp').on('click', function() {
|
||||
@ -624,9 +668,14 @@
|
||||
|
||||
if (email.trim() === "") {
|
||||
emptyInput.push("Email tidak boleh kosong");
|
||||
} else if (!verificationStatus) {
|
||||
}
|
||||
if (!verificationStatus) {
|
||||
emptyInput.push("Verifikasi email terlebih dahulu");
|
||||
} else if (emailVerification != verificationCode) {
|
||||
}
|
||||
if (emailVerification.trim() === "") {
|
||||
emptyInput.push("Kode verifikasi harus diisi");
|
||||
}
|
||||
if (emailVerification != verificationCode) {
|
||||
emptyInput.push('Kode verifikasi harus sama dengan kode yang dikirim ke email');
|
||||
}
|
||||
|
||||
@ -723,6 +772,7 @@
|
||||
});
|
||||
}
|
||||
});
|
||||
// Register Akhir
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -160,6 +160,7 @@ Route::middleware(['auth'])->group(function(){
|
||||
Route::get('detail-user-transaction-pembeli/{id}','detailTransaction')->name('user-transaction.detail.pembeli');
|
||||
Route::get('tambah-transaction','createTransaction')->name('tambah-transaction.pembeli');
|
||||
Route::post('store-transaction','storeTransaction')->name('store-transaction.pembeli');
|
||||
Route::post('payment-transaction/{id}','paymentTransaction')->name('payment-transaction.pembeli');
|
||||
//Penjual
|
||||
Route::get('user-transaction-penjual','indexPenjual')->name('user-transaction.index.penjual');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user