parent
9cac2a6be3
commit
865faec964
|
@ -5,28 +5,35 @@ namespace App\Http\Controllers\Kasir;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Models\KategoriProduk;
|
||||
use App\Models\KelompokKategori;
|
||||
use App\Models\KelompokKategoriPivot;
|
||||
use App\Models\Pesanan;
|
||||
use App\Models\Produk;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class Menu extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
// return $data = KelompokKategoriPivot::with(['kelompokKategori', 'produk'])->first();
|
||||
$kategori_produks = KategoriProduk::get();
|
||||
|
||||
return view('pages.Menu.index', compact('kategori_produks'));
|
||||
}
|
||||
|
||||
public function kelompokKategori($id) {
|
||||
$kelompok_kategoris = KelompokKategori::where('kategori_produk_id', $id)->first();
|
||||
$kelompok_kategoris = KelompokKategori::where('kategori_produk_id', $id)->get();
|
||||
|
||||
return $kelompok_kategoris;
|
||||
}
|
||||
|
||||
public function getDataMenu()
|
||||
{
|
||||
$data = Produk::with(['kategori_produk'])->get();
|
||||
// $data = Produk::with(['kategori_produk'])->get();
|
||||
$data = KelompokKategoriPivot::with(['kelompokKategori', 'produk'])->get();
|
||||
$nomor = 1;
|
||||
|
||||
return $datatables = datatables()
|
||||
|
@ -34,18 +41,117 @@ class Menu extends Controller
|
|||
->addColumn('nomor', function ($data) use (&$nomor) {
|
||||
return $nomor++;
|
||||
})
|
||||
->addColumn('kode_produk', function ($data) {
|
||||
return $data->produk->kode_produk;
|
||||
})
|
||||
->addColumn('nama_produk', function ($data) {
|
||||
return $data->produk->nama_produk;
|
||||
})
|
||||
->addColumn('harga_produk', function ($data) {
|
||||
return $data->produk->harga_produk;
|
||||
})
|
||||
->addColumn('nama_kelompok_kategori', function ($data) {
|
||||
return $data->kelompokKategori->nama_kelompok_kategori;
|
||||
})
|
||||
->addColumn('kategori_produk', function ($data) {
|
||||
return $data->kategori_produk->nama_kategori_produk;
|
||||
return $data->produk->kategori_produk->nama_kategori_produk;
|
||||
})
|
||||
->addColumn('ubah', function ($data) {
|
||||
return '<div class="btn-group">
|
||||
<a href="javascript:void(0)" onclick="print(\'' . $data->id . '\')"><span class="btn btn-xs btn-success"><i class="fas fa-print"></i></span></a>
|
||||
<a href="javascript:void(0)" onclick="editMenu(\'' . $data->id . '\')">
|
||||
<span class="btn btn-md btn-warning"><i class="fas fa-edit"></i> Edit</span>
|
||||
</a>
|
||||
</div>';
|
||||
})
|
||||
->rawColumns(['nomor', 'kode_produk', 'ubah'])
|
||||
->rawColumns(['nomor', 'ubah'])
|
||||
->make(true);
|
||||
}
|
||||
public function store() {
|
||||
|
||||
// Tambah Menu
|
||||
public function store(Request $request) {
|
||||
// validation
|
||||
$rules = array(
|
||||
'kategori_produk' => 'required',
|
||||
'kelompok_produk' => 'required',
|
||||
'kode_produk' => 'required',
|
||||
'nama_produk' => 'required',
|
||||
'harga_produk' => 'required',
|
||||
'tersedia' => 'required',
|
||||
'deskripsi_produk' => 'required',
|
||||
);
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
|
||||
// check validation
|
||||
if ($validator->fails()) {
|
||||
// If validation fails, return with errors
|
||||
return response()->json(['errors' => $validator->errors()], 422);
|
||||
} else {
|
||||
// create product
|
||||
$produk = Produk::create([
|
||||
'kategori_produk_id' => $request->kategori_produk,
|
||||
'kode_produk' => $request->kode_produk,
|
||||
'nama_produk' => $request->nama_produk,
|
||||
'harga_produk' => $request->harga_produk,
|
||||
'tersedia' => $request->tersedia,
|
||||
'deskripsi_produk' => $request->deskripsi_produk,
|
||||
'created_at' => Carbon::now()
|
||||
]);
|
||||
|
||||
$pivot_produk = KelompokKategoriPivot::create([
|
||||
'kelompok_kategori_id' => $request->kelompok_produk,
|
||||
'produk_id' => $produk->id,
|
||||
'created_at' => Carbon::now()
|
||||
]);
|
||||
|
||||
// Return a success response
|
||||
return response()->json(['message' => 'Data created successfully']);
|
||||
}
|
||||
}
|
||||
|
||||
public function show($id) {
|
||||
$data = KelompokKategoriPivot::with(['kelompokKategori', 'produk'])->findOrFail($id);
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
// Ubah Menu
|
||||
public function update(Request $request, $id) {
|
||||
// validation
|
||||
$rules = array(
|
||||
'kategori_produk' => 'required',
|
||||
'kelompok_produk' => 'required',
|
||||
'kode_produk' => 'required',
|
||||
'nama_produk' => 'required',
|
||||
'harga_produk' => 'required',
|
||||
'tersedia' => 'required',
|
||||
'deskripsi_produk' => 'required',
|
||||
);
|
||||
$validator = Validator::make($request->all(), $rules);
|
||||
|
||||
// check validation
|
||||
if ($validator->fails()) {
|
||||
// If validation fails, return with errors
|
||||
return response()->json(['errors' => $validator->errors()], 422);
|
||||
} else {
|
||||
$pivot = KelompokKategoriPivot::findOrFail($id);
|
||||
$produk = Produk::find($pivot->produk_id);
|
||||
|
||||
// update pivot produk
|
||||
$pivot->update([
|
||||
'kelompok_ketegori_id' => $request->kelompok_produk,
|
||||
]);
|
||||
|
||||
// update produk
|
||||
$produk->update([
|
||||
'kategori_produk_id' => $request->kategori_produk,
|
||||
'kode_produk' => $request->kode_produk,
|
||||
'nama_produk' => $request->nama_produk,
|
||||
'harga_produk' => $request->harga_produk,
|
||||
'tersedia' => $request->tersedia,
|
||||
'deskripsi_produk' => $request->deskripsi_produk,
|
||||
]);
|
||||
|
||||
// Return a success response
|
||||
return response()->json(['message' => 'Data created successfully']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -336,6 +336,28 @@
|
|||
</div>
|
||||
@endif
|
||||
@endif
|
||||
@else
|
||||
@if ($kelompokKategoriPivot->kelompok_kategori_id == 2)
|
||||
<div class="col-xl-4 col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="card card-warning card-outline btn"
|
||||
onclick="aadMenu( {{ $kelompokKategoriPivot->produk }} )">
|
||||
<div class="card-header px-0">
|
||||
<h6 class="m-0 text-sm text-bold">
|
||||
{{ $kelompokKategoriPivot->produk->nama_produk ?? '' }}
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body px-0">
|
||||
<div class="col-md-12 px-0">
|
||||
<div class="col-md-12 text-sm d-flex py-2 rounded bg-secondary" style="background-color: rgb(230, 230, 230)">
|
||||
<h5 class="my-auto text-bold" style="align-items: center;">
|
||||
{{ convert_to_rupiah($kelompokKategoriPivot->produk->harga_produk) }}
|
||||
</h5>
|
||||
<a class="btn btn-warning ml-auto" id="ordered-menus"><i class="fa fa-shopping-cart"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="col-xl-4 col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="card card-warning card-outline btn"
|
||||
|
@ -365,6 +387,7 @@
|
|||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<h3>Daftar Menu</h3>
|
||||
<!-- Button trigger modal -->
|
||||
<div class="ml-auto">
|
||||
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-default">
|
||||
<button type="button" class="btn btn-primary" onclick="tambahMenu()">
|
||||
Tambah Menu
|
||||
</button>
|
||||
</div>
|
||||
|
@ -46,6 +46,7 @@
|
|||
<th>Nama Produk</th>
|
||||
<th>Harga Produk</th>
|
||||
<th>Kategori Produk</th>
|
||||
<th>Kelompok Kategori</th>
|
||||
<th class="text-center"><i class="fas fa-cog"></i></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -57,20 +58,21 @@
|
|||
</div>
|
||||
|
||||
<!-- Modal Tambah Menu -->
|
||||
<div class="modal fade" id="modal-default" data-backdrop="static">
|
||||
<div class="modal fade" id="modal-produk" data-backdrop="static">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Tambah Menu</h4>
|
||||
<h4 class="modal-title" id="title-form-menu">Tambah Menu</h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form>
|
||||
<form method="post" id="formMenu" data-url="" data-method="">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-6">
|
||||
<label for="kategori_produk" class="col-form-label">Kategori Produk:</label>
|
||||
<input type="hidden" name="pivot_id" id="pivot_id">
|
||||
<select type="text" class="form-control select2" id="kategori_produk" name="kategori_produk" onchange="kelompokKategori(this.value)">
|
||||
<option value="">Pilih Kategori</option>
|
||||
@foreach ($kategori_produks as $kategori)
|
||||
|
@ -80,7 +82,9 @@
|
|||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="kelompok_produk" class="col-form-label">Kelompok Produk:</label>
|
||||
<input type="text" class="form-control" id="kelompok_produk" name="kelompok_produk" value="">
|
||||
<select type="text" class="form-control select2" id="kelompok_produk" name="kelompok_produk">
|
||||
<option value="default" selected disabled>Pilih Kelompok Produk</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
|
@ -99,8 +103,11 @@
|
|||
<input type="number" class="form-control" id="harga_produk" name="harga_produk" value="">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="stok_produk" class="col-form-label">Stok Produk:</label>
|
||||
<input type="text" class="form-control" id="stok_produk" name="stok_produk" value="">
|
||||
<label for="tersedia" class="col-form-label">Tersedia:</label>
|
||||
<select type="text" class="form-control select2" id="tersedia" name="tersedia">
|
||||
<option value="1">Iya</option>
|
||||
<option value="0">Tidak</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -111,7 +118,7 @@
|
|||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Tutup</button>
|
||||
<button type="button" class="btn btn-primary">Simpan</button>
|
||||
<button type="button" class="btn btn-primary" id="btn-simpan-menu" onclick="saveMenu()">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -174,6 +181,10 @@
|
|||
data: 'kategori_produk',
|
||||
name: 'kategori_produk'
|
||||
},
|
||||
{
|
||||
data: 'nama_kelompok_kategori',
|
||||
name: 'nama_kelompok_kategori'
|
||||
},
|
||||
{
|
||||
data: 'ubah',
|
||||
name: 'ubah',
|
||||
|
@ -190,8 +201,13 @@
|
|||
$.ajax({
|
||||
url: "{{ route('menu.kelompok-kategori', '') }}/" + id,
|
||||
method: "GET",
|
||||
success: function(result) {
|
||||
console.log(result);
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
$('#kelompok_produk').empty();
|
||||
response?.forEach(function(item, index) {
|
||||
$('#kelompok_produk').append(
|
||||
`<option value="${item?.id}">${item?.nama_kelompok_kategori}</option>`)
|
||||
})
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
toastr.error(xhr.responseJSON.message, 'Error', {
|
||||
|
@ -201,33 +217,97 @@
|
|||
})
|
||||
}
|
||||
|
||||
// function tambah() {
|
||||
// var data = {
|
||||
// _token: "{{ csrf_token() }}",
|
||||
// orderMenus: orderMenus,
|
||||
// };
|
||||
function saveMenu() {
|
||||
document.getElementById('btn-simpan-menu').disabled = true;
|
||||
document.getElementById('btn-simpan-menu').innerText = "Loading...";
|
||||
|
||||
// $.ajax({
|
||||
// url: "{{ route('menu.store') }}",
|
||||
// method: "POST",
|
||||
// data: data,
|
||||
// success: function(result) {
|
||||
// toastr.success(result.message, 'Success', {
|
||||
// timeOut: 2000
|
||||
// });
|
||||
// window.open(result.url, '_blank');
|
||||
// // window.open(result.url, '_blank', "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=900,height=600");
|
||||
var url = $('#formMenu').data('url');
|
||||
var method = $('#formMenu').data('method');
|
||||
var data = {
|
||||
_token: "{{ csrf_token() }}",
|
||||
kategori_produk: $('#kategori_produk').val(),
|
||||
kelompok_produk: $('#kelompok_produk').val(),
|
||||
kode_produk: $('#kode_produk').val(),
|
||||
nama_produk: $('#nama_produk').val(),
|
||||
harga_produk: $('#harga_produk').val(),
|
||||
tersedia: $('#tersedia').val(),
|
||||
deskripsi_produk: $('#deskripsi_produk').val(),
|
||||
};
|
||||
|
||||
// setTimeout(function() {
|
||||
// window.location.reload(1);
|
||||
// }, 1000);
|
||||
// },
|
||||
// error: function(xhr, status, error) {
|
||||
// toastr.error(xhr.responseJSON.message, 'Error', {
|
||||
// timeOut: 3000
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
$.ajax({
|
||||
url: url,
|
||||
method: method,
|
||||
data: data,
|
||||
success: function(result) {
|
||||
if (result.errors) {
|
||||
toastr.error(result.errors, 'Gagal', {
|
||||
timeOut: 2000
|
||||
});
|
||||
document.getElementById('btn-simpan-menu').disabled = false;
|
||||
document.getElementById('btn-simpan-menu').innerText = "Simpan";
|
||||
} else {
|
||||
toastr.success(result.message, 'Berhasil', {
|
||||
timeOut: 2000
|
||||
});
|
||||
|
||||
$('#modal-produk').modal('hide');
|
||||
$('#formMenu')[0].reset();
|
||||
document.getElementById('btn-simpan-menu').disabled = false;
|
||||
document.getElementById('btn-simpan-menu').innerText = "Simpan";
|
||||
|
||||
// console.log(result);
|
||||
setTimeout(function() {
|
||||
window.location.reload(1);
|
||||
}, 1000);
|
||||
}
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
toastr.error(xhr.responseJSON.message, 'Error', {
|
||||
timeOut: 3000
|
||||
});
|
||||
document.getElementById('btn-simpan-menu').disabled = false;
|
||||
document.getElementById('btn-simpan-menu').innerText = "Simpan";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function tambahMenu() {
|
||||
$('#formMenu')[0].reset();
|
||||
// $('#kategori_produk').val('').trigger('change');
|
||||
$('#modal-produk').modal('show');
|
||||
$('#title-form-menu').text("Tambah Menu");
|
||||
|
||||
let formMenu = document.getElementById('formMenu');
|
||||
formMenu.setAttribute('data-url', "{{ route('menu.store') }}");
|
||||
formMenu.setAttribute('data-method', "post");
|
||||
}
|
||||
function editMenu(id) {
|
||||
$('#modal-produk').modal('show');
|
||||
$('#title-form-menu').text("Ubah Menu");
|
||||
let formMenu = document.getElementById('formMenu');
|
||||
formMenu.setAttribute('data-url', "{{ route('menu.update', '') }}/" + id);
|
||||
formMenu.setAttribute('data-method', "put");
|
||||
|
||||
$.ajax({
|
||||
url: "{{ route('menu.show', '') }}/" + id,
|
||||
method: "GET",
|
||||
success: function(response) {
|
||||
console.log(response);
|
||||
|
||||
$('#kategori_produk').val(response.produk.kategori_produk_id).trigger('change');
|
||||
$('#kelompok_produk').val(response.kelompok_kategori_id);
|
||||
$('#kode_produk').val(response.produk.kode_produk);
|
||||
$('#nama_produk').val(response.produk.nama_produk);
|
||||
$('#harga_produk').val(response.produk.harga_produk);
|
||||
$('#tersedia').val(response.produk.tersedia);
|
||||
$('#deskripsi_produk').val(response.produk.deskripsi_produk);
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
toastr.error(xhr.responseJSON.message, 'Error', {
|
||||
timeOut: 3000
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
@endpush
|
Loading…
Reference in New Issue