Tambah transaksi

This commit is contained in:
Muhammad Raihan Surya 2023-09-18 18:28:52 +07:00
parent 1af5e8a7da
commit 6c18bb1a52
34 changed files with 17285 additions and 1391 deletions

View File

@ -3,10 +3,12 @@
namespace App\Http\Controllers\Login; namespace App\Http\Controllers\Login;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Mail\verificationMail;
use Illuminate\Http\Request; 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 Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use thiagoalessio\TesseractOCR\TesseractOCR; use thiagoalessio\TesseractOCR\TesseractOCR;
@ -134,7 +136,7 @@ class LoginController extends Controller
$image->greyscale(); // Convert to grayscale $image->greyscale(); // Convert to grayscale
$image->contrast(10); // Increase contrast, adjust the value as needed $image->contrast(10); // Increase contrast, adjust the value as needed
$preprocessedfotoKTP = storage_path('preprocessed_image.jpg'); $preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg');
$image->save($preprocessedfotoKTP); $image->save($preprocessedfotoKTP);
$result = (new TesseractOCR($preprocessedfotoKTP))->run(); $result = (new TesseractOCR($preprocessedfotoKTP))->run();
@ -142,6 +144,7 @@ class LoginController extends Controller
// (5) Normalize // (5) Normalize
$lines = explode("\n", $result); $lines = explode("\n", $result);
$namaOCR = '';
$nikOCR = ''; $nikOCR = '';
$nikInputan = $nik; $nikInputan = $nik;
$namaInputan = $nama_depan.' '.$nama_belakang; $namaInputan = $nama_depan.' '.$nama_belakang;
@ -178,11 +181,6 @@ class LoginController extends Controller
$password = Hash::make($new_password); $password = Hash::make($new_password);
// return response()->json([
// 'status' => true,
// 'message' => Uuid::uuid4(),
// ]);
$result = User::create([ $result = User::create([
'id' => Uuid::uuid4(), 'id' => Uuid::uuid4(),
'nama_depan' => $nama_depan, 'nama_depan' => $nama_depan,
@ -265,4 +263,83 @@ class LoginController extends Controller
return response()->json($data); return response()->json($data);
} }
public function kirimKodeVerifikasi(Request $request){
$email = $request->get('email');
$code = $request->get('code');
$verificationEmail = [
'code' => $code,
'email' => $email
];
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){
return response()->json([
'message' => 'Kode verifikasi gagal dikirim ke email. '.$e,
'status' => false,
]);
}
}
public function getOcr(){
//OCR
// dd(phpinfo());
try {
$fotoKTP = public_path('storage/foto-ktp/ktp.jpg');
$image = Image::make($fotoKTP);
$image->greyscale(); // Convert to grayscale
$image->contrast(10); // Increase contrast, adjust the value as needed
$preprocessedfotoKTP = public_path('storage/preprocessed/preprocessed_image.jpg');
$image->save($preprocessedfotoKTP);
$result = (new TesseractOCR($preprocessedfotoKTP))->run();
// (5) Normalize
$lines = explode("\n", $result);
$nikOCR = '';
$namaOCR = '';
$nikInputan = '3471140209790001';
$namaInputan = 'RIYANTO. SE';
foreach ($lines as $line) {
// Mencari NIK
if (strpos($line, $nikInputan) !== false) {
$nikOCR = preg_replace('/[^0-9]/', '', $line);
}
// Mencari nama
if (strpos($line, $namaInputan) !== false) {
$namaOCR = trim(substr($line, strpos($line, ':') + 1));
}
}
//Selesai
$persentase_kemiripan = (similar_text($nikInputan, $nikOCR, $percent) + similar_text($namaOCR, $namaOCR, $percent))/2;
// $status = 'Progress';
dd([$persentase_kemiripan, $lines]);
// if (similar_text($nikInputan, $nikOCR, $percent) >= 70 && similar_text($namaOCR, $namaOCR, $percent) >= 70) {
// $status = 'Progress';
// } else {
// $status = 'Progress';
// }
} catch (\Exception $e) {
// $status = 'Progress';
dd($e);
}
//OCR
}
} }

View File

@ -7,6 +7,7 @@ use App\Models\User;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class UserContactController extends Controller class UserContactController extends Controller
{ {
@ -20,6 +21,16 @@ class UserContactController extends Controller
// dd($contacts); // dd($contacts);
} }
public function getContact()
{
$data = DB::table('contacts')
->select('contacts.relasi_kontak', 'users.nama_depan', 'users.nama_belakang')
->join('users', 'contacts.relasi_kontak', '=', 'users.email')
->where('contacts.pemilik_kontak','=',Auth::user()->email)
->paginate(10);
return response()->json($data);
}
/** /**
* Show the form for creating a new resource. * Show the form for creating a new resource.
*/ */
@ -34,23 +45,23 @@ class UserContactController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$email_relasi = $request->input('email'); $email_relasi = $request->input('email');
if($email_relasi == Auth::user()->email){ if ($email_relasi == Auth::user()->email) {
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Kontak yang ingin didaftarkan tidak boleh sama', 'message' => 'Kontak yang ingin didaftarkan tidak boleh sama',
]); ]);
}else{ } else {
$result = Contact::create([ $result = Contact::create([
'pemilik_kontak' => Auth::user()->email, 'pemilik_kontak' => Auth::user()->email,
'relasi_kontak' => $request->input('email'), 'relasi_kontak' => $request->input('email'),
]); ]);
if($result){ if ($result) {
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => 'Akun berhasil masuk ke kontak', 'message' => 'Akun berhasil masuk ke kontak',
]); ]);
}else{ } else {
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Akun gagal masuk ke kontak', 'message' => 'Akun gagal masuk ke kontak',
@ -64,7 +75,6 @@ class UserContactController extends Controller
*/ */
public function show(Contact $contact) public function show(Contact $contact)
{ {
} }
/** /**
@ -90,14 +100,14 @@ class UserContactController extends Controller
{ {
try { try {
$result = Contact::destroy($id); $result = Contact::destroy($id);
if($result){ if ($result) {
return response()->json([ return response()->json([
'message' => 'Berhasil hapus data', 'message' => 'Berhasil hapus data',
'status' => true, 'status' => true,
]); ]);
}else{ } else {
return response()->json([ return response()->json([
'message' => 'Gagal hapus data karena '.$result, 'message' => 'Gagal hapus data karena ' . $result,
'status' => false, 'status' => false,
]); ]);
} }
@ -112,13 +122,13 @@ class UserContactController extends Controller
public function cekEmail($email) public function cekEmail($email)
{ {
$result = User::where('email', $email)->get(); $result = User::where('email', $email)->get();
if ($result->isNotEmpty() && $result[0]->role == 'User') { if ($result->isNotEmpty() && $result[0]->role == 'User' && $result[0]->status != 'Rejected') {
if($result[0]->status == 'Finished'){ if ($result[0]->status == 'Finished') {
return response()->json([ return response()->json([
'status' => true, 'status' => true,
'message' => $result, 'message' => $result,
]); ]);
}else{ } else {
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Akun dengen email ' . $email . ' tersedia dan belum diverifikasi', 'message' => 'Akun dengen email ' . $email . ' tersedia dan belum diverifikasi',
@ -127,7 +137,7 @@ class UserContactController extends Controller
} else { } else {
return response()->json([ return response()->json([
'status' => false, 'status' => false,
'message' => 'Akun dengen email ' . $email . ' tidak tersedia', 'message' => 'Akun dengen email ' . $email . ' tidak tersedia atau ditolak',
]); ]);
} }
} }

View File

@ -4,8 +4,16 @@ namespace App\Http\Controllers\User;
use App\Models\Transaction; use App\Models\Transaction;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Setting;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\TransactionUser; use App\Models\TransactionUser;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Auth;
use Ramsey\Uuid\Uuid;
use Midtrans\Config;
use Midtrans\Snap;
class UserTransactionController extends Controller class UserTransactionController extends Controller
{ {
@ -14,9 +22,9 @@ class UserTransactionController extends Controller
*/ */
public function indexPembeli() public function indexPembeli()
{ {
return view('user.transaction.pembeli.index',[ return view('user.transaction.pembeli.index', [
'name'=>'npannisa', 'name' => 'npannisa',
'TransactionUser'=>TransactionUser::HistoryTransaction() 'TransactionUser' => TransactionUser::HistoryTransaction(),
]); ]);
} }
@ -25,16 +33,17 @@ class UserTransactionController extends Controller
*/ */
public function indexPenjual() public function indexPenjual()
{ {
return view('user.transaction.penjual.transaction-penjual',[ return view('user.transaction.penjual.transaction-penjual', [
'name'=>'npannisa', 'name' => 'npannisa',
"TransactionUser"=>TransactionUser::HistoryTransaction() 'TransactionUser' => TransactionUser::HistoryTransaction(),
]); ]);
} }
public function detailTransaction($id){ public function detailTransaction($id)
return view('user.transaction.pembeli.detail-transaction',[ {
'name'=>'npannisa', return view('user.transaction.pembeli.detail-transaction', [
"TransactionUser"=>TransactionUser::HistoryTransaction() 'name' => 'npannisa',
'TransactionUser' => TransactionUser::HistoryTransaction(),
]); ]);
} }
@ -43,9 +52,9 @@ class UserTransactionController extends Controller
*/ */
public function createTransaction(Request $request) public function createTransaction(Request $request)
{ {
return view('user.transaction.pembeli.new-transaction',[ return view('user.transaction.pembeli.new-transaction', [
'name'=>'npannisa', 'name' => 'npannisa',
"TransactionUser"=>TransactionUser::HistoryTransaction() 'TransactionUser' => TransactionUser::HistoryTransaction(),
]); ]);
} }
@ -54,12 +63,113 @@ class UserTransactionController extends Controller
*/ */
public function invoiceTransaction($id) public function invoiceTransaction($id)
{ {
return view('user.transaction.pembeli.invoice-transaction',[ return view('user.transaction.pembeli.invoice-transaction', [
'name'=>'npannisa', 'name' => 'npannisa',
"TransactionUser"=>TransactionUser::HistoryTransaction() 'TransactionUser' => TransactionUser::HistoryTransaction(),
]); ]);
} }
public function storeTransaction(Request $request)
{
$pembeli = Auth::user()->email;
$penjual = $request->get('email_penjual');
$nama_barang = $request->get('nama_barang');
$satuan_barang = $request->get('satuan_barang');
$deskripsi_transaksi = $request->get('deskripsi');
$harga_barang = $request->get('harga_barang');
$jumlah_barang = $request->get('jumlah_barang');
$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);
$now = Carbon::now();
$bulan = $now->format('F');
$tahun = $now->year;
// $persentase_keuntungan = Setting::where('status','Active')
// ->where('bulan','=',$bulan)
// ->where('tahun','=',$tahun)->get();
$persentase_keuntungan = floatval('5');
$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);
$params = [
'transaction_details' => [
'order_id' => Uuid::uuid4(),
'gross_amount' => $total_bayar,
],
'item_details' => [
[
'id' => $nama_barang.time(),
'price' => $total_bayar,
'quantity' => 1,
'name' => $nama_barang,
],
],
'customer_details' => [
'firts_name' => $nama_depan_pembeli,
'last_name' => $nama_belakang_pembeli,
'email' => $pembeli,
'phone' => $nohp_pembeli,
],
];
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;
$snap_token = Snap::getSnapToken($params);
$token = $snap_token;
$batas_pembayaran = $now->addDays(2)->toDateTimeString();
$batas_pengiriman_barang = $now->addDays(6)->toDateTimeString();
$status = 'Pending';
$query = Transaction::create([
'id' => Uuid::uuid4(),
'pembeli' => $pembeli,
'penjual' => $penjual,
'nama_barang' => $nama_barang,
'deskripsi_transaksi' => $deskripsi_transaksi,
'satuan_barang' => $satuan_barang,
'harga_barang' => $harga_barang,
'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,
]);
return response()->json($query);
// $result_api = json_decode($response->body(), true);
// $token = '124';
// $redirect_url = 'haha';
// // 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();
}
/** /**
* Display the specified resource. * Display the specified resource.
*/ */

View File

@ -0,0 +1,59 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class verificationMail extends Mailable
{
use Queueable, SerializesModels;
public $verificationEmail;
/**
* Create a new message instance.
*/
public function __construct($verificationEmail)
{
$this->verificationEmail = $verificationEmail;
}
/**
* Get the message envelope.
*/
// public function envelope(): Envelope
// {
// return new Envelope(
// subject: 'Verification Mail',
// );
// }
/**
* Get the message content definition.
*/
// public function content(): Content
// {
// return new Content(
// view: 'view.name',
// );
// }
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
// public function attachments(): array
// {
// return [];
// }
public function build(){
return $this->subject('Kode Verifikasi')->view('email.verification-email');
}
}

View File

@ -23,7 +23,7 @@ class Refund extends Model
//Relasi //Relasi
public function orders(){ public function orders(){
return $this->belongsTo(Transaction::class, 'order_id', 'order_id'); return $this->belongsTo(Transaction::class, 'id', 'order_id');
} }
//Relasi //Relasi
} }

