Add: UpdateMenu

Refactor: Paket Irit (Transaksi)
main-gitea-akuncoa
mikhailkusuma 2024-02-01 22:07:48 +07:00
parent 9cac2a6be3
commit 865faec964
3 changed files with 251 additions and 42 deletions

View File

@ -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']);
}
}
}

View File

@ -337,6 +337,28 @@
@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"
onclick="aadMenu( {{ $kelompokKategoriPivot->produk }} )">
@ -364,6 +386,7 @@
</div>
</div>
</div>
@endif
@endif
@endforeach
@endif

View File

@ -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">&times;</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