Perbaiki tampilan transaksi baru
This commit is contained in:
parent
fc7db3e110
commit
1095ed940c
@ -53,6 +53,30 @@ class PembeliController extends Controller
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate(
|
||||
[
|
||||
'nama_barang' => ['required'],
|
||||
'harga_barang' => ['required'],
|
||||
'satuan_barang' => ['required'],
|
||||
'jumlah_barang' => ['required'],
|
||||
'email_penjual' => ['required'],
|
||||
'persentase_keuntungan' => ['required'],
|
||||
'total_keuntungan' => ['required'],
|
||||
'total_bayar' => ['required'],
|
||||
'total_harga' => ['required']
|
||||
],[
|
||||
'nama_barang.required' => 'Isi nama barang',
|
||||
'harga_barang.required' => 'Isi harga barang',
|
||||
'satuan_barang.required' => 'Isi satuan barang',
|
||||
'jumlah_barang.required' => 'Isi jumlah barang',
|
||||
'email_penjual.required' => 'Isi email penjual. Bisa dari kontak atau masukan email',
|
||||
'persentase_keuntungan.required' => 'Terjadi kesalahan di server',
|
||||
'total_keuntungan.required' => 'Terjadi kesalahan di server',
|
||||
'total_bayar.required' => 'Terjadi kesalahan di server',
|
||||
'total_harga.required' => 'Terjadi kesalahan di server'
|
||||
]
|
||||
);
|
||||
|
||||
$pembeli = auth()->user()->email;
|
||||
$penjual = $request->email_penjual;
|
||||
$nama_barang = $request->nama_barang;
|
||||
|
@ -32,6 +32,7 @@ return new class extends Migration
|
||||
$table->enum('status_transaksi',['success','challenge','failure','process','sending','sent','finished','created', 'refund', 'done'])->default('created'); // transaction_status
|
||||
$table->enum('status_pembayaran',['settlement','capture','pending','expire','failure','cancel','refund'])->nullable(); // status transaksi dari midtrans
|
||||
$table->timestamp('batas_pembayaran')->nullable();
|
||||
$table->timestamp('batas_pembatalan_transaksi')->nullable();
|
||||
$table->timestamp('batas_konfirmasi_transaksi')->nullable();
|
||||
$table->timestamp('batas_pengiriman_barang_akhir');
|
||||
$table->timestamp('tanggal_transaksi')->nullable();
|
||||
|
BIN
public/assets/img/modal-end/approve.png
Normal file
BIN
public/assets/img/modal-end/approve.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 271 KiB |
BIN
public/assets/img/modal-end/refund.png
Normal file
BIN
public/assets/img/modal-end/refund.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
@ -14,20 +14,25 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="activities">
|
||||
<p>asdasdasdsad</p>
|
||||
<p style="text-align: justify;">
|
||||
Silahkan konfirmasi barang anda sebelum menyelesaikan
|
||||
transaksi atau mengajukan
|
||||
refund. Harap diminta kesadaran penuh anda sebelum memilih selesaikan transaksi atau
|
||||
ajukan
|
||||
komplain.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row m-4">
|
||||
<div class="col-12">
|
||||
<div class="activities">
|
||||
<div class="col-6 d-flex justify-content-center">
|
||||
<img src="{{ asset('assets/img/avatar/avatar-1.png') }}"
|
||||
style="max-width:200px; max-height: 150px;" alt="">
|
||||
<img src="{{ asset('assets/img/modal-end/approve.png') }}" style="width:100%;"
|
||||
alt="approve">
|
||||
</div>
|
||||
<div class="col-6 d-flex justify-content-center">
|
||||
<img src="{{ asset('assets/img/avatar/avatar-1.png') }}"
|
||||
style="max-width:200px; max-height: 150px;" alt="">
|
||||
<img src="{{ asset('assets/img/modal-end/refund.png') }}" style="width:100%;"
|
||||
alt="refund">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,109 +9,121 @@
|
||||
<div class="card-body">
|
||||
<div class="card"
|
||||
style="border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); position: relative; background: linear-gradient(45deg, #f3f3f3, #e0e0e0);">
|
||||
<div class="card-header d-flex justify-content-center">
|
||||
<h2>Form Transaksi</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="inputpembeli">
|
||||
<h5>Nama Pembeli</h5>
|
||||
<form action="javascript:void(0);" method="POST" id="formTambahTransaksi"
|
||||
enctype="multipart/form-data">
|
||||
<div class="card-header d-flex justify-content-center">
|
||||
<h2>Form Transaksi</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-row">
|
||||
<div class="form-group col-md-12">
|
||||
<label for="inputPembeli">
|
||||
<h5>Nama Pembeli</h5>
|
||||
</label>
|
||||
<input type="email" class="form-control" id="inputPembeli" name="pembeli"
|
||||
placeholder="Masukkan nama pembeli"
|
||||
value="{{ Auth::user()->nama_depan . ' ' . Auth::user()->nama_belakang }}"
|
||||
disabled>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="inputpenjual">
|
||||
<h5>Penjual</h5>
|
||||
</label>
|
||||
<input type="email" class="form-control" id="inputpembeli"
|
||||
placeholder="Masukkan nama pembeli"
|
||||
value="{{ Auth::user()->nama_depan . ' ' . Auth::user()->nama_belakang }}"
|
||||
disabled>
|
||||
<h6>Pilih dari kontak</h6>
|
||||
<div class="input-group">
|
||||
<select class="form-control col-lg-10 col-md-10 col-sm-12"
|
||||
id="selectContact" name="select_penjual">
|
||||
|
||||
</select>
|
||||
<button class="btn btn-danger col-md-2 col-md-2 col-sm-12" type="button"
|
||||
id="deleteOption">Hapus</button>
|
||||
</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">Cek</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="text" class="form-control" name="harga_barang" id="hargaBarang"
|
||||
placeholder="Rp. 1000.000"
|
||||
oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 16);">
|
||||
</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/Jutaan dll.">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="jumlahBarang">
|
||||
<h5>Jumlah Satuan</h5>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="jumlah_barang"
|
||||
id="jumlahBarang" placeholder="Jumlah satuan"
|
||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').substring(0, 10);">
|
||||
</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-group">
|
||||
<div class="input-group">
|
||||
<label class="col-6" id="jumlah">Nominal</label>
|
||||
<div class="col-6 text-right" id="totalBiaya">
|
||||
Rp 0,00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<label class="col-6" id="biayaAdmin">Biaya Admin
|
||||
({{ $persentase_keuntungan }}%)</label>
|
||||
<div class="col-6 text-right" id="totalBiayaAdmin">Rp 0,00</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<h6 class="col-6">Total Biaya</h6>
|
||||
<div class="col-6 text-right">
|
||||
<h6 id="totalBayar">Rp 0,00</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashed-line"></div>
|
||||
|
||||
<div class="card-footer d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-primary" id="save">Buat</button>
|
||||
</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"
|
||||
style="width: 89%">
|
||||
|
||||
</select>
|
||||
<button class="btn btn-danger" type="button" id="deleteOption">Hapus</button>
|
||||
</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">Cek</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="text" class="form-control" name="harga_barang" id="hargaBarang"
|
||||
placeholder="Rp. 1000.000"
|
||||
oninput="this.value = this.value.replace(/[^0-9]/g, '').substring(0, 16);">
|
||||
</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/Jutaan dll.">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="jumlahBarang">
|
||||
<h5>Jumlah Satuan</h5>
|
||||
</label>
|
||||
<input type="text" class="form-control" name="jumlah_barang" id="jumlahBarang"
|
||||
placeholder="Jumlah satuan"
|
||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').substring(0, 10);">
|
||||
</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: 200px;" id="jumlah">Nominal</label>
|
||||
<div style="display: inline-block;" id="totalBiaya">Rp 0,00</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<label style="margin-right: 200px;" id="biayaAdmin" data-admin="">Biaya Admin
|
||||
({{ $persentase_keuntungan }}%)</label>
|
||||
<div style="display: inline-block;" id="totalBiayaAdmin">Rp 0,00</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<h6 style="margin-right: 200px;">Total Biaya</h6>
|
||||
<div style="display: inline-block;">
|
||||
<h6 id="totalBayar">Rp 0,00</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dashed-line"></div>
|
||||
|
||||
<div class="card-footer d-flex justify-content-center">
|
||||
<button type="button" class="btn btn-primary" id="save">Buat</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -307,126 +319,81 @@
|
||||
}
|
||||
});
|
||||
|
||||
$("#save").on("click", function() {
|
||||
const csrfToken = $('meta[name="csrf-token"]').attr("content");
|
||||
$('#formTambahTransaksi').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
const csrfToken = $('meta[name="csrf-token"]').attr('content');
|
||||
let form = this;
|
||||
let email_kontak = $('#selectContact').val();
|
||||
let email_input = $('#inputPenjual').val();
|
||||
let penjual = email_kontak != null ? email_kontak : email_input;
|
||||
|
||||
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 deskripsi = document.querySelector(
|
||||
'textarea[name="deskripsi"]'
|
||||
).value;
|
||||
const formData = new FormData(this);
|
||||
formData.append("email_penjual", penjual);
|
||||
formData.append("persentase_keuntungan", biayaAdmin);
|
||||
formData.append("total_keuntungan", totalBiayaAdmin);
|
||||
formData.append("total_harga", totalHarga);
|
||||
formData.append("total_bayar", totalBayar);
|
||||
|
||||
let emptyInput = [];
|
||||
Swal.fire({
|
||||
html: '<div class="mt-3"><lord-icon src="https://cdn.lordicon.com/etwtznjn.json" trigger="loop" colors="primary:#0ab39c,secondary:#405189" style="width:120px;height:120px"></lord-icon><div class="mt-4 pt-2 fs-15"><h4>Form Anda sedang diproses!</h4><p class="text-muted mx-4 mb-0">Mohon tunggu...</p></div></div>',
|
||||
allowEscapeKey: false,
|
||||
allowOutsideClick: false,
|
||||
didOpen: () => {
|
||||
Swal.showLoading();
|
||||
}
|
||||
});
|
||||
|
||||
let penjual = "";
|
||||
if (opsiKontak != "" && inputKontak != "") {
|
||||
penjual = opsiKontak;
|
||||
} else if (opsiKontak == "" && inputKontak != "") {
|
||||
penjual = inputKontak;
|
||||
} else if (inputKontak == "" && opsiKontak != "") {
|
||||
penjual = opsiKontak;
|
||||
} else {
|
||||
emptyInput.push("Kolom penjual tidak boleh kosong");
|
||||
}
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": csrfToken,
|
||||
},
|
||||
});
|
||||
|
||||
if (penjual == "{{ Auth::user()->email }}") {
|
||||
emptyInput.push(
|
||||
"Email penjual tidak boleh sama dengan email pembeli"
|
||||
);
|
||||
}
|
||||
$.ajax({
|
||||
url: "{{ route('user-pembeli.store') }}",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function(response) {
|
||||
Swal.fire({
|
||||
title: response.status ? "Berhasil" : "Gagal",
|
||||
text: response.message,
|
||||
icon: response.status ? "success" : "error",
|
||||
confirmButtonText: "OK",
|
||||
}).then(function() {
|
||||
if (response.status) {
|
||||
location.href =
|
||||
"{{ route('user-pembeli.index') }}";
|
||||
}
|
||||
});
|
||||
},
|
||||
error: function(error) {
|
||||
if (error.responseJSON && error.responseJSON.errors) {
|
||||
let errorMessage = "Terdapat beberapa kesalahan:<br>";
|
||||
|
||||
if (namaBarang == "") {
|
||||
emptyInput.push("Nama barang tidak boleh kosong");
|
||||
}
|
||||
const errors = error.responseJSON.errors;
|
||||
|
||||
if (hargaBarang == "") {
|
||||
emptyInput.push("Harga barang tidak boleh kosong");
|
||||
}
|
||||
for (let key in errors) {
|
||||
errorMessage += `${errors[key].join(', ')}<br>`;
|
||||
}
|
||||
|
||||
if (satuanBarang == "") {
|
||||
emptyInput.push("Satuan barang tidak boleh kosong");
|
||||
}
|
||||
|
||||
if (jumlahBarang == "") {
|
||||
emptyInput.push("Jumlah barang tidak boleh kosong");
|
||||
}
|
||||
|
||||
if (emptyInput.length > 0) {
|
||||
const emptyInputError = emptyInput.join(", ");
|
||||
Swal.fire({
|
||||
title: "Gagal",
|
||||
text: emptyInputError,
|
||||
icon: "error",
|
||||
confirmButtonText: "OK",
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
html: '<div class="mt-3"><lord-icon src="https://cdn.lordicon.com/etwtznjn.json" trigger="loop" colors="primary:#0ab39c,secondary:#405189" style="width:120px;height:120px"></lord-icon><div class="mt-4 pt-2 fs-15"><h4>Form Anda sedang diproses!</h4><p class="text-muted mx-4 mb-0">Mohon tunggu...</p></div></div>',
|
||||
allowEscapeKey: false,
|
||||
allowOutsideClick: false,
|
||||
didOpen: () => {
|
||||
Swal.showLoading();
|
||||
}
|
||||
});
|
||||
|
||||
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("deskripsi", deskripsi);
|
||||
formData.append("persentase_keuntungan", biayaAdmin);
|
||||
formData.append("total_keuntungan", totalBiayaAdmin);
|
||||
formData.append("total_harga", totalHarga);
|
||||
formData.append("total_bayar", totalBayar);
|
||||
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": csrfToken,
|
||||
},
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('user-pembeli.store') }}",
|
||||
type: "POST",
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function(response) {
|
||||
Swal.fire({
|
||||
title: response.status ? "Berhasil" : "Gagal",
|
||||
text: response.message,
|
||||
icon: response.status ? "success" : "error",
|
||||
confirmButtonText: "OK",
|
||||
}).then(function() {
|
||||
if (response.status) {
|
||||
location.href =
|
||||
"{{ route('user-pembeli.index') }}";
|
||||
}
|
||||
});
|
||||
},
|
||||
error: function(error) {
|
||||
Swal.fire({
|
||||
title: "Gagal",
|
||||
text: "Gagal mengirimkan data karena " + error,
|
||||
html: errorMessage,
|
||||
icon: "error",
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: "Gagal",
|
||||
text: "Gagal mengirimkan data karena " + error
|
||||
.statusText,
|
||||
icon: "error",
|
||||
});
|
||||
}
|
||||
console.log(error);
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
@ -97,7 +97,7 @@
|
||||
<!-- ======= END SIGN IN FORM ======= -->
|
||||
|
||||
<!-- ======= SIGN UP FORM ======= -->
|
||||
<form action="javascript:void(0)" class="sign-up-form" id="msform" enctype="multipart/form-data"
|
||||
<form action="javascript:void(0);" class="sign-up-form" id="msform" enctype="multipart/form-data"
|
||||
method="POST">
|
||||
@csrf
|
||||
<h2 class="title">Daftar</h2>
|
||||
|
Loading…
Reference in New Issue
Block a user