View File

@ -23,7 +23,7 @@ class TransactionDescription extends Model
//Relasi //Relasi
public function order(){ public function order(){
return $this->belongsTo(Transaction::class, 'order_id', 'order_id'); return $this->belongsTo(Transaction::class, 'id', 'order_id');
} }
public function user(){ public function user(){

View File

@ -15,17 +15,20 @@ class Transaction extends Model
* @var array<int, string> * @var array<int, string>
*/ */
protected $fillable = [ protected $fillable = [
'id',
'pembeli', 'pembeli',
'penjual', 'penjual',
'judul_transaksi', 'nama_barang',
'deskripsi transaksi', 'deskripsi_transaksi',
'satuan_barang',
'harga_barang',
'jumlah_barang',
'persentase_keuntungan', 'persentase_keuntungan',
'total_keuntungan', 'total_keuntungan',
'harga',
'biaya_admin', 'biaya_admin',
'total_harga', 'total_harga',
'signature_key', 'total_bayar',
'metode_pembayaran', 'token',
'status', 'status',
'batas_pembayaran', 'batas_pembayaran',
'batas_pengiriman_barang', 'batas_pengiriman_barang',
@ -39,7 +42,7 @@ class Transaction extends Model
protected $casts = [ protected $casts = [
'batas_pembayaran' => 'datetime', 'batas_pembayaran' => 'datetime',
'batas_pengiriman_barang' => 'datetime', 'batas_pengiriman_barang' => 'datetime',
'order_id' => 'string', 'id' => 'string',
]; ];
//Relasi //Relasi
@ -52,7 +55,7 @@ class Transaction extends Model
} }
public function refunds(){ public function refunds(){
return $this->hasMany(Refund::class, 'order_id', 'order_id'); return $this->hasMany(Refund::class, 'order_id', 'id');
} }
//Relasi //Relasi
} }

View File

@ -15,6 +15,7 @@
"laravel/sanctum": "^3.2", "laravel/sanctum": "^3.2",
"laravel/tinker": "^2.8", "laravel/tinker": "^2.8",
"laravolt/indonesia": "^0.34.0", "laravolt/indonesia": "^0.34.0",
"midtrans/midtrans-php": "^2.5",
"nesbot/carbon": "^2.69", "nesbot/carbon": "^2.69",
"pusher/pusher-php-server": "^7.2", "pusher/pusher-php-server": "^7.2",
"ramsey/uuid": "^4.7", "ramsey/uuid": "^4.7",

57
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "eb6424bf82942b6b939788b88ee6586b", "content-hash": "4dd1066d585142b363e4e114601be8ce",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@ -2111,6 +2111,61 @@
], ],
"time": "2023-08-05T12:09:49+00:00" "time": "2023-08-05T12:09:49+00:00"
}, },
{
"name": "midtrans/midtrans-php",
"version": "2.5.2",
"source": {
"type": "git",
"url": "https://github.com/Midtrans/midtrans-php.git",
"reference": "a1ad0c824449ca8c68c4cf11b3417ad518311d2b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Midtrans/midtrans-php/zipball/a1ad0c824449ca8c68c4cf11b3417ad518311d2b",
"reference": "a1ad0c824449ca8c68c4cf11b3417ad518311d2b",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"php": ">=5.4"
},
"require-dev": {
"phpunit/phpunit": "5.7.*",
"psy/psysh": "0.4.*"
},
"type": "library",
"autoload": {
"psr-4": {
"Midtrans\\": "Midtrans/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Andri Setiawan",
"email": "andri.setiawan@veritrans.co.id"
},
{
"name": "Alvin Litani",
"email": "alvin.litani@veritrans.co.id"
},
{
"name": "Ismail Faruqi",
"email": "ismail.faruqi@veritrans.co.id"
}
],
"description": "PHP Wrapper for Midtrans Payment API.",
"homepage": "https://midtrans.com",
"support": {
"issues": "https://github.com/Midtrans/midtrans-php/issues",
"source": "https://github.com/Midtrans/midtrans-php/tree/2.5.2"
},
"time": "2021-08-23T08:52:05+00:00"
},
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "3.4.0", "version": "3.4.0",

View File

@ -12,18 +12,22 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::create('transactions', function (Blueprint $table) { Schema::create('transactions', function (Blueprint $table) {
$table->uuid('order_id')->primary(); //order_id $table->uuid('id')->primary(); //order_id
$table->string('pembeli'); // untuk customer_details $table->string('pembeli'); // untuk customer_details
$table->string('penjual'); //merchant_name $table->string('penjual'); //merchant_name
$table->string('judul_transaksi'); // item_details -> item_name $table->string('nama_barang'); // item_details -> item_name
$table->string('deskripsi_transaksi'); $table->string('deskripsi_transaksi')->nullable();
$table->string('satuan_barang');
$table->double('harga_barang'); // harga sebelum penambahan
$table->double('jumlah_barang');
$table->double('persentase_keuntungan'); // persentase keuntungan $table->double('persentase_keuntungan'); // persentase keuntungan
$table->double('total_keuntungan'); // perolehan keuntungan $table->double('total_keuntungan'); // perolehan keuntungan
$table->double('harga'); // harga sebelum penambahan
$table->double('biaya_admin'); // biaya tambahan $table->double('biaya_admin'); // biaya tambahan
$table->double('total_harga'); // gross amount $table->double('total_harga'); // gross amount
$table->string('signature_key'); $table->double('total_bayar');
$table->string('metode_pembayaran'); $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->enum('status',['Settlement','Capture','Pending','Cancel','Refund','Expire','Failure','Progress','Failed'])->default('Pending'); // transaction_status
$table->timestamp('batas_pembayaran'); $table->timestamp('batas_pembayaran');
$table->timestamp('batas_pengiriman_barang'); $table->timestamp('batas_pengiriman_barang');

View File

@ -18,7 +18,7 @@ return new class extends Migration
$table->timestamp('due_date'); $table->timestamp('due_date');
$table->enum('status',['Partial Refund','Deny','Pending'])->default('Pending'); $table->enum('status',['Partial Refund','Deny','Pending'])->default('Pending');
$table->foreign('order_id')->on('transactions')->references('order_id'); $table->foreign('order_id')->on('transactions')->references('id');
}); });
} }

View File

@ -16,7 +16,7 @@ return new class extends Migration
$table->string('bulan',20); $table->string('bulan',20);
$table->string('tahun',5); $table->string('tahun',5);
$table->string('persentase',5); $table->string('persentase',5);
$table->string('status',15); $table->enum('status',['Active', 'Nonactive']);
$table->timestamps(); $table->timestamps();
}); });
} }

View File

@ -20,7 +20,7 @@ return new class extends Migration
$table->string('deskripsi'); $table->string('deskripsi');
$table->timestamps(); $table->timestamps();
$table->foreign('order_id')->on('transactions')->references('order_id'); $table->foreign('order_id')->on('transactions')->references('id');
$table->foreign('user')->on('users')->references('email'); $table->foreign('user')->on('users')->references('email');
}); });
} }

View File

@ -846,8 +846,9 @@ tr:first-child > td > .fc-day-grid-event {
border-top: 1px solid #f2f2f2; border-top: 1px solid #f2f2f2;
} }
} }
/* 1.18 Select2 */
.select2-container--default /* 1.18 Select2
/* .select2-container--default
.select2-search--dropdown .select2-search--dropdown
.select2-search__field:focus { .select2-search__field:focus {
outline: none; outline: none;
@ -949,6 +950,7 @@ tr:first-child > td > .fc-day-grid-event {
.select2-results__option { .select2-results__option {
padding-right: 10px 15px; padding-right: 10px 15px;
} }
*/
/* 1.19 Selectric */ /* 1.19 Selectric */
.selectric { .selectric {

File diff suppressed because one or more lines are too long

View File

@ -275,6 +275,14 @@ form p {
transform: translateY(-0.252m); transform: translateY(-0.252m);
} }
.btn-otp:disabled {
cursor: not-allowed; /* Mengganti cursor menjadi "not-allowed" saat tombol dinonaktifkan */
opacity: 0.6; /* Mengurangi opasitas tombol saat dinonaktifkan */
border-color: #ccc; /* Mengganti warna border saat dinonaktifkan */
color: #ccc; /* Mengganti warna teks saat dinonaktifkan */
pointer-events: none; /* Mencegah interaksi dengan tombol saat dinonaktifkan */
}
.panels-container { .panels-container {
position: absolute; position: absolute;
height: 100%; height: 100%;

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -114,13 +114,6 @@ form_4_back_btn.addEventListener("click", function () {
form_4_progessbar.classList.remove("active"); form_4_progessbar.classList.remove("active");
}); });
// btn_done.addEventListener("click", function () {
// modal_wrapper.classList.add("active");
// });
// shadow.addEventListener("click", function () {
// modal_wrapper.classList.remove("active");
// });
/****************************************** /******************************************
* MULTIPLE FORM END * MULTIPLE FORM END
******************************************/ ******************************************/

View File

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

View File

@ -1,14 +1,15 @@
"use strict"; "use strict";
// ChartJS // ChartJS
if(window.Chart) { if (window.Chart) {
Chart.defaults.global.defaultFontFamily = "'Nunito', 'Segoe UI', 'Arial'"; Chart.defaults.global.defaultFontFamily = "'Nunito', 'Segoe UI', 'Arial'";
Chart.defaults.global.defaultFontSize = 11; Chart.defaults.global.defaultFontSize = 11;
Chart.defaults.global.defaultFontStyle = 500; Chart.defaults.global.defaultFontStyle = 500;
Chart.defaults.global.defaultFontColor = "#999"; Chart.defaults.global.defaultFontColor = "#999";
Chart.defaults.global.tooltips.backgroundColor = '#000'; Chart.defaults.global.tooltips.backgroundColor = "#000";
Chart.defaults.global.tooltips.titleFontFamily = "'Nunito', 'Segoe UI', 'Arial'"; Chart.defaults.global.tooltips.titleFontFamily =
Chart.defaults.global.tooltips.titleFontColor = '#fff'; "'Nunito', 'Segoe UI', 'Arial'";
Chart.defaults.global.tooltips.titleFontColor = "#fff";
Chart.defaults.global.tooltips.titleFontSize = 20; Chart.defaults.global.tooltips.titleFontSize = 20;
Chart.defaults.global.tooltips.xPadding = 10; Chart.defaults.global.tooltips.xPadding = 10;
Chart.defaults.global.tooltips.yPadding = 10; Chart.defaults.global.tooltips.yPadding = 10;
@ -16,14 +17,14 @@ if(window.Chart) {
} }
// DropzoneJS // DropzoneJS
if(window.Dropzone) { if (window.Dropzone) {
Dropzone.autoDiscover = false; Dropzone.autoDiscover = false;
} }
// Basic confirm box // Basic confirm box
$('[data-confirm]').each(function() { $("[data-confirm]").each(function () {
var me = $(this), var me = $(this),
me_data = me.data('confirm'); me_data = me.data("confirm");
me_data = me_data.split("|"); me_data = me_data.split("|");
me.fireModal({ me.fireModal({
@ -31,149 +32,166 @@ $('[data-confirm]').each(function() {
body: me_data[1], body: me_data[1],
buttons: [ buttons: [
{ {
text: me.data('confirm-text-yes') || 'Yes', text: me.data("confirm-text-yes") || "Yes",
class: 'btn btn-danger btn-shadow', class: "btn btn-danger btn-shadow",
handler: function() { handler: function () {
eval(me.data('confirm-yes')); eval(me.data("confirm-yes"));
} },
}, },
{ {
text: me.data('confirm-text-cancel') || 'Cancel', text: me.data("confirm-text-cancel") || "Cancel",
class: 'btn btn-secondary', class: "btn btn-secondary",
handler: function(modal) { handler: function (modal) {
$.destroyModal(modal); $.destroyModal(modal);
eval(me.data('confirm-no')); eval(me.data("confirm-no"));
} },
} },
] ],
}) });
}); });
// Global // Global
$(function() { $(function () {
let sidebar_nicescroll_opts = { let sidebar_nicescroll_opts = {
cursoropacitymin: 0, cursoropacitymin: 0,
cursoropacitymax: .8, cursoropacitymax: 0.8,
zindex: 892 zindex: 892,
}, now_layout_class = null; },
now_layout_class = null;
var sidebar_sticky = function() { var sidebar_sticky = function () {
if($("body").hasClass('layout-2')) { if ($("body").hasClass("layout-2")) {
$("body.layout-2 #sidebar-wrapper").stick_in_parent({ $("body.layout-2 #sidebar-wrapper").stick_in_parent({
parent: $('body') parent: $("body"),
});
$("body.layout-2 #sidebar-wrapper").stick_in_parent({
recalc_every: 1,
}); });
$("body.layout-2 #sidebar-wrapper").stick_in_parent({recalc_every: 1});
}
} }
};
sidebar_sticky(); sidebar_sticky();
var sidebar_nicescroll; var sidebar_nicescroll;
var update_sidebar_nicescroll = function() { var update_sidebar_nicescroll = function () {
let a = setInterval(function() { let a = setInterval(function () {
if(sidebar_nicescroll != null) if (sidebar_nicescroll != null) sidebar_nicescroll.resize();
sidebar_nicescroll.resize();
}, 10); }, 10);
setTimeout(function() { setTimeout(function () {
clearInterval(a); clearInterval(a);
}, 600); }, 600);
} };
var sidebar_dropdown = function() { var sidebar_dropdown = function () {
if($(".main-sidebar").length) { if ($(".main-sidebar").length) {
$(".main-sidebar").niceScroll(sidebar_nicescroll_opts); $(".main-sidebar").niceScroll(sidebar_nicescroll_opts);
sidebar_nicescroll = $(".main-sidebar").getNiceScroll(); sidebar_nicescroll = $(".main-sidebar").getNiceScroll();
$(".main-sidebar .sidebar-menu li a.has-dropdown").off('click').on('click', function() { $(".main-sidebar .sidebar-menu li a.has-dropdown")
.off("click")
.on("click", function () {
var me = $(this); var me = $(this);
me.parent().find('> .dropdown-menu').slideToggle(500, function() { me.parent()
.find("> .dropdown-menu")
.slideToggle(500, function () {
update_sidebar_nicescroll(); update_sidebar_nicescroll();
return false; return false;
}); });
return false; return false;
}); });
} }
} };
sidebar_dropdown(); sidebar_dropdown();
if($("#top-5-scroll").length) { if ($("#top-5-scroll").length) {
$("#top-5-scroll").css({ $("#top-5-scroll")
height: 315 .css({
}).niceScroll(); height: 315,
})
.niceScroll();
} }
$(".main-content").css({ $(".main-content").css({
minHeight: $(window).outerHeight() - 95 minHeight: $(window).outerHeight() - 95,
}) });
$(".nav-collapse-toggle").click(function() { $(".nav-collapse-toggle").click(function () {
$(this).parent().find('.navbar-nav').toggleClass('show'); $(this).parent().find(".navbar-nav").toggleClass("show");
return false; return false;
}); });
$(document).on('click', function(e) { $(document).on("click", function (e) {
$(".nav-collapse .navbar-nav").removeClass('show'); $(".nav-collapse .navbar-nav").removeClass("show");
}); });
var toggle_sidebar_mini = function(mini) { var toggle_sidebar_mini = function (mini) {
let body = $('body'); let body = $("body");
if(!mini) { if (!mini) {
body.removeClass('sidebar-mini'); body.removeClass("sidebar-mini");
$(".main-sidebar").css({ $(".main-sidebar").css({
overflow: 'hidden' overflow: "hidden",
}); });
setTimeout(function() { setTimeout(function () {
$(".main-sidebar").niceScroll(sidebar_nicescroll_opts); $(".main-sidebar").niceScroll(sidebar_nicescroll_opts);
sidebar_nicescroll = $(".main-sidebar").getNiceScroll(); sidebar_nicescroll = $(".main-sidebar").getNiceScroll();
}, 500); }, 500);
$(".main-sidebar .sidebar-menu > li > ul .dropdown-title").remove(); $(".main-sidebar .sidebar-menu > li > ul .dropdown-title").remove();
$(".main-sidebar .sidebar-menu > li > a").removeAttr('data-toggle'); $(".main-sidebar .sidebar-menu > li > a").removeAttr("data-toggle");
$(".main-sidebar .sidebar-menu > li > a").removeAttr('data-original-title'); $(".main-sidebar .sidebar-menu > li > a").removeAttr(
$(".main-sidebar .sidebar-menu > li > a").removeAttr('title'); "data-original-title"
}else{ );
body.addClass('sidebar-mini'); $(".main-sidebar .sidebar-menu > li > a").removeAttr("title");
body.removeClass('sidebar-show'); } else {
body.addClass("sidebar-mini");
body.removeClass("sidebar-show");
sidebar_nicescroll.remove(); sidebar_nicescroll.remove();
sidebar_nicescroll = null; sidebar_nicescroll = null;
$(".main-sidebar .sidebar-menu > li").each(function() { $(".main-sidebar .sidebar-menu > li").each(function () {
let me = $(this); let me = $(this);
if(me.find('> .dropdown-menu').length) { if (me.find("> .dropdown-menu").length) {
me.find('> .dropdown-menu').hide(); me.find("> .dropdown-menu").hide();
me.find('> .dropdown-menu').prepend('<li class="dropdown-title pt-3">'+ me.find('> a').text() +'</li>'); me.find("> .dropdown-menu").prepend(
}else{ '<li class="dropdown-title pt-3">' +
me.find('> a').attr('data-toggle', 'tooltip'); me.find("> a").text() +
me.find('> a').attr('data-original-title', me.find('> a').text()); "</li>"
);
} else {
me.find("> a").attr("data-toggle", "tooltip");
me.find("> a").attr(
"data-original-title",
me.find("> a").text()
);
$("[data-toggle='tooltip']").tooltip({ $("[data-toggle='tooltip']").tooltip({
placement: 'right' placement: "right",
}); });
} }
}); });
} }
} };
$("[data-toggle='sidebar']").click(function() { $("[data-toggle='sidebar']").click(function () {
var body = $("body"), var body = $("body"),
w = $(window); w = $(window);
if(w.outerWidth() <= 1024) { if (w.outerWidth() <= 1024) {
body.removeClass('search-show search-gone'); body.removeClass("search-show search-gone");
if(body.hasClass('sidebar-gone')) { if (body.hasClass("sidebar-gone")) {
body.removeClass('sidebar-gone'); body.removeClass("sidebar-gone");
body.addClass('sidebar-show'); body.addClass("sidebar-show");
}else{ } else {
body.addClass('sidebar-gone'); body.addClass("sidebar-gone");
body.removeClass('sidebar-show'); body.removeClass("sidebar-show");
} }
update_sidebar_nicescroll(); update_sidebar_nicescroll();
}else{ } else {
body.removeClass('search-show search-gone'); body.removeClass("search-show search-gone");
if(body.hasClass('sidebar-mini')) { if (body.hasClass("sidebar-mini")) {
toggle_sidebar_mini(false); toggle_sidebar_mini(false);
}else{ } else {
toggle_sidebar_mini(true); toggle_sidebar_mini(true);
} }
} }
@ -181,30 +199,38 @@ $(function() {
return false; return false;
}); });
var toggleLayout = function() { var toggleLayout = function () {
var w = $(window), var w = $(window),
layout_class = $('body').attr('class') || '', layout_class = $("body").attr("class") || "",
layout_classes = (layout_class.trim().length > 0 ? layout_class.split(' ') : ''); layout_classes =
layout_class.trim().length > 0 ? layout_class.split(" ") : "";
if(layout_classes.length > 0) { if (layout_classes.length > 0) {
layout_classes.forEach(function(item) { layout_classes.forEach(function (item) {
if(item.indexOf('layout-') != -1) { if (item.indexOf("layout-") != -1) {
now_layout_class = item; now_layout_class = item;
} }
}); });
} }
if(w.outerWidth() <= 1024) { if (w.outerWidth() <= 1024) {
if($('body').hasClass('sidebar-mini')) { if ($("body").hasClass("sidebar-mini")) {
toggle_sidebar_mini(false); toggle_sidebar_mini(false);
$('.main-sidebar').niceScroll(sidebar_nicescroll_opts); $(".main-sidebar").niceScroll(sidebar_nicescroll_opts);
sidebar_nicescroll = $(".main-sidebar").getNiceScroll(); sidebar_nicescroll = $(".main-sidebar").getNiceScroll();
} }
$("body").addClass("sidebar-gone"); $("body").addClass("sidebar-gone");
$("body").removeClass("layout-2 layout-3 sidebar-mini sidebar-show"); $("body").removeClass(
$("body").off('click').on('click', function(e) { "layout-2 layout-3 sidebar-mini sidebar-show"
if($(e.target).hasClass('sidebar-show') || $(e.target).hasClass('search-show')) { );
$("body")
.off("click")
.on("click", function (e) {
if (
$(e.target).hasClass("sidebar-show") ||
$(e.target).hasClass("search-show")
) {
$("body").removeClass("sidebar-show"); $("body").removeClass("sidebar-show");
$("body").addClass("sidebar-gone"); $("body").addClass("sidebar-gone");
$("body").removeClass("search-show"); $("body").removeClass("search-show");
@ -215,77 +241,98 @@ $(function() {
update_sidebar_nicescroll(); update_sidebar_nicescroll();
if(now_layout_class == 'layout-3') { if (now_layout_class == "layout-3") {
let nav_second_classes = $(".navbar-secondary").attr('class'), let nav_second_classes = $(".navbar-secondary").attr("class"),
nav_second = $(".navbar-secondary"); nav_second = $(".navbar-secondary");
nav_second.attr('data-nav-classes', nav_second_classes); nav_second.attr("data-nav-classes", nav_second_classes);
nav_second.removeAttr('class'); nav_second.removeAttr("class");
nav_second.addClass('main-sidebar'); nav_second.addClass("main-sidebar");
let main_sidebar = $(".main-sidebar"); let main_sidebar = $(".main-sidebar");
main_sidebar.find('.container').addClass('sidebar-wrapper').removeClass('container'); main_sidebar
main_sidebar.find('.navbar-nav').addClass('sidebar-menu').removeClass('navbar-nav'); .find(".container")
main_sidebar.find('.sidebar-menu .nav-item.dropdown.show a').click(); .addClass("sidebar-wrapper")
main_sidebar.find('.sidebar-brand').remove(); .removeClass("container");
main_sidebar.find('.sidebar-menu').before($('<div>', { main_sidebar
class: 'sidebar-brand' .find(".navbar-nav")
.addClass("sidebar-menu")
.removeClass("navbar-nav");
main_sidebar
.find(".sidebar-menu .nav-item.dropdown.show a")
.click();
main_sidebar.find(".sidebar-brand").remove();
main_sidebar.find(".sidebar-menu").before(
$("<div>", {
class: "sidebar-brand",
}).append( }).append(
$('<a>', { $("<a>", {
href: $('.navbar-brand').attr('href'), href: $(".navbar-brand").attr("href"),
}).html($('.navbar-brand').html()) }).html($(".navbar-brand").html())
)); )
setTimeout(function() { );
sidebar_nicescroll = main_sidebar.niceScroll(sidebar_nicescroll_opts); setTimeout(function () {
sidebar_nicescroll = main_sidebar.niceScroll(
sidebar_nicescroll_opts
);
sidebar_nicescroll = main_sidebar.getNiceScroll(); sidebar_nicescroll = main_sidebar.getNiceScroll();
}, 700); }, 700);
sidebar_dropdown(); sidebar_dropdown();
$(".main-wrapper").removeClass("container"); $(".main-wrapper").removeClass("container");
} }
}else{ } else {
$("body").removeClass("sidebar-gone sidebar-show"); $("body").removeClass("sidebar-gone sidebar-show");
if(now_layout_class) if (now_layout_class) $("body").addClass(now_layout_class);
$("body").addClass(now_layout_class);
let nav_second_classes = $(".main-sidebar").attr('data-nav-classes'), let nav_second_classes =
$(".main-sidebar").attr("data-nav-classes"),
nav_second = $(".main-sidebar"); nav_second = $(".main-sidebar");
if(now_layout_class == 'layout-3' && nav_second.hasClass('main-sidebar')) { if (
nav_second.find(".sidebar-menu li a.has-dropdown").off('click'); now_layout_class == "layout-3" &&
nav_second.find('.sidebar-brand').remove(); nav_second.hasClass("main-sidebar")
nav_second.removeAttr('class'); ) {
nav_second.find(".sidebar-menu li a.has-dropdown").off("click");
nav_second.find(".sidebar-brand").remove();
nav_second.removeAttr("class");
nav_second.addClass(nav_second_classes); nav_second.addClass(nav_second_classes);
let main_sidebar = $(".navbar-secondary"); let main_sidebar = $(".navbar-secondary");
main_sidebar.find('.sidebar-wrapper').addClass('container').removeClass('sidebar-wrapper'); main_sidebar
main_sidebar.find('.sidebar-menu').addClass('navbar-nav').removeClass('sidebar-menu'); .find(".sidebar-wrapper")
main_sidebar.find('.dropdown-menu').hide(); .addClass("container")
main_sidebar.removeAttr('style'); .removeClass("sidebar-wrapper");
main_sidebar.removeAttr('tabindex'); main_sidebar
main_sidebar.removeAttr('data-nav-classes'); .find(".sidebar-menu")
.addClass("navbar-nav")
.removeClass("sidebar-menu");
main_sidebar.find(".dropdown-menu").hide();
main_sidebar.removeAttr("style");
main_sidebar.removeAttr("tabindex");
main_sidebar.removeAttr("data-nav-classes");
$(".main-wrapper").addClass("container"); $(".main-wrapper").addClass("container");
// if(sidebar_nicescroll != null) // if(sidebar_nicescroll != null)
// sidebar_nicescroll.remove(); // sidebar_nicescroll.remove();
}else if(now_layout_class == 'layout-2') { } else if (now_layout_class == "layout-2") {
$("body").addClass("layout-2"); $("body").addClass("layout-2");
}else{ } else {
update_sidebar_nicescroll(); update_sidebar_nicescroll();
} }
} }
} };
toggleLayout(); toggleLayout();
$(window).resize(toggleLayout); $(window).resize(toggleLayout);
$("[data-toggle='search']").click(function() { $("[data-toggle='search']").click(function () {
var body = $("body"); var body = $("body");
if(body.hasClass('search-gone')) { if (body.hasClass("search-gone")) {
body.addClass('search-gone'); body.addClass("search-gone");
body.removeClass('search-show'); body.removeClass("search-show");
}else{ } else {
body.removeClass('search-gone'); body.removeClass("search-gone");
body.addClass('search-show'); body.addClass("search-show");
} }
}); });
@ -294,49 +341,55 @@ $(function() {
// popover // popover
$('[data-toggle="popover"]').popover({ $('[data-toggle="popover"]').popover({
container: 'body' container: "body",
}); });
// Select2 // Select2
if(jQuery().select2) { // if(jQuery().select2) {
$(".select2").select2(); // $(".select2").select2();
} // }
// Selectric // Selectric
if(jQuery().selectric) { if (jQuery().selectric) {
$(".selectric").selectric({ $(".selectric").selectric({
disableOnMobile: false, disableOnMobile: false,
nativeOnMobile: false nativeOnMobile: false,
}); });
} }
$(".notification-toggle").dropdown(); $(".notification-toggle").dropdown();
$(".notification-toggle").parent().on('shown.bs.dropdown', function() { $(".notification-toggle")
.parent()
.on("shown.bs.dropdown", function () {
$(".dropdown-list-icons").niceScroll({ $(".dropdown-list-icons").niceScroll({
cursoropacitymin: .3, cursoropacitymin: 0.3,
cursoropacitymax: .8, cursoropacitymax: 0.8,
cursorwidth: 7 cursorwidth: 7,
}); });
}); });
$(".message-toggle").dropdown(); $(".message-toggle").dropdown();
$(".message-toggle").parent().on('shown.bs.dropdown', function() { $(".message-toggle")
.parent()
.on("shown.bs.dropdown", function () {
$(".dropdown-list-message").niceScroll({ $(".dropdown-list-message").niceScroll({
cursoropacitymin: .3, cursoropacitymin: 0.3,
cursoropacitymax: .8, cursoropacitymax: 0.8,
cursorwidth: 7 cursorwidth: 7,
}); });
}); });
if($(".chat-content").length) { if ($(".chat-content").length) {
$(".chat-content").niceScroll({ $(".chat-content").niceScroll({
cursoropacitymin: .3, cursoropacitymin: 0.3,
cursoropacitymax: .8, cursoropacitymax: 0.8,
}); });
$('.chat-content').getNiceScroll(0).doScrollTop($('.chat-content').height()); $(".chat-content")
.getNiceScroll(0)
.doScrollTop($(".chat-content").height());
} }
if(jQuery().summernote) { if (jQuery().summernote) {
$(".summernote").summernote({ $(".summernote").summernote({
dialogsInBody: true, dialogsInBody: true,
minHeight: 250, minHeight: 250,
@ -345,58 +398,58 @@ $(function() {
dialogsInBody: true, dialogsInBody: true,
minHeight: 150, minHeight: 150,
toolbar: [ toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']], ["style", ["bold", "italic", "underline", "clear"]],
['font', ['strikethrough']], ["font", ["strikethrough"]],
['para', ['paragraph']] ["para", ["paragraph"]],
] ],
}); });
} }
if(window.CodeMirror) { if (window.CodeMirror) {
$(".codeeditor").each(function() { $(".codeeditor").each(function () {
let editor = CodeMirror.fromTextArea(this, { let editor = CodeMirror.fromTextArea(this, {
lineNumbers: true, lineNumbers: true,
theme: "duotone-dark", theme: "duotone-dark",
mode: 'javascript', mode: "javascript",
height: 200 height: 200,
}); });
editor.setSize("100%", 200); editor.setSize("100%", 200);
}); });
} }
// Follow function // Follow function
$('.follow-btn, .following-btn').each(function() { $(".follow-btn, .following-btn").each(function () {
var me = $(this), var me = $(this),
follow_text = 'Follow', follow_text = "Follow",
unfollow_text = 'Following'; unfollow_text = "Following";
me.click(function() { me.click(function () {
if(me.hasClass('following-btn')) { if (me.hasClass("following-btn")) {
me.removeClass('btn-danger'); me.removeClass("btn-danger");
me.removeClass('following-btn'); me.removeClass("following-btn");
me.addClass('btn-primary'); me.addClass("btn-primary");
me.html(follow_text); me.html(follow_text);
eval(me.data('unfollow-action')); eval(me.data("unfollow-action"));
}else{ } else {
me.removeClass('btn-primary'); me.removeClass("btn-primary");
me.addClass('btn-danger'); me.addClass("btn-danger");
me.addClass('following-btn'); me.addClass("following-btn");
me.html(unfollow_text); me.html(unfollow_text);
eval(me.data('follow-action')); eval(me.data("follow-action"));
} }
return false; return false;
}); });
}); });
// Dismiss function // Dismiss function
$("[data-dismiss]").each(function() { $("[data-dismiss]").each(function () {
var me = $(this), var me = $(this),
target = me.data('dismiss'); target = me.data("dismiss");
me.click(function() { me.click(function () {
$(target).fadeOut(function() { $(target).fadeOut(function () {
$(target).remove(); $(target).remove();
}); });
return false; return false;
@ -404,16 +457,16 @@ $(function() {
}); });
// Collapsable // Collapsable
$("[data-collapse]").each(function() { $("[data-collapse]").each(function () {
var me = $(this), var me = $(this),
target = me.data('collapse'); target = me.data("collapse");
me.click(function() { me.click(function () {
$(target).collapse('toggle'); $(target).collapse("toggle");
$(target).on('shown.bs.collapse', function() { $(target).on("shown.bs.collapse", function () {
me.html('<i class="fas fa-minus"></i>'); me.html('<i class="fas fa-minus"></i>');
}); });
$(target).on('hidden.bs.collapse', function() { $(target).on("hidden.bs.collapse", function () {
me.html('<i class="fas fa-plus"></i>'); me.html('<i class="fas fa-plus"></i>');
}); });
return false; return false;
@ -421,164 +474,166 @@ $(function() {
}); });
// Gallery // Gallery
$(".gallery .gallery-item").each(function() { $(".gallery .gallery-item").each(function () {
var me = $(this); var me = $(this);
me.attr('href', me.data('image')); me.attr("href", me.data("image"));
me.attr('title', me.data('title')); me.attr("title", me.data("title"));
if(me.parent().hasClass('gallery-fw')) { if (me.parent().hasClass("gallery-fw")) {
me.css({ me.css({
height: me.parent().data('item-height'), height: me.parent().data("item-height"),
}); });
me.find('div').css({ me.find("div").css({
lineHeight: me.parent().data('item-height') + 'px' lineHeight: me.parent().data("item-height") + "px",
}); });
} }
me.css({ me.css({
backgroundImage: 'url("'+ me.data('image') +'")' backgroundImage: 'url("' + me.data("image") + '")',
}); });
}); });
if(jQuery().Chocolat) { if (jQuery().Chocolat) {
$(".gallery").Chocolat({ $(".gallery").Chocolat({
className: 'gallery', className: "gallery",
imageSelector: '.gallery-item', imageSelector: ".gallery-item",
}); });
} }
// Background // Background
$("[data-background]").each(function() { $("[data-background]").each(function () {
var me = $(this); var me = $(this);
me.css({ me.css({
backgroundImage: 'url(' + me.data('background') + ')' backgroundImage: "url(" + me.data("background") + ")",
}); });
}); });
// Custom Tab // Custom Tab
$("[data-tab]").each(function() { $("[data-tab]").each(function () {
var me = $(this); var me = $(this);
me.click(function() { me.click(function () {
if(!me.hasClass('active')) { if (!me.hasClass("active")) {
var tab_group = $('[data-tab-group="' + me.data('tab') + '"]'), var tab_group = $('[data-tab-group="' + me.data("tab") + '"]'),
tab_group_active = $('[data-tab-group="' + me.data('tab') + '"].active'), tab_group_active = $(
target = $(me.attr('href')), '[data-tab-group="' + me.data("tab") + '"].active'
links = $('[data-tab="'+me.data('tab') +'"]'); ),
target = $(me.attr("href")),
links = $('[data-tab="' + me.data("tab") + '"]');
links.removeClass('active'); links.removeClass("active");
me.addClass('active'); me.addClass("active");
target.addClass('active'); target.addClass("active");
tab_group_active.removeClass('active'); tab_group_active.removeClass("active");
} }
return false; return false;
}); });
}); });
// Bootstrap 4 Validation // Bootstrap 4 Validation
$(".needs-validation").submit(function() { $(".needs-validation").submit(function () {
var form = $(this); var form = $(this);
if (form[0].checkValidity() === false) { if (form[0].checkValidity() === false) {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} }
form.addClass('was-validated'); form.addClass("was-validated");
}); });
// alert dismissible // alert dismissible
$(".alert-dismissible").each(function() { $(".alert-dismissible").each(function () {
var me = $(this); var me = $(this);
me.find('.close').click(function() { me.find(".close").click(function () {
me.alert('close'); me.alert("close");
}); });
}); });
if($('.main-navbar').length) { if ($(".main-navbar").length) {
} }
// Image cropper // Image cropper
$('[data-crop-image]').each(function(e) { $("[data-crop-image]").each(function (e) {
$(this).css({ $(this).css({
overflow: 'hidden', overflow: "hidden",
position: 'relative', position: "relative",
height: $(this).data('crop-image') height: $(this).data("crop-image"),
}); });
}); });
// Slide Toggle // Slide Toggle
$('[data-toggle-slide]').click(function() { $("[data-toggle-slide]").click(function () {
let target = $(this).data('toggle-slide'); let target = $(this).data("toggle-slide");
$(target).slideToggle(); $(target).slideToggle();
return false; return false;
}); });
// Dismiss modal // Dismiss modal
$("[data-dismiss=modal]").click(function() { $("[data-dismiss=modal]").click(function () {
$(this).closest('.modal').modal('hide'); $(this).closest(".modal").modal("hide");
return false; return false;
}); });
// Width attribute // Width attribute
$('[data-width]').each(function() { $("[data-width]").each(function () {
$(this).css({ $(this).css({
width: $(this).data('width') width: $(this).data("width"),
}); });
}); });
// Height attribute // Height attribute
$('[data-height]').each(function() { $("[data-height]").each(function () {
$(this).css({ $(this).css({
height: $(this).data('height') height: $(this).data("height"),
}); });
}); });
// Chocolat // Chocolat
if($('.chocolat-parent').length && jQuery().Chocolat) { if ($(".chocolat-parent").length && jQuery().Chocolat) {
$('.chocolat-parent').Chocolat(); $(".chocolat-parent").Chocolat();
} }
// Sortable card // Sortable card
if($('.sortable-card').length && jQuery().sortable) { if ($(".sortable-card").length && jQuery().sortable) {
$('.sortable-card').sortable({ $(".sortable-card").sortable({
handle: '.card-header', handle: ".card-header",
opacity: .8, opacity: 0.8,
tolerance: 'pointer' tolerance: "pointer",
}); });
} }
// Daterangepicker // Daterangepicker
if(jQuery().daterangepicker) { if (jQuery().daterangepicker) {
if($(".datepicker").length) { if ($(".datepicker").length) {
$('.datepicker').daterangepicker({ $(".datepicker").daterangepicker({
locale: {format: 'YYYY-MM-DD'}, locale: { format: "YYYY-MM-DD" },
singleDatePicker: true, singleDatePicker: true,
}); });
} }
if($(".datetimepicker").length) { if ($(".datetimepicker").length) {
$('.datetimepicker').daterangepicker({ $(".datetimepicker").daterangepicker({
locale: {format: 'YYYY-MM-DD hh:mm'}, locale: { format: "YYYY-MM-DD hh:mm" },
singleDatePicker: true, singleDatePicker: true,
timePicker: true, timePicker: true,
timePicker24Hour: true, timePicker24Hour: true,
}); });
} }
if($(".daterange").length) { if ($(".daterange").length) {
$('.daterange').daterangepicker({ $(".daterange").daterangepicker({
locale: {format: 'YYYY-MM-DD'}, locale: { format: "YYYY-MM-DD" },
drops: 'down', drops: "down",
opens: 'right' opens: "right",
}); });
} }
} }
// Timepicker // Timepicker
if(jQuery().timepicker && $(".timepicker").length) { if (jQuery().timepicker && $(".timepicker").length) {
$(".timepicker").timepicker({ $(".timepicker").timepicker({
icons: { icons: {
up: 'fas fa-chevron-up', up: "fas fa-chevron-up",
down: 'fas fa-chevron-down' down: "fas fa-chevron-down",
} },
}); });
} }
}); });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3,49 +3,63 @@
display: inline-block; display: inline-block;
margin: 0; margin: 0;
position: relative; position: relative;
vertical-align: middle; } vertical-align: middle;
.select2-container .select2-selection--single { }
.select2-container .select2-selection--single {
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
display: block; display: block;
height: 28px; height: 28px;
user-select: none; user-select: none;
-webkit-user-select: none; } -webkit-user-select: none;
.select2-container .select2-selection--single .select2-selection__rendered { }
.select2-container .select2-selection--single .select2-selection__rendered {
display: block; display: block;
padding-left: 8px; padding-left: 8px;
padding-right: 20px; padding-right: 20px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; } white-space: nowrap;
.select2-container .select2-selection--single .select2-selection__clear { }
position: relative; } .select2-container .select2-selection--single .select2-selection__clear {
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { position: relative;
}
.select2-container[dir="rtl"]
.select2-selection--single
.select2-selection__rendered {
padding-right: 8px; padding-right: 8px;
padding-left: 20px; } padding-left: 20px;
.select2-container .select2-selection--multiple { }
.select2-container .select2-selection--multiple {
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
display: block; display: block;
min-height: 32px; min-height: 32px;
user-select: none; user-select: none;
-webkit-user-select: none; } -webkit-user-select: none;
.select2-container .select2-selection--multiple .select2-selection__rendered { }
.select2-container .select2-selection--multiple .select2-selection__rendered {
display: inline-block; display: inline-block;
overflow: hidden; overflow: hidden;
padding-left: 8px; padding-left: 8px;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; } white-space: nowrap;
.select2-container .select2-search--inline { }
float: left; } .select2-container .select2-search--inline {
.select2-container .select2-search--inline .select2-search__field { float: left;
}
.select2-container .select2-search--inline .select2-search__field {
box-sizing: border-box; box-sizing: border-box;
border: none; border: none;
font-size: 100%; font-size: 100%;
margin-top: 5px; margin-top: 5px;
padding: 0; } padding: 0;
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { }
-webkit-appearance: none; } .select2-container
.select2-search--inline
.select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none;
}
.select2-dropdown { .select2-dropdown {
background-color: white; background-color: white;
@ -56,47 +70,59 @@
position: absolute; position: absolute;
left: -100000px; left: -100000px;
width: 100%; width: 100%;
z-index: 1051; } z-index: 1051;
}
.select2-results { .select2-results {
display: block; } display: block;
}
.select2-results__options { .select2-results__options {
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0; } padding: 0;
}
.select2-results__option { .select2-results__option {
padding: 6px; padding: 6px;
user-select: none; user-select: none;
-webkit-user-select: none; } -webkit-user-select: none;
.select2-results__option[aria-selected] { }
cursor: pointer; } .select2-results__option[aria-selected] {
cursor: pointer;
}
.select2-container--open .select2-dropdown { .select2-container--open .select2-dropdown {
left: 0; } left: 0;
}
.select2-container--open .select2-dropdown--above { .select2-container--open .select2-dropdown--above {
border-bottom: none; border-bottom: none;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; } border-bottom-right-radius: 0;
}
.select2-container--open .select2-dropdown--below { .select2-container--open .select2-dropdown--below {
border-top: none; border-top: none;
border-top-left-radius: 0; border-top-left-radius: 0;
border-top-right-radius: 0; } border-top-right-radius: 0;
}
.select2-search--dropdown { .select2-search--dropdown {
display: block; display: block;
padding: 4px; } padding: 4px;
.select2-search--dropdown .select2-search__field { }
.select2-search--dropdown .select2-search__field {
padding: 4px; padding: 4px;
width: 100%; width: 100%;
box-sizing: border-box; } box-sizing: border-box;
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { }
-webkit-appearance: none; } .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
.select2-search--dropdown.select2-search--hide { -webkit-appearance: none;
display: none; } }
.select2-search--dropdown.select2-search--hide {
display: none;
}
.select2-close-mask { .select2-close-mask {
border: 0; border: 0;
@ -113,7 +139,8 @@
opacity: 0; opacity: 0;
z-index: 99; z-index: 99;
background-color: #fff; background-color: #fff;
filter: alpha(opacity=0); } filter: alpha(opacity=0);
}
.select2-hidden-accessible { .select2-hidden-accessible {
border: 0 !important; border: 0 !important;
@ -123,28 +150,45 @@
overflow: hidden !important; overflow: hidden !important;
padding: 0 !important; padding: 0 !important;
position: absolute !important; position: absolute !important;
width: 1px !important; } width: 1px !important;
}
.select2-container--default .select2-selection--single { .select2-container--default .select2-selection--single {
background-color: #fff; background-color: #fff;
border: 1px solid #aaa; border: 1px solid #aaa;
border-radius: 4px; } border-radius: 4px;
.select2-container--default .select2-selection--single .select2-selection__rendered { }
.select2-container--default
.select2-selection--single
.select2-selection__rendered {
color: #444; color: #444;
line-height: 28px; } line-height: 28px;
.select2-container--default .select2-selection--single .select2-selection__clear { }
.select2-container--default
.select2-selection--single
.select2-selection__clear {
cursor: pointer; cursor: pointer;
float: right; float: right;
font-weight: bold; } font-weight: bold;
.select2-container--default .select2-selection--single .select2-selection__placeholder { }
color: #999; } .select2-container--default
.select2-container--default .select2-selection--single .select2-selection__arrow { .select2-selection--single
.select2-selection__placeholder {
color: #999;
}
.select2-container--default
.select2-selection--single
.select2-selection__arrow {
height: 26px; height: 26px;
position: absolute; position: absolute;
top: 1px; top: 1px;
right: 1px; right: 1px;
width: 20px; } width: 20px;
.select2-container--default .select2-selection--single .select2-selection__arrow b { }
.select2-container--default
.select2-selection--single
.select2-selection__arrow
b {
border-color: #888 transparent transparent transparent; border-color: #888 transparent transparent transparent;
border-style: solid; border-style: solid;
border-width: 5px 4px 0 4px; border-width: 5px 4px 0 4px;
@ -154,49 +198,81 @@
margin-top: -2px; margin-top: -2px;
position: absolute; position: absolute;
top: 50%; top: 50%;
width: 0; } width: 0;
}
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { .select2-container--default[dir="rtl"]
float: left; } .select2-selection--single
.select2-selection__clear {
float: left;
}
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { .select2-container--default[dir="rtl"]
.select2-selection--single
.select2-selection__arrow {
left: 1px; left: 1px;
right: auto; } right: auto;
}
.select2-container--default.select2-container--disabled .select2-selection--single { .select2-container--default.select2-container--disabled
.select2-selection--single {
background-color: #eee; background-color: #eee;
cursor: default; } cursor: default;
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { }
display: none; } .select2-container--default.select2-container--disabled
.select2-selection--single
.select2-selection__clear {
display: none;
}
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { .select2-container--default.select2-container--open
.select2-selection--single
.select2-selection__arrow
b {
border-color: transparent transparent #888 transparent; border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; } border-width: 0 4px 5px 4px;
}
.select2-container--default .select2-selection--multiple { .select2-container--default .select2-selection--multiple {
background-color: white; background-color: white;
border: 1px solid #aaa; border: 1px solid #aaa;
border-radius: 4px; border-radius: 4px;
cursor: text; } cursor: text;
.select2-container--default .select2-selection--multiple .select2-selection__rendered { }
.select2-container--default
.select2-selection--multiple
.select2-selection__rendered {
box-sizing: border-box; box-sizing: border-box;
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0 5px; padding: 0 5px;
width: 100%; } width: 100%;
.select2-container--default .select2-selection--multiple .select2-selection__rendered li { }
list-style: none; } .select2-container--default
.select2-container--default .select2-selection--multiple .select2-selection__placeholder { .select2-selection--multiple
.select2-selection__rendered
li {
list-style: none;
}
.select2-container--default
.select2-selection--multiple
.select2-selection__placeholder {
color: #999; color: #999;
margin-top: 5px; margin-top: 5px;
float: left; } float: left;
.select2-container--default .select2-selection--multiple .select2-selection__clear { }
.select2-container--default
.select2-selection--multiple
.select2-selection__clear {
cursor: pointer; cursor: pointer;
float: right; float: right;
font-weight: bold; font-weight: bold;
margin-top: 5px; margin-top: 5px;
margin-right: 10px; } margin-right: 10px;
.select2-container--default .select2-selection--multiple .select2-selection__choice { }
.select2-container--default
.select2-selection--multiple
.select2-selection__choice {
background-color: #e4e4e4; background-color: #e4e4e4;
border: 1px solid #aaa; border: 1px solid #aaa;
border-radius: 4px; border-radius: 4px;
@ -204,97 +280,177 @@
float: left; float: left;
margin-right: 5px; margin-right: 5px;
margin-top: 5px; margin-top: 5px;
padding: 0 5px; } padding: 0 5px;
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { }
.select2-container--default
.select2-selection--multiple
.select2-selection__choice__remove {
color: #999; color: #999;
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
font-weight: bold; font-weight: bold;
margin-right: 2px; } margin-right: 2px;
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { }
color: #333; } .select2-container--default
.select2-selection--multiple
.select2-selection__choice__remove:hover {
color: #333;
}
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { .select2-container--default[dir="rtl"]
float: right; } .select2-selection--multiple
.select2-selection__choice,
.select2-container--default[dir="rtl"]
.select2-selection--multiple
.select2-selection__placeholder,
.select2-container--default[dir="rtl"]
.select2-selection--multiple
.select2-search--inline {
float: right;
}
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { .select2-container--default[dir="rtl"]
.select2-selection--multiple
.select2-selection__choice {
margin-left: 5px; margin-left: 5px;
margin-right: auto; } margin-right: auto;
}
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { .select2-container--default[dir="rtl"]
.select2-selection--multiple
.select2-selection__choice__remove {
margin-left: 2px; margin-left: 2px;
margin-right: auto; } margin-right: auto;
}
.select2-container--default.select2-container--focus .select2-selection--multiple { .select2-container--default.select2-container--focus
.select2-selection--multiple {
border: solid black 1px; border: solid black 1px;
outline: 0; } outline: 0;
}
.select2-container--default.select2-container--disabled .select2-selection--multiple { .select2-container--default.select2-container--disabled
.select2-selection--multiple {
background-color: #eee; background-color: #eee;
cursor: default; } cursor: default;
}
.select2-container--default.select2-container--disabled .select2-selection__choice__remove { .select2-container--default.select2-container--disabled
display: none; } .select2-selection__choice__remove {
display: none;
}
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { .select2-container--default.select2-container--open.select2-container--above
.select2-selection--single,
.select2-container--default.select2-container--open.select2-container--above
.select2-selection--multiple {
border-top-left-radius: 0; border-top-left-radius: 0;
border-top-right-radius: 0; } border-top-right-radius: 0;
}
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { .select2-container--default.select2-container--open.select2-container--below
.select2-selection--single,
.select2-container--default.select2-container--open.select2-container--below
.select2-selection--multiple {
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; } border-bottom-right-radius: 0;
}
.select2-container--default .select2-search--dropdown .select2-search__field { .select2-container--default .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa; } border: 1px solid #aaa;
}
.select2-container--default .select2-search--inline .select2-search__field { .select2-container--default .select2-search--inline .select2-search__field {
background: transparent; background: transparent;
border: none; border: none;
outline: 0; outline: 0;
box-shadow: none; box-shadow: none;
-webkit-appearance: textfield; } -webkit-appearance: textfield;
}
.select2-container--default .select2-results > .select2-results__options { .select2-container--default .select2-results > .select2-results__options {
max-height: 200px; max-height: 200px;
overflow-y: auto; } overflow-y: auto;
}
.select2-container--default .select2-results__option[role=group] { .select2-container--default .select2-results__option[role="group"] {
padding: 0; } padding: 0;
}
.select2-container--default .select2-results__option[aria-disabled=true] { .select2-container--default .select2-results__option[aria-disabled="true"] {
color: #999; } color: #999;
}
.select2-container--default .select2-results__option[aria-selected=true] { .select2-container--default .select2-results__option[aria-selected="true"] {
background-color: #ddd; } background-color: #ddd;
}
.select2-container--default .select2-results__option .select2-results__option { .select2-container--default .select2-results__option .select2-results__option {
padding-left: 1em; } padding-left: 1em;
.select2-container--default .select2-results__option .select2-results__option .select2-results__group { }
padding-left: 0; } .select2-container--default
.select2-container--default .select2-results__option .select2-results__option .select2-results__option { .select2-results__option
.select2-results__option
.select2-results__group {
padding-left: 0;
}
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option {
margin-left: -1em; margin-left: -1em;
padding-left: 2em; } padding-left: 2em;
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { }
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option {
margin-left: -2em; margin-left: -2em;
padding-left: 3em; } padding-left: 3em;
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { }
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option {
margin-left: -3em; margin-left: -3em;
padding-left: 4em; } padding-left: 4em;
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { }
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option {
margin-left: -4em; margin-left: -4em;
padding-left: 5em; } padding-left: 5em;
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { }
.select2-container--default
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option {
margin-left: -5em; margin-left: -5em;
padding-left: 6em; } padding-left: 6em;
}
.select2-container--default .select2-results__option--highlighted[aria-selected] { .select2-container--default
.select2-results__option--highlighted[aria-selected] {
background-color: #5897fb; background-color: #5897fb;
color: white; } color: white;
}
.select2-container--default .select2-results__group { .select2-container--default .select2-results__group {
cursor: default; cursor: default;
display: block; display: block;
padding: 6px; } padding: 6px;
}
.select2-container--classic .select2-selection--single { .select2-container--classic .select2-selection--single {
background-color: #f7f7f7; background-color: #f7f7f7;
@ -305,20 +461,33 @@
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
.select2-container--classic .select2-selection--single:focus { }
border: 1px solid #5897fb; } .select2-container--classic .select2-selection--single:focus {
.select2-container--classic .select2-selection--single .select2-selection__rendered { border: 1px solid #5897fb;
}
.select2-container--classic
.select2-selection--single
.select2-selection__rendered {
color: #444; color: #444;
line-height: 28px; } line-height: 28px;
.select2-container--classic .select2-selection--single .select2-selection__clear { }
.select2-container--classic
.select2-selection--single
.select2-selection__clear {
cursor: pointer; cursor: pointer;
float: right; float: right;
font-weight: bold; font-weight: bold;
margin-right: 10px; } margin-right: 10px;
.select2-container--classic .select2-selection--single .select2-selection__placeholder { }
color: #999; } .select2-container--classic
.select2-container--classic .select2-selection--single .select2-selection__arrow { .select2-selection--single
.select2-selection__placeholder {
color: #999;
}
.select2-container--classic
.select2-selection--single
.select2-selection__arrow {
background-color: #ddd; background-color: #ddd;
border: none; border: none;
border-left: 1px solid #aaa; border-left: 1px solid #aaa;
@ -333,8 +502,12 @@
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0);
.select2-container--classic .select2-selection--single .select2-selection__arrow b { }
.select2-container--classic
.select2-selection--single
.select2-selection__arrow
b {
border-color: #888 transparent transparent transparent; border-color: #888 transparent transparent transparent;
border-style: solid; border-style: solid;
border-width: 5px 4px 0 4px; border-width: 5px 4px 0 4px;
@ -344,30 +517,46 @@
margin-top: -2px; margin-top: -2px;
position: absolute; position: absolute;
top: 50%; top: 50%;
width: 0; } width: 0;
}
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { .select2-container--classic[dir="rtl"]
float: left; } .select2-selection--single
.select2-selection__clear {
float: left;
}
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { .select2-container--classic[dir="rtl"]
.select2-selection--single
.select2-selection__arrow {
border: none; border: none;
border-right: 1px solid #aaa; border-right: 1px solid #aaa;
border-radius: 0; border-radius: 0;
border-top-left-radius: 4px; border-top-left-radius: 4px;
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
left: 1px; left: 1px;
right: auto; } right: auto;
}
.select2-container--classic.select2-container--open .select2-selection--single { .select2-container--classic.select2-container--open .select2-selection--single {
border: 1px solid #5897fb; } border: 1px solid #5897fb;
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { }
.select2-container--classic.select2-container--open
.select2-selection--single
.select2-selection__arrow {
background: transparent; background: transparent;
border: none; } border: none;
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { }
.select2-container--classic.select2-container--open
.select2-selection--single
.select2-selection__arrow
b {
border-color: transparent transparent #888 transparent; border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; } border-width: 0 4px 5px 4px;
}
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { .select2-container--classic.select2-container--open.select2-container--above
.select2-selection--single {
border-top: none; border-top: none;
border-top-left-radius: 0; border-top-left-radius: 0;
border-top-right-radius: 0; border-top-right-radius: 0;
@ -375,9 +564,11 @@
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
}
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { .select2-container--classic.select2-container--open.select2-container--below
.select2-selection--single {
border-bottom: none; border-bottom: none;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
@ -385,23 +576,34 @@
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
background-repeat: repeat-x; background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0);
}
.select2-container--classic .select2-selection--multiple { .select2-container--classic .select2-selection--multiple {
background-color: white; background-color: white;
border: 1px solid #aaa; border: 1px solid #aaa;
border-radius: 4px; border-radius: 4px;
cursor: text; cursor: text;
outline: 0; } outline: 0;
.select2-container--classic .select2-selection--multiple:focus { }
border: 1px solid #5897fb; } .select2-container--classic .select2-selection--multiple:focus {
.select2-container--classic .select2-selection--multiple .select2-selection__rendered { border: 1px solid #5897fb;
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__rendered {
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0 5px; } padding: 0 5px;
.select2-container--classic .select2-selection--multiple .select2-selection__clear { }
display: none; } .select2-container--classic
.select2-container--classic .select2-selection--multiple .select2-selection__choice { .select2-selection--multiple
.select2-selection__clear {
display: none;
}
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice {
background-color: #e4e4e4; background-color: #e4e4e4;
border: 1px solid #aaa; border: 1px solid #aaa;
border-radius: 4px; border-radius: 4px;
@ -409,76 +611,110 @@
float: left; float: left;
margin-right: 5px; margin-right: 5px;
margin-top: 5px; margin-top: 5px;
padding: 0 5px; } padding: 0 5px;
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { }
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice__remove {
color: #888; color: #888;
cursor: pointer; cursor: pointer;
display: inline-block; display: inline-block;
font-weight: bold; font-weight: bold;
margin-right: 2px; } margin-right: 2px;
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { }
color: #555; } .select2-container--classic
.select2-selection--multiple
.select2-selection__choice__remove:hover {
color: #555;
}
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { .select2-container--classic[dir="rtl"]
float: right; } .select2-selection--multiple
.select2-selection__choice {
float: right;
}
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { .select2-container--classic[dir="rtl"]
.select2-selection--multiple
.select2-selection__choice {
margin-left: 5px; margin-left: 5px;
margin-right: auto; } margin-right: auto;
}
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { .select2-container--classic[dir="rtl"]
.select2-selection--multiple
.select2-selection__choice__remove {
margin-left: 2px; margin-left: 2px;
margin-right: auto; } margin-right: auto;
}
.select2-container--classic.select2-container--open .select2-selection--multiple { .select2-container--classic.select2-container--open
border: 1px solid #5897fb; } .select2-selection--multiple {
border: 1px solid #5897fb;
}
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { .select2-container--classic.select2-container--open.select2-container--above
.select2-selection--multiple {
border-top: none; border-top: none;
border-top-left-radius: 0; border-top-left-radius: 0;
border-top-right-radius: 0; } border-top-right-radius: 0;
}
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { .select2-container--classic.select2-container--open.select2-container--below
.select2-selection--multiple {
border-bottom: none; border-bottom: none;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; } border-bottom-right-radius: 0;
}
.select2-container--classic .select2-search--dropdown .select2-search__field { .select2-container--classic .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa; border: 1px solid #aaa;
outline: 0; } outline: 0;
}
.select2-container--classic .select2-search--inline .select2-search__field { .select2-container--classic .select2-search--inline .select2-search__field {
outline: 0; outline: 0;
box-shadow: none; } box-shadow: none;
}
.select2-container--classic .select2-dropdown { .select2-container--classic .select2-dropdown {
background-color: white; background-color: white;
border: 1px solid transparent; } border: 1px solid transparent;
}
.select2-container--classic .select2-dropdown--above { .select2-container--classic .select2-dropdown--above {
border-bottom: none; } border-bottom: none;
}
.select2-container--classic .select2-dropdown--below { .select2-container--classic .select2-dropdown--below {
border-top: none; } border-top: none;
}
.select2-container--classic .select2-results > .select2-results__options { .select2-container--classic .select2-results > .select2-results__options {
max-height: 200px; max-height: 200px;
overflow-y: auto; } overflow-y: auto;
}
.select2-container--classic .select2-results__option[role=group] { .select2-container--classic .select2-results__option[role="group"] {
padding: 0; } padding: 0;
}
.select2-container--classic .select2-results__option[aria-disabled=true] { .select2-container--classic .select2-results__option[aria-disabled="true"] {
color: grey; } color: grey;
}
.select2-container--classic .select2-results__option--highlighted[aria-selected] { .select2-container--classic
.select2-results__option--highlighted[aria-selected] {
background-color: #3875d7; background-color: #3875d7;
color: white; } color: white;
}
.select2-container--classic .select2-results__group { .select2-container--classic .select2-results__group {
cursor: default; cursor: default;
display: block; display: block;
padding: 6px; } padding: 6px;
}
.select2-container--classic.select2-container--open .select2-dropdown { .select2-container--classic.select2-container--open .select2-dropdown {
border-color: #5897fb; } border-color: #5897fb;
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View File

@ -69,7 +69,10 @@
<!-- /END GA --> <!-- /END GA -->
{{-- JS --}} {{-- JS --}}
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> {{-- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> --}}
<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>
<script src="{{ asset('assets/modules/chart.min.js') }}"></script> <script src="{{ asset('assets/modules/chart.min.js') }}"></script>
</head> </head>
@ -137,26 +140,25 @@
</script> </script>
<!-- General JS Scripts --> <!-- General JS Scripts -->
<script src="{{ asset('assets/modules/jquery.min.js') }}"></script> <script src="{{ asset('assets/modules/popper.js') }}"></script>
<script src="{{ asset('assets/modules/popper.js') }}"></script>i
<script src="{{ asset('assets/modules/tooltip.js') }}"></script> <script src="{{ asset('assets/modules/tooltip.js') }}"></script>
<script src="{{ asset('assets/modules/bootstrap/js/bootstrap.min.js') }}"></script> <script src="{{ asset('assets/modules/bootstrap/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('assets/modules/nicescroll/jquery.nicescroll.min.js') }}"></script>
<script src="{{ asset('assets/modules/moment.min.js') }}"></script> <script src="{{ asset('assets/modules/moment.min.js') }}"></script>
<script src="{{ asset('assets/js/stisla.js') }}"></script> <script src="{{ asset('assets/js/stisla.js') }}"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- JS Libraies --> <!-- JS Libraies -->
<script src="{{ asset('assets/modules/jquery.sparkline.min.js') }}"></script> {{-- <script src="{{ asset('assets/modules/jquery.sparkline.min.js') }}"></script> --}}
<script src="{{ asset('assets/modules/owlcarousel2/dist/owl.carousel.min.js') }}"></script> <script src="{{ asset('assets/modules/owlcarousel2/dist/owl.carousel.min.js') }}"></script>
<script src="{{ asset('assets/modules/summernote/summernote-bs4.js') }}"></script> <script src="{{ asset('assets/modules/summernote/summernote-bs4.js') }}"></script>
<script src="{{ asset('assets/modules/chocolat/dist/js/jquery.chocolat.min.js') }}"></script> {{-- <script src="{{ asset('assets/modules/chocolat/dist/js/jquery.chocolat.min.js') }}"></script> --}}
<!-- JS Libraies --> <!-- JS Libraies -->
<script src="{{ asset('assets/modules/datatables/datatables.min.js') }}"></script> <script src="{{ asset('assets/modules/datatables/datatables.min.js') }}"></script>
<script src="{{ asset('assets/modules/datatables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js') }}"></script> <script src="{{ asset('assets/modules/datatables/DataTables-1.10.16/js/dataTables.bootstrap4.min.js') }}"></script>
<script src="{{ asset('assets/modules/datatables/Select-1.2.4/js/dataTables.select.min.js') }}"></script> <script src="{{ asset('assets/modules/datatables/Select-1.2.4/js/dataTables.select.min.js') }}"></script>
<script src="{{ asset('assets/modules/jquery-ui/jquery-ui.min.js') }}"></script> {{-- <script src="{{ asset('assets/modules/jquery-ui/jquery-ui.min.js') }}"></script> --}}
{{-- <script type="text/javascript"> {{-- <script type="text/javascript">
$(function() { $(function() {
@ -180,14 +182,10 @@
<script src="{{ asset('assets/js/page/modules-datatables.js') }}"></script> <script src="{{ asset('assets/js/page/modules-datatables.js') }}"></script>
<!-- Page Specific JS File --> <!-- Page Specific JS File -->
{{-- <script src="{{ asset('assets/js/page/index.js') }}"></script> --}}
<script src="https://cdn.jsdelivr.net/npm/daterangepicker@3.1.0/daterangepicker.min.js"></script>i <script src="https://cdn.jsdelivr.net/npm/daterangepicker@3.1.0/daterangepicker.min.js"></script>i
{{-- <script src="{{ asset('assets/js/page/index-0.js') }}"></script> --}}
<!-- Template JS File --> <!-- Template JS File -->
<script src="{{ asset('assets/js/scripts.js') }}"></script> <script src="{{ asset('assets/js/scripts.js') }}"></script>
<script src="{{ asset('assets/js/custom.js') }}"></script>
{{-- <script src="{{ asset('assets/js/main.js') }}"></script> --}}
</body> </body>
</html> </html>

View File

@ -55,3 +55,4 @@
</div> --}} </div> --}}
</aside> </aside>
</div> </div>
<script src="{{ asset('assets/modules/nicescroll/jquery.nicescroll.min.js') }}"></script>

View File

@ -3,8 +3,6 @@
<div class="main-content"> <div class="main-content">
<section class="section"> <section class="section">
<div class="section-header"> <div class="section-header">
<div class="section-header-breadcrumb"> <div class="section-header-breadcrumb">
<div class="breadcrumb-item active"><a href="#">Dashboard</a></div> <div class="breadcrumb-item active"><a href="#">Dashboard</a></div>
<div class="breadcrumb-item"><a href="#"> Transaction</a></div> <div class="breadcrumb-item"><a href="#"> Transaction</a></div>
@ -17,30 +15,29 @@
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<div class="hero bg-primary text-white"> <div class="hero bg-primary text-white">
<div class="hero-inner"> <div class="hero-inner">
<h1>Welcome! npannisa</h1> <h1>Welcome! {{ Auth::user()->nama_depan }}</h1>
<p class="lead">How Are You Today?</p> <p class="lead">Mau belanja apa hari ini?</p>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<div class="card"> <div class="card">
<div class="d-grid gap-2 d-md-flex justify-content-md-end" style="margin-bottom: 20px"> <div class="d-grid gap-2 d-md-flex justify-content-md-end" style="margin-bottom: 20px">
<a class="nav-link active" href="new-transaction"> <a class="nav-link active" href="{{ route('tambah-transaction.pembeli') }}">
<button class="btn btn-primary btn-lg">Lakukan Transaksi Baru</button> <button class="btn btn-primary btn-lg">Lakukan Transaksi Baru</button>
</a> </a>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped" id="table-1"> <table class="table table-striped" id="table-3">
<thead> <thead>
<tr> <tr>
<th>User ID</th> <th>No</th>
<th>Order ID</th> <th>Order ID</th>
<th>Customer</th> <th>Penjual</th>
<th>Seller</th>
<th>Total</th> <th>Total</th>
<th>Due Date</th> <th>Batas Pengiriman</th>
<th>Status</th> <th>Status</th>
<th>Action</th> <th>Action</th>
</tr> </tr>
@ -48,9 +45,8 @@
<tbody> <tbody>
@foreach ($TransactionUser as $HistoryTransaction) @foreach ($TransactionUser as $HistoryTransaction)
<tr> <tr>
<td>{{ $HistoryTransaction['userId'] }}</td> <td>{{ $loop->iteration }}</td>
<td>{{ $HistoryTransaction['orderId'] }}</td> <td>{{ $HistoryTransaction['orderId'] }}</td>
<td>{{ $HistoryTransaction['Customer'] }}</td>
<td>{{ $HistoryTransaction['seller'] }}</td> <td>{{ $HistoryTransaction['seller'] }}</td>
<td>{{ $HistoryTransaction['total'] }}</td> <td>{{ $HistoryTransaction['total'] }}</td>
<td>{{ $HistoryTransaction['dueDate'] }}</td> <td>{{ $HistoryTransaction['dueDate'] }}</td>
@ -65,15 +61,20 @@
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a class="dropdown-item" <li><a class="dropdown-item"
href="/detail-transaction">Detail</a></li> href="{{route('user-transaction.detail.pembeli',$HistoryTransaction['orderId'])}}">Detail</a></li>
<li><a class="dropdown-item" <li><a class="dropdown-item"
href="/refund-transaction">Refund</a></li> href="/refund-transaction">Refund</a></li>
{{-- <li><a class="dropdown-item" {{-- <li><a class="dropdown-item"
href="/invoice-transaction">Bayar</a></li> --}} href="/invoice-transaction">Bayar</a></li> --}}
<li><a class="dropdown-item" data-toggle="modal" <li><a class="dropdown-item" id="bayar"
data-target="#bayar">Bayar</a></li> data-id="{{ $HistoryTransaction['orderId'] }}">Bayar</a>
<li><a class="dropdown-item" data-toggle="modal" {{-- data-id="{{ $transaction }}">Bayar</a> --}}
data-target="#selesai">Selesai</a></li>
</li>
<li><a class="dropdown-item" id="selesai"
data-id="{{ $HistoryTransaction['orderId'] }}">Selesai</a>
{{-- data-id="{{ $transaction }}">Selesai</a> --}}
</li>
</ul> </ul>
</div> </div>
</td> </td>
@ -87,7 +88,96 @@
</div> </div>
</div> </div>
</section> </section>
</div>
@extends('user.transaction.pembeli.modal-bayar-transaction') @extends('user.transaction.pembeli.modal-bayar-transaction')
@extends('user.transaction.pembeli.modal-end-transaction') @extends('user.transaction.pembeli.modal-end-transaction')
@endsection <script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js"
data-client-key="SB-Mid-client-rk6kY5XbPLChy3Lg"></script>
<script>
$(document).ready(function() {
// Bayar
$('#table-3').on('click', '#bayar', function() {
const id = $(this).data('id');
const csrfToken = $('meta[name="csrf-token"]').attr('content');
snap.pay("98f6ed6d-3562-42ba-9ef5-cb7d52258e9f", {
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(error) {
/* You may add your own implementation here */
alert('you closed the popup without finishing the payment '+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() {
const id = $(this).data('id');
console.log(id);
});
});
</script>
@endsection

View File

@ -1,5 +1,7 @@
@extends('user.layout.main') @extends('user.layout.main')
@section('content') @section('content')
{{-- <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /> --}}
<link rel="stylesheet" href="{{ asset('assets/modules/select2/dist/css/select2.min.css') }}">
<div class="main-content"> <div class="main-content">
<section class="section"> <section class="section">
<div class="container"> <div class="container">
@ -14,123 +16,303 @@
<div class="card-body"> <div class="card-body">
<div class="form-row"> <div class="form-row">
<div class="form-group col-md-12"> <div class="form-group col-md-12">
<label for="inputpembeli">Nama Pembeli</label> <label for="inputpembeli">
<input type="email" class="form-control" id="inputpembeli" <h5>Nama Pembeli</h5>
placeholder="Masukkan nama pembeli">
</div>
</div>
<div class="form-group">
<label for="inputpenjual">Nama Penjual</label>
<input type="text" class="form-control" id="inputpenjual"
placeholder="Masukkan nama penjual">
</div>
<div class="form-group">
<label for="harga">Harga</label>
<input type="text" class="form-control" id="harga" placeholder="Rp.1000.000">
</div>
<div class="form-group">
<label for="inputjenis">Jenis Barang</label>
<input type="text" class="form-control" id="inputjenis" placeholder="">
</div>
<div class="form-group">
<label>Due Date</label>
<input type="date" class="form-control">
</div>
<div class="form-group">
<label for="inputdeskripsi">Deskripsi</label>
<textarea class="form-control resizable" id="deskripsi"
placeholder="Deskripsikan jenis apa transaksi yang anda lakukan"></textarea>
</div>
<div class="form-group mb-0">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label> </label>
<input type="email" class="form-control" id="inputpembeli"
placeholder="Masukkan nama pembeli"
value="{{ Auth::user()->nama_depan . ' ' . Auth::user()->nama_belakang }}"
disabled>
</div> </div>
</div> </div>
<div class="form-group">
<label for="inputpenjual">
<h5>Penjual</h5>
</label>
<h6>Pilih dari kontak</h6>
<div class="input-group">
<select class="form-control" id="selectContact" name="select_penjual">
</select>
<button class="btn btn-danger" type="button" id="deleteOption">Hapus</button>
</div> </div>
</div>
<div class="form-group">
<h6>atau dari email</h6>
<div class="input-group">
<input type="email" class="form-control" id="inputPenjual"
name="input_penjual" placeholder="Masukkan email penjual">
<button class="btn btn-danger" type="button" id="checkButton">Check</button>
</div>
</div>
<div class="form-group">
<label for="inputBarang">
<h5>Nama Barang/Jasa</h5>
</label>
<input type="text" class="form-control" id="inputBarang"
placeholder="Sepeda Motor" name="nama_barang">
</div>
<div class="form-group">
<label for="hargaBarang">
<h5>Harga Satuan</h5>
</label>
<input type="number" class="form-control" name="harga_barang" id="hargaBarang"
placeholder="Rp. 1000.000">
</div>
<div class="form-group">
<label for="hargaBarang">
<h5>Satuan</h5>
</label>
<input type="text" class="form-control" name="satuan_barang" id="satuanBarang"
placeholder="Buah/Kg/Karung dll.">
</div>
<div class="form-group">
<label for="jumlahBarang">
<h5>Jumlah Satuan</h5>
</label>
<input type="number" class="form-control" name="jumlah_barang" id="jumlahBarang"
placeholder="Jumlah satuan">
</div>
<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 class="form-group">
<label for="inputDeskripsi">
<h5>Deskripsi</h5>
</label>
<textarea class="form-control resizable" name="deskripsi" id="inputDeskripsi" placeholder="Deskripsikan transaksi anda"></textarea>
</div>
<div class="dashed-line"></div>
<div class="form-row">
<label style="margin-right: 500px;">Nominal</label>
<div style="display: inline-block;">Rp. 890000</div>
</div>
<div class="form-row">
<label style="margin-right: 500px;">Biaya Admin</label>
<div style="display: inline-block; ">Rp.0</div>
</div>
<div class="form-row">
<h6 style="margin-right: 500px;">Total Biaya</h6>
<div style="display: inline-block; ">
<h6>Rp.0</h6>
</div>
</div>
<div class="dashed-line"></div>
<div class="card-footer d-flex justify-content-center"> <div class="card-footer d-flex justify-content-center">
<a href="/pembeli" class="btn btn-primary">Submit</a> <button type="button" class="btn btn-primary" id="save">Buat</button>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</section>
</div>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script>
$(document).ready(function() {
$("#selectContact").select2({
placeholder: "Pilih Kontak",
ajax: {
url: "{{ route('user-contact.get') }}",
processResults: function({
data
}) {
return {
results: $.map(data, function(item) {
return {
id: item.relasi_kontak,
text: item.nama_depan + " " + item.nama_belakang,
};
}),
};
},
},
});
$('#selectContact').change(function() {
let email = $('#selectContact').val();
if (email === null) {
$('#inputPenjual').prop('disabled', false);
$('#checkButton').prop('disabled', false);
$('#deleteOption').prop('disabled', false);
} else {
$('#inputPenjual').prop('disabled', true);
$('#deleteOption').prop('disabled', false);
$('#checkButton').prop('disabled', true);
}
});
{{-- form transaksi --}} $('#deleteOption').click(function() {
{{-- <div class="container"> $('#selectContact').val(null).trigger("change");
<div class="row justify-content-center"> });
<div class="col-md-6">
<div class="card">
<div class="card-body">
<form>
<div class="mb-3">
<label for="orderid" class="form-label">Order Id</label>
<input type="text" class="form-control" id="orderId" name="order" required>
</div>
<div class="mb-3"> $('#inputPenjual').on('input', function() {
<label for="customer" class="form-label">Customer</label> let emailInput = $('#inputPenjual').val();
<input type="text" class="form-control" id="customer" name="customer" required> if (emailInput.trim() == '') {
</div> $('#selectContact').prop('disabled', false);
$('#deleteOption').prop('disabled', false);
} else {
$('#selectContact').prop('disabled', true);
$('#deleteOption').prop('disabled', true);
}
});
<div class="mb-3"> $('#checkButton').click(function() {
<label for="seller" class="form-label">Norek Asal</label> let email = document.querySelector('[name="input_penjual"]').value;
<input type="text" class="form-control" id="norekasal" name="norekasal" pattern="[0-9]+" required> const csrfToken = $('meta[name="csrf-token"]').attr('content');
<div class="invalid-feedback">
Harap masukkan hanya angka</div>
</div>
<div class="mb-3"> if (email.trim() == '') {
<label for="seller" class="form-label">Seller</label> Swal.fire({
<input type="text" class="form-control" id="seller" name="seller" required> title: 'Gagal',
</div> text: 'Email tidak boleh kosong',
icon: 'error'
});
} else {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': csrfToken
}
});
<div class="mb-3"> $.ajax({
<label for="seller" class="form-label">Norek Tujuan</label> url: "{{ route('user-contact.email', ':email') }}".replace(':email', email),
<input type="text" class="form-control" id="norektujuan" name="norektujuan" pattern="[0-9]+" required> type: 'GET',
<div class="invalid-feedback"> success: function(response) {
Harap masukkan hanya angka. if (response.status) {
</div> Swal.fire({
</div> 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: 'Terjadi error karena, ' + error,
icon: 'error'
});
}
});
}
});
$('#save').on('click', function() {
let opsiKontak = document.querySelector('[name="select_penjual"]').value;
let inputKontak = document.querySelector('[name="input_penjual"]').value;
let namaBarang = document.querySelector('[name="nama_barang"]').value;
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;
<div class="mb-3"> let emptyInput = [];
<label for="total" class="form-label">Total</label>
<input type="text" class="form-control" id="total" name="total">
</div>
<div class="mb-3"> let penjual = '';
<label for="seller" class="form-label">Due Date</label> if (opsiKontak != "" && inputKontak != "") {
<input type="calendar" class="form-control" id="duedate" name="duedate" required> penjual = opsiKontak;
</div> } else if (opsiKontak == "" && inputKontak != "") {
penjual = inputKontak;
} else if (inputKontak == "" && opsiKontak != "") {
penjual = opsiKontak;
} else {
console.log('Kosong');
emptyInput.push("Kolom penjual tidak boleh kosong");
}
<div class="mb-3"> if (namaBarang == "") {
<label for="textareadesc" class="form-label">Deskripsi</label> emptyInput.push("Nama barang tidak boleh kosong");
<textarea class="form-control" id="textareadesc" rows="3"></textarea> }
</div>
if (hargaBarang == "") {
emptyInput.push("Harga barang tidak boleh kosong");
}
{{-- <div class="d-flex justify-content-center"> if (satuanBarang == "") {
<button class="btn btn-info open-detail-modal" data-toggle="modal fade" emptyInput.push("Satuan barang tidak boleh kosong");
data-target="#confirmtransaction">Transaksi Sudah Benar</button> }
</div> --}}
<div class="d-flex justiffy-content-center"> if (jumlahBarang == "") {
<a href="/pembeli" type="button" class="btn btn-primary" data-bs-dismiss="modal">Transaksi Sudah emptyInput.push("Jumlah barang tidak boleh kosong");
Benar</a> }
</div>
</form> if (batasPengiriman == "") {
</div> emptyInput.push("Batas pengiriman tidak boleh kosong");
</div> }
</div>
</div> if (emptyInput.length > 0) {
{{-- </div> --}} const emptyInputError = emptyInput.join(', ');
</div> Swal.fire({
title: 'Gagal',
text: emptyInputError,
icon: 'error',
confirmButtonText: 'OK',
});
} else {
const csrfToken = $('meta[name="csrf-token"]').attr('content');
const formData = new FormData();
formData.append('email_penjual', penjual);
formData.append('nama_barang', namaBarang);
formData.append('satuan_barang', satuanBarang);
formData.append('harga_barang', hargaBarang);
formData.append('jumlah_barang', jumlahBarang);
formData.append('batas_pengiriman', batasPengiriman);
formData.append('deskripsi', deskripsi);
$.ajaxSetup({
headers:{
'X-CSRF-TOKEN':csrfToken
}
});
$.ajax({
url:"{{route('store-transaction.pembeli')}}",
type:"POST",
data: formData,
processData: false,
contentType: false,
success: function(response){
Swal.fire({
title:'Berhasil',
text: "Transaksi berhasil didaftar",
icon: 'success'
});
console.log(response);
},
error: function(error){
Swal.fire({
title:'Gagal',
text:'Gagal mengirimkan data karena ' + error,
icon: 'error'
});
console.log(error)
}
});
}
});
});
</script>
@endsection @endsection

View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" name="viewport">
<title>Verifikasi Email Pemulihan</title>
<link rel="stylesheet" href="{{ asset('assets/modules/bootstrap/css/bootstrap.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/style.css') }}">
</head>
<body>
<div id="app">
<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-header d-flex justify-content-center bg-primary text-white">
<img class="mr-3 rounded" width="150"
src="{{ asset('assets/images/google-removebg-preview.png') }}">
</div>
<div class="d-flex justify-content-center bg-primary text-white">
<h2 class="mb-0">Verifikasi Email</h2>
</div>
<div class="card-body">
<p>Rekber mengirimkan kode verifikasi ke</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 class="text-center">
<p><b>Masa berlaku kode ini akan berakhir dalam 2 menit.</b> </p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</body>
</html>

View File

@ -181,14 +181,14 @@
<input type="email" placeholder="Email" class="email-input" name="new_email" <input type="email" placeholder="Email" class="email-input" name="new_email"
id="newEmail" /> id="newEmail" />
</div> </div>
<button id="verifikasiEmail" class="btn-otp solid" <button id="verifikasiEmail" class="btn-otp" type="button"
type="button">Verifikasi</button> disabled=true>Verifikasi</button>
</div> </div>
<div class="input-field up"> <div class="input-field up">
<i class="fa fa-ellipsis-h" aria-hidden="true"></i> <i class="fa fa-ellipsis-h" aria-hidden="true"></i>
<input type="text" class="telp-input-signup" <input type="text" class="telp-input-signup"
oninput="this.value = this.value.replace(/[^0-6]/g, '').substring(0, 6);" oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 6);"
placeholder="Kode Verifikasi Email" name="email-verification"> placeholder="Kode Verifikasi Email" name="email_verification">
</div> </div>
<div class="input-field up"> <div class="input-field up">
<i class="fa fa-phone" aria-hidden="true"></i> <i class="fa fa-phone" aria-hidden="true"></i>
@ -378,7 +378,7 @@
<button class="btn transparent" id="sign-up-btn"> <button class="btn transparent" id="sign-up-btn">
Sign up Sign up
</button> </button>
<p><a href="/">kembali</a></p> <p><a href="{{ route('login') }}">kembali</a></p>
</div> </div>
<img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image" <img src="{{ asset('assets/img/login_register/Payment Information-pana.svg') }}" class="image"
alt="" /> alt="" />
@ -399,7 +399,6 @@
</div> </div>
</div> </div>
</div> </div>
{{-- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> --}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js" <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"
integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==" integrity="sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script> crossorigin="anonymous" referrerpolicy="no-referrer"></script>
@ -415,6 +414,7 @@
$(document).ready(function() { $(document).ready(function() {
let verificationStatus = false; let verificationStatus = false;
let verificationCode = ''; let verificationCode = '';
let waktuSekarangDetik = 0;
function generateVerificationCode() { function generateVerificationCode() {
const codeLength = 6; const codeLength = 6;
@ -492,25 +492,91 @@
} }
}); });
$('#verifikasiEmail').on('click', function() {
});
$('#newEmail').on('input', function() { $('#newEmail').on('input', function() {
const newEmail = $(this); const newEmail = $(this);
clearTimeout(newEmail.timer); // Menghapus timeout yang ada clearTimeout(newEmail.timer); // Menghapus timeout yang ada
const verificationButton = document.getElementById('verifikasiEmail');
verificationButton.disabled = true;
const email = newEmail.val().trim(); // Menghapus spasi di awal dan akhir
if (email != '') {
// Menunggu 5 detik sebelum menghasilkan kode verifikasi // Menunggu 5 detik sebelum menghasilkan kode verifikasi
newEmail.timer = setTimeout(function() { newEmail.timer = setTimeout(function() {
const email = newEmail.val().trim(); // Menghapus spasi di awal dan akhir if (waktuSekarangDetik == 0) {
verificationStatus = false;
if (email === '') { verificationButton.disabled = false;
alert('Silakan masukkan alamat email Anda terlebih dahulu.'); verificationButton.innerHTML = 'Verifikasi';
} else {
const verificationCode = generateVerificationCode();
console.log(verificationCode);
} }
}, 5000); }, 1000);
}
});
$('#verifikasiEmail').on('click', function() {
const newEmail = $(this);
let email = document.querySelector('[name="new_email"]').value;
const csrfToken = $('meta[name="csrf-token"]').attr('content');
verificationCode = generateVerificationCode();
const formData = new FormData();
formData.append('email', email);
formData.append('code', verificationCode);
// Menonaktifkan tombol verifikasi
newEmail.prop('disabled', true);
// 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}`);
}
// 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() { $('#signUp').on('click', function() {
@ -522,7 +588,7 @@
let email = document.querySelector('[name="new_email"]').value; let email = document.querySelector('[name="new_email"]').value;
let nohp = document.querySelector('[name="nohp"]').value; let nohp = document.querySelector('[name="nohp"]').value;
let gender = document.querySelector('[name="gender"]').value; let gender = document.querySelector('[name="gender"]').value;
let emailVerification = document.querySelector('[name="email-verification"]').value; let emailVerification = document.querySelector('[name="email_verification"]').value;
// Tanggal lahir // Tanggal lahir
let tanggalLahir = document.querySelector('[name="tanggal_lahir"]').value; let tanggalLahir = document.querySelector('[name="tanggal_lahir"]').value;
@ -548,7 +614,7 @@
let confirmPassword = document.querySelector('[name="confirm_password"]').value; let confirmPassword = document.querySelector('[name="confirm_password"]').value;
// Pengecekan inputan yang kosong // Pengecekan inputan yang kosong
if (namaDepan.trim() === "" || namaBelakang.trim() === "") { if (namaDepan.trim() === "" && namaBelakang.trim() === "") {
emptyInput.push("Nama depan dan nama belakang tidak boleh kosong"); emptyInput.push("Nama depan dan nama belakang tidak boleh kosong");
} }
@ -560,6 +626,8 @@
emptyInput.push("Email tidak boleh kosong"); emptyInput.push("Email tidak boleh kosong");
} else if (!verificationStatus) { } else if (!verificationStatus) {
emptyInput.push("Verifikasi email terlebih dahulu"); emptyInput.push("Verifikasi email terlebih dahulu");
} else if (emailVerification != verificationCode) {
emptyInput.push('Kode verifikasi harus sama dengan kode yang dikirim ke email');
} }
if (nohp.trim() === "") { if (nohp.trim() === "") {
@ -589,7 +657,7 @@
emptyInput.push("Silahkan ambil foto KTP anda"); emptyInput.push("Silahkan ambil foto KTP anda");
} }
if (newPassword.trim() === "" || confirmPassword === "") { if (newPassword.trim() === "" && confirmPassword === "") {
emptyInput.push("Password tidak boleh kosong"); emptyInput.push("Password tidak boleh kosong");
} else if (newPassword.trim() != confirmPassword) { } else if (newPassword.trim() != confirmPassword) {
emptyInput.push("Password baru harus sama dengan password yang dikonfirmasi"); emptyInput.push("Password baru harus sama dengan password yang dikonfirmasi");

View File

@ -93,29 +93,23 @@ Route::get('/next_detail_refund',function() {
// -------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------
// Route::get('/Ini', function () { //Index
// return view('user/index',[
// 'name'=>'Jilhan Haura',
// "transaction"=>Transactions::allTransactions()
// ]);
// });
// Route::resource('/login',LoginController::class);
// Login, logout dan register // Login, logout dan register
Route::controller(LoginController::class)->group(function(){ Route::controller(LoginController::class)->group(function(){
Route::get('/','login')->name('login'); Route::get('/login','login')->name('login');
Route::get('/logout','logout')->name('logout'); Route::get('/logout','logout')->name('logout');
Route::post('/','authenticate')->name('authenticate'); Route::post('/authenticate','authenticate')->name('authenticate');
Route::post('/register','register')->name('register'); Route::post('/register','register')->name('register');
Route::get('/cek-email/{email}','statusAkun')->name('status.akun'); Route::get('/cek-email/{email}','statusAkun')->name('status.akun');
Route::get('/cari-provinsi','cariProvinsi')->name('cari.provinsi'); Route::get('/cari-provinsi','cariProvinsi')->name('cari.provinsi');
Route::get('/cari-kota/{code}','cariKota')->name('cari.kota'); Route::get('/cari-kota/{code}','cariKota')->name('cari.kota');
Route::get('/cari-kecamatan/{code}','cariKecamatan')->name('cari.kecamatan'); Route::get('/cari-kecamatan/{code}','cariKecamatan')->name('cari.kecamatan');
Route::get('/cari-kelurahan/{code}','cariKelurahan')->name('cari.kelurahan'); Route::get('/cari-kelurahan/{code}','cariKelurahan')->name('cari.kelurahan');
Route::post('/kode-verifikasi','kirimKodeVerifikasi')->name('kirim.kode');
Route::get('ocr','getOcr');
}); });
// admin dan user // admin dan user
@ -157,12 +151,18 @@ Route::middleware(['auth'])->group(function(){
Route::get('cek-contact/{email}','cekEmail')->name('user-contact.email'); Route::get('cek-contact/{email}','cekEmail')->name('user-contact.email');
Route::post('user-contact','store')->name('user-contact.store'); Route::post('user-contact','store')->name('user-contact.store');
Route::delete('user-contact/{id}','destroy')->name('user-contact.delete'); Route::delete('user-contact/{id}','destroy')->name('user-contact.delete');
Route::get('get-user-contact','getContact')->name('user-contact.get');
}); });
// Tampilan transaksi, bayar, update status pengiriman dan refund // Tampilan transaksi, bayar, update status pengiriman dan refund
Route::controller(UserTransactionController::class)->group(function(){ Route::controller(UserTransactionController::class)->group(function(){
// Pembeli
Route::get('user-transaction-pembeli','indexPembeli')->name('user-transaction.index.pembeli'); Route::get('user-transaction-pembeli','indexPembeli')->name('user-transaction.index.pembeli');
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');
//Penjual
Route::get('user-transaction-penjual','indexPenjual')->name('user-transaction.index.penjual'); Route::get('user-transaction-penjual','indexPenjual')->name('user-transaction.index.penjual');
//bayar
}); });
// Tampilan refund // Tampilan refund

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB