progress pesanan mcu
This commit is contained in:
parent
f87add2ae4
commit
b524a67281
@ -4,7 +4,9 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Mail\NotifikasiCustomer;
|
||||
use App\Mail\NotifikasiPembayaran;
|
||||
use App\Models\JadwalKonsul;
|
||||
use App\Models\Karbohidrat;
|
||||
use App\Models\MasterMcu;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderDetail;
|
||||
use Carbon\Carbon;
|
||||
@ -31,8 +33,11 @@ class CustomerController extends Controller
|
||||
$perPage = request()->get('per_page', 50);
|
||||
$tanggal_awal = (int) request('tanggal_awal');
|
||||
$tanggal_akhir = (int) request('tanggal_akhir');
|
||||
|
||||
return self::menuOrder($search, $jenis_menu, $perPage, $tanggal_awal, $tanggal_akhir);
|
||||
if($jenis_menu === "konsultasi"){
|
||||
return self::konsultasi();
|
||||
}else{
|
||||
return self::menuOrder($search, $jenis_menu, $perPage, $tanggal_awal, $tanggal_akhir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -230,73 +235,14 @@ class CustomerController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// paket do komen dulu
|
||||
// private static function dataPaketMenuOrder($search = null, $perPage){
|
||||
// $query = DB::connection('dbOrderGizi')->table('public.master_paket_menu as mpn')
|
||||
// ->where('mpn.statusenabled', true);
|
||||
|
||||
// if(!empty($search)){
|
||||
// $query->where('mpn.nama_paket', 'ILIKE', '%' . $search . '%');
|
||||
// }
|
||||
|
||||
// $paginated = $query->select(
|
||||
// 'mpn.master_paket_menu_id',
|
||||
// 'mpn.nama_paket',
|
||||
// 'mpn.foto',
|
||||
// 'mpn.harga_public',
|
||||
// 'mpn.harga_karyawan',
|
||||
// 'mpn.harga_keluarga_pasien',
|
||||
// 'mpn.deskripsi',
|
||||
// 'mpn.status',
|
||||
// 'dmph.detail_menu_paket_harian_id',
|
||||
// 'dmph.tgl_harian'
|
||||
// )->paginate($perPage);
|
||||
|
||||
// $paketMenuIds = collect($paginated->items())->pluck('master_paket_menu_id')->toArray();
|
||||
// dd($paketMenuIds);
|
||||
// $klasifikasi = DB::connection('dbOrderGizi')
|
||||
// ->table('public.klasifikasi_menu_diet as kmd')
|
||||
// ->join('public.kategori_diet as kd', 'kd.kategori_diet_id', '=', 'kmd.kategori_diet_id')
|
||||
// ->whereIn('kmd.master_paket_menu_id', $paketMenuIds)
|
||||
// ->select('kmd.master_paket_menu_id', 'kd.kategori_diet_id', 'kd.nama_kategori_diet')
|
||||
// ->get()
|
||||
// ->groupBy('master_paket_menu_id');
|
||||
|
||||
// $result = collect($paginated->items())->map(function ($paketMenu) use ($klasifikasi) {
|
||||
// return [
|
||||
// 'master_paket_menu_id' => $paketMenu->master_paket_menu_id,
|
||||
// 'nama' => $paketMenu->nama_paket,
|
||||
// 'foto' => $paketMenu->foto,
|
||||
// 'jenis_menu' => "paket",
|
||||
// 'harga_public' => $paketMenu->harga_public,
|
||||
// 'harga_karyawan' => $paketMenu->harga_karyawan,
|
||||
// 'harga_keluarga_pasien' => $paketMenu->harga_keluarga_pasien,
|
||||
// 'status' => $paketMenu->status,
|
||||
// 'deskripsi' => $paketMenu->deskripsi,
|
||||
// 'klasifikasiMenu' => isset($klasifikasi[$paketMenu->master_paket_menu_id]) ? $klasifikasi[$paketMenu->master_paket_menu_id]->map(function ($item) {
|
||||
// return [
|
||||
// 'kategori_diet_id' => $item->kategori_diet_id,
|
||||
// 'nama_kategori_diet' => $item->nama_kategori_diet,
|
||||
// ];
|
||||
// })->values() : [],
|
||||
// ];
|
||||
// });
|
||||
|
||||
|
||||
// return response()->json([
|
||||
// 'status' => true,
|
||||
// 'message' => 'Berhasil mendapatkan data',
|
||||
// 'data' => [
|
||||
// 'data' => $result,
|
||||
// 'current_page' => $paginated->currentPage(),
|
||||
// 'last_page' => $paginated->lastPage(),
|
||||
// 'per_page' => $paginated->perPage(),
|
||||
// 'total' => $paginated->total(),
|
||||
// ]
|
||||
// ]);
|
||||
// }
|
||||
private static function konsultasi(){
|
||||
$data = JadwalKonsul::where('statusenabled', true)->with('tglAvailable')->get();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Berhasil mendapatkan data',
|
||||
'data' => $data
|
||||
]);
|
||||
}
|
||||
|
||||
public function checkout(){
|
||||
$karbohidrat = Karbohidrat::where('statusenabled', true)->select('karbohidrat_id', 'nama_karbohidrat', 'nilai_kalori')->get();
|
||||
@ -353,12 +299,8 @@ class CustomerController extends Controller
|
||||
$payloadOrderDetail['type'] = $value['kategoriPemesanan'];
|
||||
$payloadOrderDetail['karbohidrat_id'] = $value['karbohidrat_id'] ?? null;
|
||||
$payloadOrderDetail['catatan'] = $value['catatan'] ?? null;
|
||||
if($cart['jenis_menu'] === "paket"){
|
||||
$payloadOrderDetail['master_paket_menu_id'] = $cart['id_menu'];
|
||||
}else{
|
||||
$payloadOrderDetail['master_menu_id'] = $cart['id_menu'];
|
||||
}
|
||||
OrderDetail::create($payloadOrderDetail);
|
||||
$payloadOrderDetail['master_menu_id'] = $cart['id_menu'];
|
||||
OrderDetail::create($payloadOrderDetail);
|
||||
}
|
||||
}
|
||||
//code...
|
||||
@ -465,7 +407,6 @@ class CustomerController extends Controller
|
||||
->table('public.order as o')
|
||||
->leftJoin('public.order_detail as od', 'od.order_id', '=', 'o.order_id')
|
||||
->leftJoin('public.master_menu as mm', 'mm.master_menu_id', '=', 'od.master_menu_id')
|
||||
->leftJoin('public.master_paket_menu as mpm', 'mpm.master_paket_menu_id', '=', 'od.master_paket_menu_id')
|
||||
->where('o.no_order', 'ILIKE', '%' . $noOrder . '%')
|
||||
->select(
|
||||
'o.*',
|
||||
@ -475,8 +416,8 @@ class CustomerController extends Controller
|
||||
'od.harga_satuan',
|
||||
'od.status_order as status_order_detail',
|
||||
'od.catatan',
|
||||
DB::raw("COALESCE(mm.nama_menu, mpm.nama_paket) as nama_item"),
|
||||
DB::raw("COALESCE(mm.foto, mpm.foto) as foto"),
|
||||
'mm.nama_menu as nama_item',
|
||||
'mm.foto as foto'
|
||||
)
|
||||
->get();
|
||||
|
||||
@ -531,4 +472,72 @@ class CustomerController extends Controller
|
||||
'data' => $result,
|
||||
], 200);
|
||||
}
|
||||
|
||||
public function indexMcu(){
|
||||
$paketMcu = MasterMcu::where('statusenabled', true)->get();
|
||||
$data = [
|
||||
'title' => 'Order Gizi MCU',
|
||||
'paketMcu' => $paketMcu
|
||||
];
|
||||
return view('guest.mcu.index', $data);
|
||||
}
|
||||
|
||||
public function storeMcu(){
|
||||
try {
|
||||
DB::connection('dbOrderGizi')->beginTransaction();
|
||||
$today = now()->toDateString();
|
||||
$jumlahHariIni = Order::whereDate('entry_at', $today)->count();
|
||||
$urutan = $jumlahHariIni + 1;
|
||||
$noOrder = 'TX/CT/GIZI/' . now()->year .'/'. now()->month .'/' . now()->day .'/MCU/' . Str::random(6) .'/' . str_pad($urutan, 4, '0', STR_PAD_LEFT);
|
||||
$payload = [
|
||||
'email' => request('email') ?? null,
|
||||
'nama_pemesan' => request('nama_pemesan'),
|
||||
'jenis_customer' => 'MCU',
|
||||
'medical_record' => request('no_mr'),
|
||||
'jenis_kelamin' => request('jenis_kelamin'),
|
||||
'no_order' => $noOrder,
|
||||
'no_wa' => request('no_hp') ?? null,
|
||||
'tinggi_badan' => request('tinggi_badan') ?? null,
|
||||
'berat_badan' => request('berat_badan') ?? null,
|
||||
'status_order' =>'Menunggu Konfirmasi Pesanan MCU'
|
||||
];
|
||||
$order = Order::create($payload);
|
||||
$payloadDetail = [
|
||||
'order_id' => $order->order_id,
|
||||
'jumlah' => 1,
|
||||
'tgl_antar' => request('tgl_mcu'),
|
||||
'menu_mcu_id' => request('paket_mcu'),
|
||||
'jam_layanan' => request('jam_layanan'),
|
||||
'cara_pembayaran' => 'MCU',
|
||||
'status_order' =>'Menunggu Konfirmasi'
|
||||
];
|
||||
OrderDetail::create($payloadDetail);
|
||||
|
||||
DB::connection('dbOrderGizi')->commit();
|
||||
session()->flash('success_mcu', true);
|
||||
session()->flash('no_order', $noOrder);
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Pesanan Berhasil diproses'
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
DB::rollBack();
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Pesanan gagal diproses ' . $th->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function successMcu(){
|
||||
if(!session()->has('success_mcu')){
|
||||
return redirect('/order-mcu');
|
||||
}
|
||||
$payload = [
|
||||
'title' => 'Berhasil Melakukan Pesanan ',
|
||||
'no_order' => session('no_order'),
|
||||
'back_href' => '/order-mcu'
|
||||
];
|
||||
return view('guest.success_page', $payload);
|
||||
}
|
||||
}
|
||||
|
||||
140
app/Http/Controllers/JadwalKonsulController.php
Normal file
140
app/Http/Controllers/JadwalKonsulController.php
Normal file
@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\JadwalKonsul;
|
||||
use App\Models\JadwalKonsulDetail;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class JadwalKonsulController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$data = [
|
||||
'title' => 'Master Jadwal Konsul'
|
||||
];
|
||||
return view('dashboard.jadwal_konsul.index', $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
try {
|
||||
DB::connection('dbOrderGizi')->beginTransaction();
|
||||
$datas = request('data');
|
||||
foreach ($datas as $data) {
|
||||
$payload = [
|
||||
'nama_dokter' => $data['nama_dokter']
|
||||
];
|
||||
$jk = JadwalKonsul::create($payload);
|
||||
if(isset($data['tanggal'])){
|
||||
$tanggal = $data['tanggal'];
|
||||
foreach ($tanggal as $tgl) {
|
||||
$payloadTgl = [
|
||||
'tgl_harian' => $tgl,
|
||||
'jadwal_konsul_id' => $jk->jadwal_konsul_id,
|
||||
];
|
||||
JadwalKonsulDetail::create($payloadTgl);
|
||||
}
|
||||
}
|
||||
}
|
||||
//code...
|
||||
DB::connection('dbOrderGizi')->commit();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil ditambahkan!'
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
DB::connection('dbOrderGizi')->rollBack();
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Data gagal ditambahkan!',
|
||||
'errors' => $th->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(JadwalKonsul $jadwalKonsul)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit(JadwalKonsul $jadwalKonsul)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
try {
|
||||
DB::connection('dbOrderGizi')->beginTransaction();
|
||||
JadwalKonsulDetail::where('jadwal_konsul_id', $id)->delete();
|
||||
|
||||
$jadwalKonsul = JadwalKonsul::where('jadwal_konsul_id', $id)->first();
|
||||
$jadwalKonsul->update([
|
||||
'nama_dokter' => request('nama_dokter')
|
||||
]);
|
||||
$tanggals = request('tanggal');
|
||||
foreach ($tanggals as $tgl) {
|
||||
$payload = [
|
||||
'jadwal_konsul_id' => $id,
|
||||
'tgl_harian' => $tgl
|
||||
];
|
||||
JadwalKonsulDetail::create($payload);
|
||||
}
|
||||
DB::connection('dbOrderGizi')->commit();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil diperbarui!'
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
DB::connection('dbOrderGizi')->rollBack();
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Data gagal diperbarui!',
|
||||
'errors' => $th->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
$jadwalKonsul = JadwalKonsul::where('jadwal_konsul_id', $id)->first();
|
||||
$jadwalKonsul->update([
|
||||
'statusenabled' => false
|
||||
]);
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil dihapus!'
|
||||
]);
|
||||
}
|
||||
|
||||
public function datatable(){
|
||||
return JadwalKonsul::where('statusenabled', true)->with('tglAvailable')->get();
|
||||
}
|
||||
}
|
||||
117
app/Http/Controllers/MasterMcuController.php
Normal file
117
app/Http/Controllers/MasterMcuController.php
Normal file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\MasterMcu;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MasterMcuController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$payload = [
|
||||
'title' => 'Master MCU'
|
||||
];
|
||||
return view('dashboard.master.mcu.index', $payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
try {
|
||||
DB::connection('dbOrderGizi')->beginTransaction();
|
||||
$datas = request('data');
|
||||
foreach ($datas as $data) {
|
||||
$payload =[
|
||||
'nama_mcu' => $data['nama_mcu']
|
||||
];
|
||||
if($data['harga']){
|
||||
$harga = $data['harga'] ? str_replace('.', '', $data['harga']) : null;
|
||||
$payload['harga'] = $harga;
|
||||
}
|
||||
MasterMcu::create($payload);
|
||||
}
|
||||
DB::connection('dbOrderGizi')->commit();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil ditambahkan!'
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
DB::connection('dbOrderGizi')->rollBack();
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => 'Data gagal ditambahkan!',
|
||||
'errors' => $th->getMessage()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(MasterMcu $masterMcu)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit(MasterMcu $masterMcu)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(string $id)
|
||||
{
|
||||
$masterMcu = MasterMcu::where('menu_mcu_id', $id)->first();
|
||||
$payload =[
|
||||
'nama_mcu' => request('nama_mcu'),
|
||||
];
|
||||
if(request('harga')){
|
||||
$harga = request('harga') ? str_replace('.', '', request('harga')) : null;
|
||||
$payload['harga'] = $harga;
|
||||
}
|
||||
$masterMcu->update($payload);
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil diperbarui!'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
$masterMcu = MasterMcu::where('menu_mcu_id', $id)->first();
|
||||
$masterMcu->update([
|
||||
'statusenabled' => false
|
||||
]);
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil dihapus!'
|
||||
]);
|
||||
}
|
||||
|
||||
public function datatable(){
|
||||
return MasterMcu::where('statusenabled', true)->get();
|
||||
}
|
||||
}
|
||||
@ -44,7 +44,7 @@ class PesananController extends Controller
|
||||
"DATE(o.entry_at) IN (" . implode(',', array_fill(0, count($tanggalFormatted), '?')) . ")",
|
||||
$tanggalFormatted
|
||||
)
|
||||
->whereIn('o.status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing'])
|
||||
->whereIn('o.status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing', 'Menunggu Konfirmasi Pesanan MCU'])
|
||||
->select(
|
||||
'o.order_id',
|
||||
'o.entry_at',
|
||||
@ -372,7 +372,7 @@ class PesananController extends Controller
|
||||
$sheet->setCellValue("F{$row}", $item?->menu?->nama_menu ?? '-');
|
||||
$karbohidratNama = $item?->karbohidrat?->nama_karbohidrat ?? '-';
|
||||
$karbohidratNilai = $item?->karbohidrat?->nilai_kalori ?? '-';
|
||||
$sheet->setCellValue("G{$row}", $karbohidratNama . ($karbohidratNilai !== '-' ? " ({$karbohidratNilai} Kkal)" : ''));
|
||||
$sheet->setCellValue("G{$row}", $karbohidratNama . ($karbohidratNilai !== '-' ? " ({$karbohidratNilai} kal)" : ''));
|
||||
$sheet->setCellValue("H{$row}", $item?->jumlah ?? '-');
|
||||
$sheet->setCellValue("I{$row}", $item?->tgl_antar ? Carbon::parse($item->tgl_antar)->translatedFormat('d F Y') : "Tanggal Antar");
|
||||
$sheet->setCellValue("J{$row}", $item?->type ?? "-");
|
||||
@ -545,7 +545,7 @@ class PesananController extends Controller
|
||||
}
|
||||
|
||||
public function countKonfirmasiPesanan(){
|
||||
$count = Order::where('statusenabled', true)->whereIn('status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing'])->count();
|
||||
$count = Order::where('statusenabled', true)->whereIn('status_order', ['Menunggu Konfirmasi Pembayaran', 'Menunggu Konfirmasi Pembayaran Via Billing', 'Menunggu Konfirmasi Pesanan MCU'])->count();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'count' => $count,
|
||||
|
||||
22
app/Models/JadwalKonsul.php
Normal file
22
app/Models/JadwalKonsul.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class JadwalKonsul extends Model
|
||||
{
|
||||
protected $connection = 'dbOrderGizi';
|
||||
protected $table = 'public.jadwal_konsul';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = "jadwal_konsul_id";
|
||||
protected $fillable =[
|
||||
'nama_dokter',
|
||||
'status',
|
||||
'statusenabled'
|
||||
];
|
||||
|
||||
public function tglAvailable(){
|
||||
return $this->hasMany(JadwalKonsulDetail::class, 'jadwal_konsul_id', 'jadwal_konsul_id');
|
||||
}
|
||||
}
|
||||
17
app/Models/JadwalKonsulDetail.php
Normal file
17
app/Models/JadwalKonsulDetail.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class JadwalKonsulDetail extends Model
|
||||
{
|
||||
protected $connection = 'dbOrderGizi';
|
||||
protected $table = 'public.jadwal_konsul_detail';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = "jadwal_konsul_detail_id";
|
||||
protected $fillable =[
|
||||
'jadwal_konsul_id',
|
||||
'tgl_harian'
|
||||
];
|
||||
}
|
||||
@ -19,7 +19,6 @@ class KategoriKlasifikasiPaketMenu extends Model
|
||||
'pegawai_nama_modified',
|
||||
'statusenabled',
|
||||
'kategori_diet_id',
|
||||
'master_menu_id',
|
||||
'master_paket_menu_id'
|
||||
'master_menu_id'
|
||||
];
|
||||
}
|
||||
|
||||
@ -19,7 +19,6 @@ class KlasifikasiMenuKalori extends Model
|
||||
'pegawai_nama_modified',
|
||||
'statusenabled',
|
||||
'kalori_id',
|
||||
'master_menu_id',
|
||||
'master_paket_menu_id'
|
||||
'master_menu_id'
|
||||
];
|
||||
}
|
||||
|
||||
18
app/Models/MasterMcu.php
Normal file
18
app/Models/MasterMcu.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class MasterMcu extends Model
|
||||
{
|
||||
protected $connection = 'dbOrderGizi';
|
||||
protected $table = 'public.menu_mcu';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = "menu_mcu_id";
|
||||
protected $fillable =[
|
||||
'nama_mcu',
|
||||
'harga',
|
||||
'statusenabled'
|
||||
];
|
||||
}
|
||||
@ -15,7 +15,7 @@ class OrderDetail extends Model
|
||||
'modified_at',
|
||||
'statusenabled',
|
||||
'master_menu_id',
|
||||
'master_paket_menu_id',
|
||||
'paket_mcu_id',
|
||||
'harga_satuan',
|
||||
'jumlah',
|
||||
'tgl_antar',
|
||||
@ -23,7 +23,8 @@ class OrderDetail extends Model
|
||||
'order_id',
|
||||
'status_order',
|
||||
'karbohidrat_id',
|
||||
'catatan'
|
||||
'catatan',
|
||||
'jam_layanan'
|
||||
];
|
||||
|
||||
|
||||
@ -34,11 +35,6 @@ class OrderDetail extends Model
|
||||
public function karbohidrat(){
|
||||
return $this->belongsTo(Karbohidrat::class, 'karbohidrat_id', 'karbohidrat_id')->select('karbohidrat_id', 'nama_karbohidrat', 'nilai_kalori');
|
||||
}
|
||||
|
||||
public function paketMenu(){
|
||||
return $this->belongsTo(PaketMenu::class, 'master_paket_menu_id', 'master_paket_menu_id')->select('master_paket_menu_id', 'nama_paket', 'foto');
|
||||
}
|
||||
|
||||
public function order(){
|
||||
return $this->belongsTo(Order::class, 'order_id', 'order_id');
|
||||
}
|
||||
|
||||
@ -19,7 +19,6 @@ class TanggalMenuTersedia extends Model
|
||||
'pegawai_nama_modified',
|
||||
'statusenabled',
|
||||
'tgl_harian',
|
||||
'master_paket_menu_id',
|
||||
'master_menu_id'
|
||||
];
|
||||
}
|
||||
|
||||
8
public/js/jadwal_konsul/_init.js
Normal file
8
public/js/jadwal_konsul/_init.js
Normal file
@ -0,0 +1,8 @@
|
||||
const datatableMasterJadwalKonsul = $("#datatableMasterJadwalKonsul")
|
||||
|
||||
const formAddJadwalKonsul = $("#formMasterJadwalKonsul")
|
||||
const modalAddJadwalKonsul = document.getElementById("modalMasterJadwalKonsul")
|
||||
|
||||
const modalMasterJadwalKonsulEdit = document.getElementById('modalMasterJadwalKonsulEdit');
|
||||
const formMasterJadwalKonsulEdit = document.getElementById('formMasterJadwalKonsulEdit');
|
||||
|
||||
264
public/js/jadwal_konsul/action.js
Normal file
264
public/js/jadwal_konsul/action.js
Normal file
@ -0,0 +1,264 @@
|
||||
// Fungsi inisialisasi Selectize dan Auto-expand
|
||||
function initSelectize(formElement) {
|
||||
const tanggalSelect = formElement.querySelector('.date-input');
|
||||
|
||||
|
||||
if (tanggalSelect) {
|
||||
$(tanggalSelect).selectize({
|
||||
valueField: 'tanggal',
|
||||
labelField: 'tgl',
|
||||
create: true,
|
||||
placeholder: "Masukkan Tanggal...",
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const firstForm = document.querySelector('.form-set');
|
||||
initSelectize(firstForm);
|
||||
});
|
||||
// Fungsi untuk menambah form baru
|
||||
let countForm = 1; // karena form pertama pakai index 0
|
||||
function addFormJadwalKonsul() {
|
||||
const container = document.getElementById('form-sets-container');
|
||||
const original = container.querySelector('.form-set');
|
||||
|
||||
const html = original.outerHTML
|
||||
.replace(/\[0\]/g, `[${countForm}]`);
|
||||
|
||||
const wrapper = document.createElement('div');
|
||||
wrapper.innerHTML = html.trim();
|
||||
const newForm = wrapper.firstChild;
|
||||
|
||||
// Hapus Selectize wrapper jika ada
|
||||
newForm.querySelectorAll('select').forEach(select => {
|
||||
const wrapper = select.nextElementSibling;
|
||||
if (wrapper?.classList.contains('selectize-control')) wrapper.remove();
|
||||
|
||||
select.value = '';
|
||||
if (select.multiple) {
|
||||
// Untuk multiple select, pastikan semua opsi tidak terseleksi
|
||||
Array.from(select.options).forEach(option => option.selected = false);
|
||||
}
|
||||
});
|
||||
|
||||
container.appendChild(newForm);
|
||||
initSelectize(newForm);
|
||||
countForm++;
|
||||
}
|
||||
|
||||
// Hapus form-set (kecuali jika hanya 1)
|
||||
document.addEventListener('click', function (e) {
|
||||
if (e.target.closest('.btn-remove-form')) {
|
||||
const targetForm = e.target.closest('.form-set');
|
||||
const total = document.querySelectorAll('.form-set').length;
|
||||
if (total > 1) {
|
||||
targetForm.remove();
|
||||
} else {
|
||||
alert('Minimal satu form harus ada.');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
document.getElementById('formMasterJadwalKonsul').addEventListener('submit', function(e){
|
||||
e.preventDefault();
|
||||
const form = this;
|
||||
const actionUrl = form.getAttribute('action');
|
||||
const formData = new FormData(form);
|
||||
|
||||
fetch(actionUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
|
||||
},
|
||||
body: formData
|
||||
}).then(async (res) => {
|
||||
const data = await res.json();
|
||||
if (data.status) {
|
||||
const handler = function () {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil',
|
||||
text: data.message,
|
||||
timer: 2000,
|
||||
showConfirmButton: false,
|
||||
backdrop: true,
|
||||
});
|
||||
datatableMasterJadwalKonsul.bootstrapTable('refresh');
|
||||
modalAddJadwalKonsul.removeEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
};
|
||||
modalAddJadwalKonsul.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
bootstrap.Modal.getInstance(modalAddJadwalKonsul).hide(); // ✅ pakai instance
|
||||
const allFormSets = document.querySelectorAll('.form-set');
|
||||
|
||||
for(let i = 1; i < allFormSets.length; i++){
|
||||
allFormSets[i].remove();
|
||||
}
|
||||
document.querySelectorAll('.form-set').forEach((formSet, index) => {
|
||||
formSet.querySelectorAll('input, textarea, select').forEach(el => {
|
||||
// Reset Selectize jika ada
|
||||
if (el.classList.contains('selectized')) {
|
||||
const selectize = el.selectize;
|
||||
if (selectize) {
|
||||
selectize.clear();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.');
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: err.message || 'Terjadi kesalahan pada server.',
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
function deleteMasterJadwalKonsul(e){
|
||||
let id = $(e).data('jadwal_konsul_id')
|
||||
Swal.fire({
|
||||
title: "Apakah kamu yakin ingin menghapus data ini?",
|
||||
text : $(e).data('nama_dokter'),
|
||||
icon: "warning",
|
||||
showCancelButton: true,
|
||||
backdrop: true,
|
||||
}).then((result) => {
|
||||
if(result.isConfirmed){
|
||||
fetch(`/dashboard/jadwal-konsul/${id}`, {
|
||||
method:'DELETE',
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": document.querySelector('input[name="_token"]').value,
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}).then((response) => {
|
||||
if(!response.ok){
|
||||
throw new Error("Network response was not ok");
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
if(data.status){
|
||||
Swal.fire({
|
||||
title: "Success",
|
||||
text: "Data berhasil dihapus",
|
||||
icon:"success",
|
||||
showConfirmButton: false,
|
||||
timer: 1000
|
||||
}).then(() => {
|
||||
datatableMasterJadwalKonsul.bootstrapTable("refresh")
|
||||
})
|
||||
}else{
|
||||
Swal.fire({
|
||||
title: "Error!",
|
||||
text: data.message || "Failed to delete Item.",
|
||||
icon: "error"
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
Swal.fire({
|
||||
title: "Error!",
|
||||
text: "Something went wrong. Please try again later.",
|
||||
icon: "error"
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
let tanggalSelectizeInstance = null;
|
||||
|
||||
function editMasterJadwalKonsul(e) {
|
||||
const el = $(e);
|
||||
const modal = new bootstrap.Modal(modalMasterJadwalKonsulEdit);
|
||||
formMasterJadwalKonsulEdit.setAttribute('action', `/dashboard/jadwal-konsul/${el.data('jadwal_konsul_id')}`)
|
||||
modal.show();
|
||||
|
||||
// Ambil data
|
||||
let dataOld = {
|
||||
jadwal_konsul_id: el.data('jadwal_konsul_id'),
|
||||
nama_dokter: el.data('nama_dokter'),
|
||||
tgl: JSON.parse(decodeURIComponent(el.data('tgl_available') || '[]')),
|
||||
};
|
||||
|
||||
// Set value ke input form
|
||||
$("#nama_dokter_edit").val(dataOld.nama_dokter);
|
||||
const tanggalField = document.getElementById('tanggal_edit');
|
||||
|
||||
if(tanggalSelectizeInstance){
|
||||
tanggalSelectizeInstance.destroy();
|
||||
tanggalSelectizeInstance = null
|
||||
}
|
||||
tanggalField.style.display = 'block';
|
||||
tanggalSelectizeInstance =$('#tanggal_edit').selectize({
|
||||
valueField: 'tanggal',
|
||||
labelField: 'tgl',
|
||||
create: true,
|
||||
placeholder: 'Masukkan Tanggal...',
|
||||
onInitialize: function () {
|
||||
const s = this;
|
||||
dataOld.tgl.forEach(item => {
|
||||
const tglValue = item?.tgl_harian || item?.tanggal || item;
|
||||
s.addOption({ tanggal: tglValue, tgl: tglValue });
|
||||
s.addItem(tglValue);
|
||||
});
|
||||
}
|
||||
})[0].selectize;
|
||||
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('formMasterJadwalKonsulEdit').addEventListener('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
const form = this;
|
||||
const actionUrl = form.getAttribute('action');
|
||||
const formData = new FormData(form);
|
||||
|
||||
fetch(actionUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
|
||||
},
|
||||
body: formData
|
||||
}).then(async (res) => {
|
||||
const data = await res.json();
|
||||
|
||||
if (data.status) {
|
||||
form.reset();
|
||||
const handler = function () {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil',
|
||||
text: data.message,
|
||||
timer: 2000,
|
||||
showConfirmButton: false,
|
||||
backdrop: true,
|
||||
});
|
||||
datatableMasterJadwalKonsul.bootstrapTable('refresh');
|
||||
modalMasterJadwalKonsulEdit.removeEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
};
|
||||
|
||||
modalMasterJadwalKonsulEdit.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
bootstrap.Modal.getInstance(modalMasterJadwalKonsulEdit).hide(); // ✅ pakai instance
|
||||
} else {
|
||||
throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.');
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: err.message || 'Terjadi kesalahan pada server.',
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
69
public/js/jadwal_konsul/dt.js
Normal file
69
public/js/jadwal_konsul/dt.js
Normal file
@ -0,0 +1,69 @@
|
||||
|
||||
datatableMasterJadwalKonsul.bootstrapTable({
|
||||
url: "/dashboard/datatable/jadwal-konsul",
|
||||
showColumns: true,
|
||||
showColumnsToggleAll: true,
|
||||
showRefresh: true,
|
||||
sortable: true,
|
||||
search: true,
|
||||
searchOnEnterKey: false,
|
||||
searchHighlight: true,
|
||||
pagination: true,
|
||||
serverSide: true,
|
||||
pageSize: 10,
|
||||
pageList: [10, 20, 30, 40, 50, 100, 200],
|
||||
cookie: true,
|
||||
icons: {
|
||||
refresh: "fas fa-sync-alt", // atau ganti ke icon lain
|
||||
columns: "fas fa-th-large"
|
||||
},
|
||||
|
||||
columns: [
|
||||
{
|
||||
title: "Action",
|
||||
field: 'jadwal_konsul_id',
|
||||
formatter: function(value, row) {
|
||||
|
||||
let buttons = ''
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-primary me-2" onclick="editMasterJadwalKonsul(this)" data-jadwal_konsul_id="${row.jadwal_konsul_id}"
|
||||
data-nama_dokter="${row?.nama_dokter}"
|
||||
data-tgl_available="${encodeURIComponent(JSON.stringify(row?.tgl_available || []))}"
|
||||
>
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</button>
|
||||
`
|
||||
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-danger me-2" onclick="deleteMasterJadwalKonsul(this)"
|
||||
data-jadwal_konsul_id="${row?.jadwal_konsul_id}"
|
||||
data-nama_dokter="${row?.nama_dokter}"
|
||||
>
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
`
|
||||
return `
|
||||
<div class="d-flex space-x">
|
||||
${buttons}
|
||||
</div>
|
||||
`;
|
||||
},
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
title:"Dokter",
|
||||
field:"nama_dokter",
|
||||
width: 300
|
||||
},
|
||||
{
|
||||
title:"Tanggal Tersedia",
|
||||
field:"jadwal_konsul_id",
|
||||
formatter: function(value, row){
|
||||
let tglAvlb = '';
|
||||
tglAvlb = row?.tgl_available ? row?.tgl_available.map(item => item?.tgl_harian).join(', ') : '-';
|
||||
return tglAvlb;
|
||||
}
|
||||
},
|
||||
|
||||
]
|
||||
});
|
||||
@ -44,7 +44,7 @@
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
title:"Nilai Kalori (Kkal)",
|
||||
title:"Nilai Kalori (kal)",
|
||||
field:"nilai_kalori"
|
||||
}
|
||||
],
|
||||
|
||||
@ -8,7 +8,7 @@ function addForm(){
|
||||
<div class="col mt-2 d-flex align-items-start gap-2" id="col-${colCount}">
|
||||
<div class="form-floating flex-grow-1">
|
||||
<input type="text" class="form-control" name="data[${colCount}][nilai_kalori]" placeholder="exp : 1000" required>
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
<div class="invalid-feedback"></div>
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
field:"nama_karbohidrat"
|
||||
},
|
||||
{
|
||||
title:"Nilai Kalori (Kkal)",
|
||||
title:"Nilai Kalori (kal)",
|
||||
field:"nilai_kalori"
|
||||
}
|
||||
],
|
||||
|
||||
@ -14,7 +14,7 @@ function addForm() {
|
||||
<div class="col-md-5">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control" name="data[${colCount}][nilai_kalori]" placeholder="exp : 120">
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1 mt-2 d-flex align-items-start">
|
||||
|
||||
8
public/js/mcu/_init.js
Normal file
8
public/js/mcu/_init.js
Normal file
@ -0,0 +1,8 @@
|
||||
const datatableMasterMcu = $("#datatableMasterMcu")
|
||||
|
||||
const formAddMcu = $("#formMasterMcu")
|
||||
const modalAddMcu = document.getElementById("modalMasterMcu")
|
||||
|
||||
// const modalEditMcu = document.getElementById('modalMasterMcuEdit');
|
||||
// const formEditMcu = document.getElementById('formMasterMcuEdit');
|
||||
|
||||
242
public/js/mcu/action.js
Normal file
242
public/js/mcu/action.js
Normal file
@ -0,0 +1,242 @@
|
||||
// Fungsi inisialisasi Selectize dan Auto-expand
|
||||
function initSelectize(formElement) {
|
||||
formElement.querySelectorAll('.money').forEach(input => {
|
||||
input.addEventListener('input', function () {
|
||||
let angka = this.value.replace(/[^0-9]/g, '');
|
||||
this.value = formatAngka(angka);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Jalankan saat halaman dimuat untuk form pertama
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const firstForm = document.querySelector('.form-set');
|
||||
initSelectize(firstForm);
|
||||
|
||||
const money = document.querySelectorAll('.money')
|
||||
|
||||
money.forEach(input => {
|
||||
input.addEventListener('input', function () {
|
||||
// Simpan posisi kursor awal
|
||||
let start = this.selectionStart;
|
||||
let end = this.selectionEnd;
|
||||
|
||||
// Ambil angka saja
|
||||
let angka = this.value.replace(/[^0-9]/g, '');
|
||||
let formatted = formatAngka(angka);
|
||||
|
||||
// Hitung perbedaan panjang string sebelum dan sesudah format
|
||||
let selisih = formatted.length - this.value.length;
|
||||
|
||||
// Update value
|
||||
this.value = formatted;
|
||||
|
||||
// Pulihkan posisi kursor (geser sesuai perubahan panjang)
|
||||
this.setSelectionRange(start + selisih, end + selisih);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// Fungsi untuk menambah form baru
|
||||
let countForm = 1; // karena form pertama pakai index 0
|
||||
function addFormMcu() {
|
||||
const container = document.getElementById('form-sets-container');
|
||||
const original = container.querySelector('.form-set');
|
||||
|
||||
const html = original.outerHTML
|
||||
.replace(/\[0\]/g, `[${countForm}]`);
|
||||
|
||||
const wrapper = document.createElement('div');
|
||||
wrapper.innerHTML = html.trim();
|
||||
const newForm = wrapper.firstChild;
|
||||
|
||||
container.appendChild(newForm);
|
||||
initSelectize(newForm);
|
||||
countForm++;
|
||||
}
|
||||
|
||||
// Hapus form-set (kecuali jika hanya 1)
|
||||
document.addEventListener('click', function (e) {
|
||||
if (e.target.closest('.btn-remove-form')) {
|
||||
const targetForm = e.target.closest('.form-set');
|
||||
const total = document.querySelectorAll('.form-set').length;
|
||||
if (total > 1) {
|
||||
targetForm.remove();
|
||||
} else {
|
||||
alert('Minimal satu form harus ada.');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function formatAngka(angka) {
|
||||
return angka.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('formMasterMcu').addEventListener('submit', function(e){
|
||||
e.preventDefault();
|
||||
const form = this;
|
||||
const actionUrl = form.getAttribute('action');
|
||||
const formData = new FormData(form);
|
||||
|
||||
fetch(actionUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
|
||||
},
|
||||
body: formData
|
||||
}).then(async (res) => {
|
||||
const data = await res.json();
|
||||
|
||||
if (data.status) {
|
||||
const handler = function () {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil',
|
||||
text: data.message,
|
||||
timer: 2000,
|
||||
showConfirmButton: false,
|
||||
backdrop: true,
|
||||
});
|
||||
datatableMasterMcu.bootstrapTable('refresh');
|
||||
modalAddMcu.removeEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
};
|
||||
modalAddMcu.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
bootstrap.Modal.getInstance(modalAddMcu).hide(); // ✅ pakai instance
|
||||
const allFormSets = document.querySelectorAll('.form-set');
|
||||
|
||||
for(let i = 1; i < allFormSets.length; i++){
|
||||
allFormSets[i].remove();
|
||||
}
|
||||
} else {
|
||||
throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.');
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: err.message || 'Terjadi kesalahan pada server.',
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
function deleteMasterMcu(e){
|
||||
let id = $(e).data('menu_mcu_id')
|
||||
Swal.fire({
|
||||
title: "Apakah kamu yakin ingin menghapus data ini?",
|
||||
text : $(e).data('nama'),
|
||||
icon: "warning",
|
||||
showCancelButton: true,
|
||||
backdrop: true,
|
||||
}).then((result) => {
|
||||
if(result.isConfirmed){
|
||||
fetch(`/dashboard/mcu/${id}`, {
|
||||
method:'DELETE',
|
||||
headers: {
|
||||
"X-CSRF-TOKEN": document.querySelector('input[name="_token"]').value,
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
}).then((response) => {
|
||||
if(!response.ok){
|
||||
throw new Error("Network response was not ok");
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
if(data.status){
|
||||
Swal.fire({
|
||||
title: "Success",
|
||||
text: "Data berhasil dihapus",
|
||||
icon:"success",
|
||||
showConfirmButton: false,
|
||||
timer: 1000
|
||||
}).then(() => {
|
||||
datatableMasterMcu.bootstrapTable("refresh")
|
||||
})
|
||||
}else{
|
||||
Swal.fire({
|
||||
title: "Error!",
|
||||
text: data.message || "Failed to delete Item.",
|
||||
icon: "error"
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
Swal.fire({
|
||||
title: "Error!",
|
||||
text: "Something went wrong. Please try again later.",
|
||||
icon: "error"
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function editMasterMcu(e) {
|
||||
const el = $(e);
|
||||
|
||||
const modal = new bootstrap.Modal(modalEditMcu);
|
||||
formEditMcu.setAttribute('action', `/dashboard/mcu/${el.data('menu_mcu_id')}`)
|
||||
modal.show();
|
||||
|
||||
// Ambil data
|
||||
let dataOld = {
|
||||
menu_mcu_id: el.data('menu_mcu_id'),
|
||||
nama_mcu: el.data('nama_mcu'),
|
||||
harga: el.data('harga'),
|
||||
};
|
||||
// Set value ke input form
|
||||
$("#nama_edit").val(dataOld.nama_mcu);
|
||||
$("#harga_edit").val(dataOld.harga);
|
||||
}
|
||||
|
||||
|
||||
document.getElementById('formMasterMcuEdit').addEventListener('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
const form = this;
|
||||
const actionUrl = form.getAttribute('action');
|
||||
const formData = new FormData(form);
|
||||
|
||||
fetch(actionUrl, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
|
||||
},
|
||||
body: formData
|
||||
}).then(async (res) => {
|
||||
const data = await res.json();
|
||||
|
||||
if (data.status) {
|
||||
const handler = function () {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil',
|
||||
text: data.message,
|
||||
timer: 2000,
|
||||
showConfirmButton: false,
|
||||
backdrop: true,
|
||||
});
|
||||
datatableMasterMcu.bootstrapTable('refresh');
|
||||
modalEditMcu.removeEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
};
|
||||
modalEditMcu.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM
|
||||
bootstrap.Modal.getInstance(modalEditMcu).hide(); // ✅ pakai instance
|
||||
} else {
|
||||
throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.');
|
||||
}
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: err.message || 'Terjadi kesalahan pada server.',
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
69
public/js/mcu/dt.js
Normal file
69
public/js/mcu/dt.js
Normal file
@ -0,0 +1,69 @@
|
||||
|
||||
datatableMasterMcu.bootstrapTable({
|
||||
url: "/dashboard/datatable/mcu",
|
||||
showColumns: true,
|
||||
showColumnsToggleAll: true,
|
||||
showRefresh: true,
|
||||
sortable: true,
|
||||
search: true,
|
||||
searchOnEnterKey: false,
|
||||
searchHighlight: true,
|
||||
pagination: true,
|
||||
serverSide: true,
|
||||
pageSize: 10,
|
||||
pageList: [10, 20, 30, 40, 50, 100, 200],
|
||||
cookie: true,
|
||||
icons: {
|
||||
refresh: "fas fa-sync-alt", // atau ganti ke icon lain
|
||||
columns: "fas fa-th-large"
|
||||
},
|
||||
|
||||
columns: [
|
||||
{
|
||||
title: "Action",
|
||||
field: 'menu_mcu_id',
|
||||
formatter: function(value, row) {
|
||||
let buttons = ''
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-primary me-2" onclick="editMasterMcu(this)" data-menu_mcu_id="${row.menu_mcu_id}"
|
||||
data-nama_mcu="${row?.nama_mcu}"
|
||||
data-harga="${row?.harga}"
|
||||
>
|
||||
<i class="fa-solid fa-pencil"></i>
|
||||
</button>
|
||||
`
|
||||
console.log(row);
|
||||
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-danger me-2" onclick="deleteMasterMcu(this)"
|
||||
data-menu_mcu_id="${row.menu_mcu_id}"
|
||||
data-nama="${row?.nama_mcu}"
|
||||
>
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
</button>
|
||||
`
|
||||
return `
|
||||
<div class="d-flex space-x">
|
||||
${buttons}
|
||||
</div>
|
||||
`;
|
||||
},
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
title:"Nama MCU",
|
||||
field:"nama_mcu",
|
||||
width: 300
|
||||
},
|
||||
{
|
||||
title:"Harga",
|
||||
field:"menu_mcu_id",
|
||||
formatter: function(value, row) {
|
||||
return `${row?.harga ? `
|
||||
Rp ${parseInt(row.harga).toLocaleString('id-ID')}` : ``}`
|
||||
},
|
||||
width: 200
|
||||
},
|
||||
|
||||
]
|
||||
});
|
||||
@ -134,7 +134,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
input.addEventListener('input', function () {
|
||||
// Simpan posisi kursor awal
|
||||
let start = this.selectionStart;
|
||||
console.log(start);
|
||||
|
||||
let end = this.selectionEnd;
|
||||
|
||||
|
||||
@ -11,51 +11,6 @@
|
||||
function fetchMenu(filter = {}) {
|
||||
const containerGuest = $("#order_guest_id");
|
||||
$("#tanggal-filter").removeClass('d-none');
|
||||
if(filter.jenis_menu === "konsultasi"){
|
||||
$("#tanggal-filter").addClass('d-none');
|
||||
const jadwalList = [
|
||||
{
|
||||
nama_dokter: "dr. Andi exp, Sp.A",
|
||||
spesialis: "Spesialis Anak",
|
||||
hari: "Senin - Rabu",
|
||||
jam: "08.00 - 11.00"
|
||||
},
|
||||
{
|
||||
nama_dokter: "dr. Siti exp, Sp.GK",
|
||||
spesialis: "Spesialis Gizi Klinik",
|
||||
hari: "Kamis - Jumat",
|
||||
jam: "09.00 - 12.00"
|
||||
},
|
||||
{
|
||||
nama_dokter: "dr. Dimas exp, Sp.PD",
|
||||
spesialis: "Spesialis Penyakit Dalam",
|
||||
hari: "Sabtu",
|
||||
jam: "10.00 - 13.00"
|
||||
}
|
||||
];
|
||||
|
||||
let html = `
|
||||
<div class="container">
|
||||
<h4 class="mb-4">Jadwal Konsultasi</h4>
|
||||
<div class="list-group">
|
||||
`;
|
||||
|
||||
jadwalList.forEach(jadwal => {
|
||||
html += `
|
||||
<div class="list-group-item border rounded-3 mb-3 p-3 shadow-sm">
|
||||
<h5 class="mb-1">${jadwal.nama_dokter}</h5>
|
||||
<p class="mb-1 text-muted">${jadwal.spesialis}</p>
|
||||
<p class="mb-1"><strong>Hari:</strong> ${jadwal.hari}</p>
|
||||
<p class="mb-2"><strong>Jam:</strong> ${jadwal.jam}</p>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
|
||||
html += `</div></div>`;
|
||||
return containerGuest.html(html);
|
||||
|
||||
}
|
||||
|
||||
|
||||
let params = new URLSearchParams({
|
||||
page: filter.page || 1,
|
||||
@ -72,21 +27,164 @@
|
||||
fetch(`/datamenu?${params}`)
|
||||
.then(res => res.json())
|
||||
.then(res => {
|
||||
|
||||
if (!res.status){
|
||||
return containerGuest.html('<p class="text-danger">Gagal Memuat Data...</p>');
|
||||
}
|
||||
|
||||
const session = JSON.parse(sessionStorage.getItem('customerData') || '{}')
|
||||
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
|
||||
if(cart.length > 0){
|
||||
updateCartCount(cart.length)
|
||||
}
|
||||
if(session.nama_customer){
|
||||
$("#welcomeMessage").html(`Selamat Datang, <strong>${session.nama_customer}</strong> !`)
|
||||
}
|
||||
|
||||
if(filter.jenis_menu === "konsultasi"){
|
||||
|
||||
const menus = res.data.data || [];
|
||||
const jk = res.data|| [];
|
||||
console.log(jk);
|
||||
|
||||
$("#tanggal-filter").addClass('d-none');
|
||||
let html = `
|
||||
<div class="container">
|
||||
<h4 class="mb-4 fw-bold text-primary">
|
||||
<i class="fas fa-calendar-alt me-2"></i>
|
||||
Jadwal Konsultasi
|
||||
</h4>
|
||||
|
||||
<div class="row g-4">
|
||||
`;
|
||||
|
||||
jk.forEach(jadwal => {
|
||||
html += `
|
||||
<div class="col-lg-6 col-xl-4">
|
||||
<div class="card border-0 shadow-lg h-100 hover-card">
|
||||
<div class="card-header bg-gradient-primary text-white">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="flex-shrink-0">
|
||||
<img src="https://ui-avatars.com/api/?name=${encodeURIComponent(jadwal.nama_dokter)}&background=random&size=50"
|
||||
class="rounded-circle border border-2 border-white" alt="${jadwal.nama_dokter}">
|
||||
</div>
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h6 class="mb-0 fw-bold text-white">${jadwal.nama_dokter}</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<h6 class="text-muted mb-3">
|
||||
<i class="fas fa-calendar-check me-2"></i>
|
||||
Jadwal Tersedia
|
||||
</h6>
|
||||
|
||||
${jadwal.tgl_available?.length
|
||||
? `<div class="d-flex flex-wrap gap-2">
|
||||
${jadwal.tgl_available
|
||||
.map(item => {
|
||||
const hari = Number(item?.tgl_harian);
|
||||
if (!hari) return null;
|
||||
|
||||
const now = new Date();
|
||||
const tahun = now.getFullYear();
|
||||
const bulanIni = now.getMonth();
|
||||
const hariIni = now.getDate();
|
||||
|
||||
const bulan = hari < hariIni ? bulanIni + 1 : bulanIni;
|
||||
const date = new Date(tahun, bulan, hari);
|
||||
|
||||
const isToday = date.toDateString() === now.toDateString();
|
||||
const isTomorrow = new Date(date.getTime() - 86400000).toDateString() === now.toDateString();
|
||||
|
||||
return {
|
||||
date,
|
||||
display: date.toLocaleDateString('id-ID', {
|
||||
day: '2-digit',
|
||||
month: 'short',
|
||||
year: '2-digit'
|
||||
}),
|
||||
isToday,
|
||||
isTomorrow
|
||||
};
|
||||
})
|
||||
.filter(Boolean)
|
||||
.sort((a, b) => a.date - b.date)
|
||||
.map(o => `
|
||||
<span class="badge ${o.isToday ? 'bg-danger' : o.isTomorrow ? 'bg-warning' : 'bg-light-primary'}
|
||||
${o.isToday || o.isTomorrow ? '' : 'text-dark'} fs-6 px-3 py-2">
|
||||
${o.display}
|
||||
${o.isToday ? ' <small class="badge bg-white text-danger ms-1">Hari ini</small>' : ''}
|
||||
${o.isTomorrow ? ' <small class="badge bg-white text-warning ms-1">Besok</small>' : ''}
|
||||
</span>
|
||||
`)
|
||||
.join('')
|
||||
}
|
||||
</div>`
|
||||
: `<div class="text-center py-4">
|
||||
<i class="fas fa-calendar-times text-muted mb-2" style="font-size: 3rem;"></i>
|
||||
<p class="text-muted mb-0">Belum ada jadwal tersedia</p>
|
||||
</div>`
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="card-footer bg-light">
|
||||
<a class="btn btn-primary btn-sm w-100" href="https://daftar.rsabhk.co.id/">
|
||||
<i class="fas fa-plus me-1"></i>
|
||||
Buat Janji
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
|
||||
html += `
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
:root {
|
||||
--mint: #408661ff; /* hijau muda sehat */
|
||||
--mint-dark: #288355;
|
||||
--teal: #00b4c2; /* aksen cerah */
|
||||
--soft-gray: #f8f9fa;
|
||||
--charcoal: #2d3436;
|
||||
}
|
||||
.bg-gradient-primary {
|
||||
background: linear-gradient(135deg, var(--mint-dark) 0%, var(--mint) 100%);
|
||||
}
|
||||
.badge.bg-light-primary {
|
||||
background: linear-gradient(135deg, #e0f7fa 0%, #b2ebf2 100%) !important;
|
||||
color: var(--charcoal);
|
||||
border: 1px solid #80deea;
|
||||
}
|
||||
.badge.bg-danger {
|
||||
background: linear-gradient(135deg, #ff6b6b 0%, #ff4757 100%) !important;
|
||||
}
|
||||
.badge.bg-warning {
|
||||
background: linear-gradient(135deg, #ffa726 0%, #ff9800 100%) !important;
|
||||
}
|
||||
.badge:hover {
|
||||
transform: scale(1.1);
|
||||
box-shadow: 0 0 15px rgba(40, 131, 85, 0.5);
|
||||
}
|
||||
.hover-card {
|
||||
backdrop-filter: blur(8px);
|
||||
border: 1px solid rgba(255,255,255,.18);
|
||||
background: rgba(255,255,255,.85);
|
||||
}
|
||||
.hover-card .rounded-circle {
|
||||
transition: transform 0.4s ease, box-shadow 0.4s ease;
|
||||
}
|
||||
|
||||
.hover-card:hover .rounded-circle {
|
||||
transform: scale(1.1);
|
||||
box-shadow: 0 4px 15px rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
|
||||
</style>
|
||||
`;
|
||||
|
||||
return containerGuest.html(html);
|
||||
}else{
|
||||
const menus = res.data.data || [];
|
||||
|
||||
const groups = {};
|
||||
menus.forEach(menu => {
|
||||
@ -130,9 +228,21 @@
|
||||
`;
|
||||
list?.forEach(menu => {
|
||||
html += `
|
||||
|
||||
<style>
|
||||
.menu-card {
|
||||
background: #fff;
|
||||
border-radius: 1rem;
|
||||
box-shadow: var(--shadow);
|
||||
transition: .35s;
|
||||
overflow: hidden;
|
||||
}
|
||||
.menu-card:hover {
|
||||
transform: translateY(-6px) scale(1.02);
|
||||
box-shadow: var(--shadow-hover);
|
||||
}
|
||||
</style>
|
||||
<div class="col-6 col-xs-12 col-sm-6 col-md-4 col-lg-3 mb-2">
|
||||
<div class="card h-80 shadow-sm p-2 rounded-4 mb-2">
|
||||
<div class="card h-80 shadow-sm p-2 rounded-4 mb-2 menu-card">
|
||||
|
||||
<!-- GAMBAR + NAMA DI DALAM GAMBAR -->
|
||||
<div class="position-relative">
|
||||
@ -177,6 +287,16 @@
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Harga 1 baris -->
|
||||
<div class="d-flex justify-content-between align-items-center text-muted small mt-1 px-1">
|
||||
<small>Karyawan</small>
|
||||
<strong class="text-success">Rp ${parseInt(menu.harga_karyawan).toLocaleString('id-ID')}</strong>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center text-muted small px-1">
|
||||
<small>Public</small>
|
||||
<strong class="text-success">Rp ${parseInt(menu.harga_public).toLocaleString('id-ID')}</strong>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-1 mt-2 px-1">
|
||||
<small class="text-muted fw-semibold">Tersedia:</small>
|
||||
<div class="d-flex gap-1 overflow-auto" style="font-size:.65rem; scrollbar-width:none;">
|
||||
@ -189,23 +309,13 @@
|
||||
: '<div class="badge bg-danger d-flex align-items-center px-1" style="font-size:.5rem;"><i class="fa fa-times-circle" style="font-size:.5rem"></i>Tutup</div>'}
|
||||
</div>
|
||||
</div>
|
||||
<!-- Harga 1 baris -->
|
||||
<div class="d-flex justify-content-between align-items-center text-muted small mt-1 px-1">
|
||||
<small>Karyawan</small>
|
||||
<strong class="text-success">Rp ${parseInt(menu.harga_karyawan).toLocaleString('id-ID')}</strong>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center text-muted small px-1">
|
||||
<small>Public</small>
|
||||
<strong class="text-success">Rp ${parseInt(menu.harga_public).toLocaleString('id-ID')}</strong>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Tombol -->
|
||||
<div class="d-flex p-2 mt-auto ">
|
||||
<button class="btn btn-outline-success w-50 me-1 d-flex justify-content-center align-items-center p-2"
|
||||
onclick="orderMenu(this)"
|
||||
data-id="${menu.master_menu_id || menu.master_paket_menu_id}"
|
||||
data-id="${menu.master_menu_id || menu.paket_mcu_id}"
|
||||
data-nama_menu="${menu.nama}"
|
||||
data-harga_karyawan="${menu.harga_karyawan}"
|
||||
data-harga_public="${menu.harga_public}"
|
||||
@ -222,7 +332,7 @@
|
||||
</button>
|
||||
<button class="btn btn-success w-50 d-flex justify-content-center align-items-center p-2 btn-clicked"
|
||||
onclick="handleClick(this)"
|
||||
data-id="${menu.master_menu_id ?? menu.master_paket_menu_id}"
|
||||
data-id="${menu.master_menu_id ?? menu.paket_mcu_id}"
|
||||
data-nama_menu="${menu.nama}"
|
||||
data-harga_karyawan="${menu.harga_karyawan}"
|
||||
data-harga_public="${menu.harga_public}"
|
||||
@ -272,7 +382,11 @@
|
||||
}
|
||||
html += `</div>`;
|
||||
}
|
||||
|
||||
containerGuest.html(html);
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.catch(err => {
|
||||
containerGuest.html('<p class="text-danger">Terjadi kesalahan saat memuat data.</p>');
|
||||
@ -304,7 +418,7 @@
|
||||
`).join('');
|
||||
|
||||
const resultKkal = kalori.length > 0
|
||||
? kalori.map(kkal => `<small class="badge bg-success me-1 mb-1 fs-6">${kkal ? kkal + ' Kkal' : ''}</small>`).join('')
|
||||
? kalori.map(kkal => `<small class="badge bg-success me-1 mb-1 fs-6">${kkal ? kkal + ' kal' : ''}</small>`).join('')
|
||||
: '';
|
||||
|
||||
const tglMenuTersedia = `
|
||||
|
||||
@ -89,6 +89,12 @@ noteCancelTextArea.addEventListener('input', function () {
|
||||
function AdminApproved(e){
|
||||
const data = $(e).data()
|
||||
new bootstrap.Modal(modalActionApproveBillingnOrder).show();
|
||||
if(data.billing === "true"){
|
||||
$("#billingOrder").removeClass('d-none')
|
||||
}else{
|
||||
$("#billingOrder").addClass('d-none')
|
||||
|
||||
}
|
||||
$("#confirmActionApproveBillingOrder").text('Pembayaran Via Billing '+ data.nama_pemesan + ' / ' + data.no_order)
|
||||
formActionApproveBillingOrder.attr(`action`, `/dashboard/pending/action-billing/${data.order_id}`)
|
||||
}
|
||||
|
||||
@ -52,7 +52,15 @@
|
||||
if(row?.status_order === "Menunggu Konfirmasi Pembayaran Via Billing"){
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-info me-2" onclick="AdminApproved(this)"
|
||||
data-order_id="${row.order_id}" data-nama_pemesan="${row?.nama_pemesan}" data-no_order="${row?.no_order}" data-jenis_customer="${row?.jenis_customer}">
|
||||
data-order_id="${row.order_id}" data-nama_pemesan="${row?.nama_pemesan}" data-no_order="${row?.no_order}" data-jenis_customer="${row?.jenis_customer}" data-billing="true">
|
||||
<i class="fa-solid fa-person-circle-check"></i>
|
||||
</button>
|
||||
`
|
||||
}
|
||||
if(row?.status_order === "Menunggu Konfirmasi Pesanan MCU"){
|
||||
buttons += `
|
||||
<button class="btn btn-sm btn-info me-2" onclick="AdminApproved(this)"
|
||||
data-order_id="${row.order_id}" data-nama_pemesan="${row?.nama_pemesan}" data-no_order="${row?.no_order}" data-jenis_customer="${row?.jenis_customer}" data-billing="false">
|
||||
<i class="fa-solid fa-person-circle-check"></i>
|
||||
</button>
|
||||
`
|
||||
|
||||
BIN
public/logo/halal_gizi.png
Normal file
BIN
public/logo/halal_gizi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
BIN
public/logo/iso_gizi.png
Normal file
BIN
public/logo/iso_gizi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 101 KiB |
30
resources/views/dashboard/jadwal_konsul/index.blade.php
Normal file
30
resources/views/dashboard/jadwal_konsul/index.blade.php
Normal file
@ -0,0 +1,30 @@
|
||||
@extends('dashboard.layouts.main')
|
||||
|
||||
@section('body_main')
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
<!-- Breadcrumb -->
|
||||
<h4 class="fw-bold py-3 mb-4">
|
||||
<span class="text-muted fw-light">Tables /</span> Jadwal Konsul
|
||||
</h4>
|
||||
|
||||
<!-- Card Master Mcu -->
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Jadwal Konsul</h5>
|
||||
<button type="button" class="btn btn-primary" data-bs-target="#modalMasterJadwalKonsul" data-bs-toggle="modal">
|
||||
Tambah
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table" id="datatableMasterJadwalKonsul"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('dashboard.jadwal_konsul.modal.add')
|
||||
@include('dashboard.jadwal_konsul.modal.edit')
|
||||
<!-- JS scripts -->
|
||||
<script src="{{ ver('/js/jadwal_konsul/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/jadwal_konsul/dt.js') }}"></script>
|
||||
<script src="{{ ver('/js/jadwal_konsul/action.js') }}"></script>
|
||||
@endsection
|
||||
60
resources/views/dashboard/jadwal_konsul/modal/add.blade.php
Normal file
60
resources/views/dashboard/jadwal_konsul/modal/add.blade.php
Normal file
@ -0,0 +1,60 @@
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modalMasterJadwalKonsul" data-bs-backdrop="static" data-bs-keyboard="false" tabindex tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Aksi Master Jadwal Konsul</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form action="/dashboard/jadwal-konsul" method="POST" id="formMasterJadwalKonsul">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
<div id="form-sets-container">
|
||||
<!-- Form Set Awal -->
|
||||
<div class="form-set border rounded p-3 mb-3 position-relative">
|
||||
<!-- Tombol Hapus -->
|
||||
<button type="button" class="btn btn-outline-danger btn-sm btn-remove-form position-absolute top-0 end-0 m-2">
|
||||
<i class="bx bx-trash"></i>
|
||||
</button>
|
||||
|
||||
<div class="row g-3 mt-3">
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="data[0][nama_dokter]" placeholder="Nama Dokter" required>
|
||||
<label>Nama Dokter</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<label for="date" class="form-label">Tanggal Tersedia</label>
|
||||
<select class="date-input" multiple name="data[0][tanggal][]"></select>
|
||||
<div class="form-text">Gunakan Key <kbd>Tab</kbd> untuk menambahkan tanggal.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tombol tambah form-set -->
|
||||
<button type="button" class="btn btn-outline-primary btn-sm mt-2" onclick="addFormJadwalKonsul()">
|
||||
+ Tambah Data
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
43
resources/views/dashboard/jadwal_konsul/modal/edit.blade.php
Normal file
43
resources/views/dashboard/jadwal_konsul/modal/edit.blade.php
Normal file
@ -0,0 +1,43 @@
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modalMasterJadwalKonsulEdit" data-bs-backdrop="static" data-bs-keyboard="false" tabindex tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Aksi Master Jadwal Konsul</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form enctype="multipart/form-data" method="POST" id="formMasterJadwalKonsulEdit">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
<div class="row g-3 mt-3">
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="nama_dokter" id="nama_dokter_edit" placeholder="Nama Menu" required>
|
||||
<label>Nama</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="tags" class="form-label">Tanggal Menu Tersedia</label>
|
||||
<select class="date-input" multiple name="tanggal[]" id="tanggal_edit"></select>
|
||||
<div class="form-text">Gunakan Key <kbd>Tab</kbd> untuk menambahkan tanggal.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -18,7 +18,7 @@
|
||||
<div class="col">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="data[0][nilai_kalori]" placeholder="exp : 1000" required>
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
</div>
|
||||
<div id="col_add_kalori"></div>
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<div class="col">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="nilai_kalori" id="nilai_kalori_edit" placeholder="Nasi" required>
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
<div class="col-6">
|
||||
<div class="form-floating">
|
||||
<input type="number" class="form-control" name="data[0][nilai_kalori]" placeholder="exp : 3000" >
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<div class="col-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="nilai_kalori" id="nilai_kalori" placeholder="exp : 300" required>
|
||||
<label>Nilai Kalori (Kkal)</label>
|
||||
<label>Nilai Kalori (kal)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
30
resources/views/dashboard/master/mcu/index.blade.php
Normal file
30
resources/views/dashboard/master/mcu/index.blade.php
Normal file
@ -0,0 +1,30 @@
|
||||
@extends('dashboard.layouts.main')
|
||||
|
||||
@section('body_main')
|
||||
<div class="container-xxl flex-grow-1 container-p-y">
|
||||
<!-- Breadcrumb -->
|
||||
<h4 class="fw-bold py-3 mb-4">
|
||||
<span class="text-muted fw-light">Tables /</span> Master Mcu
|
||||
</h4>
|
||||
|
||||
<!-- Card Master Mcu -->
|
||||
<div class="card">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h5 class="mb-0">Master Mcu</h5>
|
||||
<button type="button" class="btn btn-primary" data-bs-target="#modalMasterMcu" data-bs-toggle="modal">
|
||||
Tambah
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table" id="datatableMasterMcu"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('dashboard.master.mcu.modal.add')
|
||||
@include('dashboard.master.mcu.modal.edit')
|
||||
<!-- JS scripts -->
|
||||
<script src="{{ ver('/js/mcu/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/mcu/dt.js') }}"></script>
|
||||
<script src="{{ ver('/js/mcu/action.js') }}"></script>
|
||||
@endsection
|
||||
59
resources/views/dashboard/master/mcu/modal/add.blade.php
Normal file
59
resources/views/dashboard/master/mcu/modal/add.blade.php
Normal file
@ -0,0 +1,59 @@
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modalMasterMcu" data-bs-backdrop="static" data-bs-keyboard="false" tabindex tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Aksi Master Mcu</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form action="/dashboard/mcu" method="POST" id="formMasterMcu">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
<div id="form-sets-container">
|
||||
<!-- Form Set Awal -->
|
||||
<div class="form-set border rounded p-3 mb-3 position-relative">
|
||||
<!-- Tombol Hapus -->
|
||||
<button type="button" class="btn btn-outline-danger btn-sm btn-remove-form position-absolute top-0 end-0 m-2">
|
||||
<i class="bx bx-trash"></i>
|
||||
</button>
|
||||
|
||||
<div class="row g-3 mt-3">
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="data[0][nama_mcu]" placeholder="Nama Mcu" required>
|
||||
<label>Nama</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control money" name="data[0][harga]" placeholder="Harga" required>
|
||||
<label>Harga</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tombol tambah form-set -->
|
||||
<button type="button" class="btn btn-outline-primary btn-sm mt-2" onclick="addFormMcu()">
|
||||
+ Tambah Data
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
47
resources/views/dashboard/master/mcu/modal/edit.blade.php
Normal file
47
resources/views/dashboard/master/mcu/modal/edit.blade.php
Normal file
@ -0,0 +1,47 @@
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modalMasterMcuEdit" data-bs-backdrop="static" data-bs-keyboard="false" tabindex tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Edit Master Mcu</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form action="/dashboard/mcu" method="POST" id="formMasterMcuEdit">
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="modal-body">
|
||||
<div class="container">
|
||||
|
||||
<div class="row g-3 mt-3">
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" name="nama_mcu" id="nama_edit" placeholder="Nama Mcu" required>
|
||||
<label>Nama</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control money" name="harga" id="harga_edit" placeholder="Harga" required>
|
||||
<label>Harga</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -52,6 +52,18 @@
|
||||
<div data-i18n="Account Settings">Master Menu</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item {{ Request::is('dashboard/mcu') ? 'active' : '' }}">
|
||||
<a href="/dashboard/mcu" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-dock-top"></i>
|
||||
<div data-i18n="Account Settings">Master MCU</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="menu-item {{ Request::is('dashboard/jadwal-konsul') ? 'active' : '' }}">
|
||||
<a href="/dashboard/jadwal-konsul" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-dock-top"></i>
|
||||
<div data-i18n="Account Settings">Jadwal Konsul</div>
|
||||
</a>
|
||||
</li>
|
||||
{{-- <li class="menu-item {{ Request::is('dashboard/paket-menu') ? 'active' : '' }}">
|
||||
<a href="/dashboard/paket-menu" class="menu-link">
|
||||
<i class="menu-icon tf-icons bx bx-dock-top"></i>
|
||||
|
||||
@ -14,11 +14,11 @@
|
||||
@csrf
|
||||
@method('put')
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label for="exampleInputEmail1" class="form-label">Upload Dokumen</label>
|
||||
<input type="file" class="form-control" name="evidence_medical_record" >
|
||||
<div class="form-text">Upload dokumen pendukung persetujuan order via billing.</div>
|
||||
</div>
|
||||
<div class="mb-3" id="billingOrder">
|
||||
<label for="exampleInputEmail1" class="form-label">Upload Dokumen</label>
|
||||
<input type="file" class="form-control" name="evidence_medical_record" >
|
||||
<div class="form-text">Upload dokumen pendukung persetujuan order via billing.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
|
||||
176
resources/views/guest/mcu/index.blade.php
Normal file
176
resources/views/guest/mcu/index.blade.php
Normal file
@ -0,0 +1,176 @@
|
||||
@extends('guest.layout.main')
|
||||
@section('body_main_guests')
|
||||
|
||||
<div class="container mt-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-6 col-md-8">
|
||||
|
||||
<!-- Card Wrapper -->
|
||||
<div class="card shadow-lg border-0 rounded-4">
|
||||
<div class="card-header bg-gradient-primary text-white text-center rounded-top-4">
|
||||
<h5 class="mb-0 fw-bold">
|
||||
<i class="fas fa-file-medical me-2"></i>
|
||||
Form Pemesanan Gizi
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
<div class="card-body p-4 mb-3">
|
||||
<form action="/order-mcu" method="POST" id="submit_order_mcu">
|
||||
@csrf
|
||||
<!-- Tanggal Pemeriksaan -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Tanggal Pemeriksaan<span class="text-danger">*</span></label>
|
||||
<input type="date" class="form-control rounded-3" name="tgl_mcu" id="tgl_mcu"
|
||||
min="{{ date('Y-m-d') }}" required>
|
||||
</div>
|
||||
<!-- Jam Layanan -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Jam Layanan<span class="text-danger">*</span></label>
|
||||
<input type="time" class="form-control rounded-3" name="jam_layanan" id="jam_layanan"
|
||||
placeholder="nama@contoh.com" required>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Nama Pasien -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Nama Pemesan<span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control rounded-3" name="nama_pemesan" placeholder="Masukkan nama lengkap" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Jenis Kelamin<span class="text-danger">*</span></label>
|
||||
<select class="form-select rounded-3" name="jenis_kelamin" id="jenis_kelamin" required>
|
||||
<option value="" disabled selected>-- Pilih --</option>
|
||||
<option value="Laki-laki">Laki-laki</option>
|
||||
<option value="Perempuan">Perempuan</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">NO.Medical Record<span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control rounded-3" name="no_mr" id="no_mr" placeholder="NO.Medical Record" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Paket MCU <span class="text-danger">*</span></label>
|
||||
<select class="form-select rounded-3" name="paket_mcu" id="paket_mcu" required>
|
||||
<option value="" disabled selected>-- Pilih Paket --</option>
|
||||
@forelse ($paketMcu as $mcu)
|
||||
<option value="{{ $mcu->menu_mcu_id }}">{{ $mcu->nama_mcu }}</option>
|
||||
@empty
|
||||
<option value="">Belum ada paket</option>
|
||||
@endforelse
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Email</label>
|
||||
<input type="email" class="form-control rounded-3" name="email" id="email" placeholder="nama@contoh.com">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">No.Hp</label>
|
||||
<input type="tel" class="form-control rounded-3" name="no_hp" id="no_hp"placeholder="0812-3456-7890" pattern="[0-9]{10,15}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Tinggi Badan</label>
|
||||
<input type="number" class="form-control rounded-3" name="tinggi_badan" id="tinggi_badan" placeholder="kg" min="1" max="300">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold">Berat Badan</label>
|
||||
<input type="number" class="form-control rounded-3" name="berat_badan" id="berat_badan" placeholder="kg" min="1" max="300" >
|
||||
</div>
|
||||
|
||||
<!-- Submit Button -->
|
||||
<button type="submit" class="btn btn-success w-100 rounded-3 fw-bold">
|
||||
<i class="fas fa-paper-plane me-2"></i>Submit
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('#cartButton').addClass('d-none');
|
||||
});
|
||||
|
||||
$(function () {
|
||||
// Validasi real-time sebelum submit
|
||||
$('#submit_order_mcu').on('submit', async function (e) {
|
||||
e.preventDefault(); // cegah submit
|
||||
const $form = $(this);
|
||||
const $btn = $form.find('button[type="submit"]');
|
||||
let isValid = true;
|
||||
|
||||
// Reset border merah
|
||||
$form.find('.is-invalid').removeClass('is-invalid');
|
||||
|
||||
// Validasi semua required
|
||||
$form.find('[required]').each(function () {
|
||||
const $el = $(this);
|
||||
if ($.trim($el.val()) === '') {
|
||||
$el.addClass('is-invalid');
|
||||
isValid = false;
|
||||
}
|
||||
});
|
||||
|
||||
// Kalau ada required yang kosong
|
||||
if (!isValid) {
|
||||
Swal.fire({
|
||||
icon: 'warning',
|
||||
title: 'Oops...',
|
||||
text: 'Semua kolom wajib diisi terlebih dahulu!',
|
||||
confirmButtonColor: '#288355'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Disable tombol
|
||||
$btn.prop('disabled', true)
|
||||
.html('<i class="fas fa-spinner fa-spin me-2"></i>Memproses...');
|
||||
|
||||
// Kirim form via fetch
|
||||
const formData = new FormData(this);
|
||||
|
||||
try {
|
||||
const response = await fetch('/order-mcu', {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.status) {
|
||||
Swal.fire({
|
||||
title: 'Pesanan Berhasil!',
|
||||
text: 'Terima kasih, pesanan Anda sedang kami siapkan.',
|
||||
icon: 'success',
|
||||
confirmButtonText: 'Berhasil!',
|
||||
confirmButtonColor: '#28a745'
|
||||
}).then(() => {
|
||||
window.location.href = "/success-mcu";
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: 'Gagal!',
|
||||
text: result.message,
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Tutup!'
|
||||
}).then(() => {
|
||||
window.location.href = "/order-mcu";
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
alert("Terjadi kesalahan saat mengirim data.");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
@ -15,7 +15,7 @@
|
||||
<i class="fa fa-copy"></i> Salin
|
||||
</button>
|
||||
</p>
|
||||
<a href="/" class="btn btn-success mt-3"><i class="fa fa-home me-1"></i> Kembali ke Beranda</a>
|
||||
<a href="{{ $back_href ?? '/' }}" class="btn btn-success mt-3"><i class="fa fa-home me-1"></i> Kembali ke Beranda</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@ -3,9 +3,11 @@
|
||||
use App\Http\Controllers\AuthController;
|
||||
use App\Http\Controllers\CustomerController;
|
||||
use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\JadwalKonsulController;
|
||||
use App\Http\Controllers\KaloriController;
|
||||
use App\Http\Controllers\KarbohidratController;
|
||||
use App\Http\Controllers\KlasifikasiMenuController;
|
||||
use App\Http\Controllers\MasterMcuController;
|
||||
use App\Http\Controllers\MenuController;
|
||||
use App\Http\Controllers\PesananController;
|
||||
use App\Mail\NotifikasiCustomer;
|
||||
@ -44,6 +46,12 @@ Route::group(['middleware' => ['auth']], function(){
|
||||
Route::get('/menu/{id}/detail', [MenuController::class, 'getDataDetail']);
|
||||
Route::get('/datatable/menu', [MenuController::class, 'datatable']);
|
||||
|
||||
Route::resource('/mcu', MasterMcuController::class);
|
||||
Route::get('/datatable/mcu', [MasterMcuController::class, 'datatable']);
|
||||
|
||||
Route::resource('/jadwal-konsul', JadwalKonsulController::class);
|
||||
Route::get('/datatable/jadwal-konsul', [JadwalKonsulController::class, 'datatable']);
|
||||
|
||||
Route::get('/pending', [PesananController::class, 'index']);
|
||||
Route::get('count/konfirmasi-pesanan', [PesananController::class, 'countKonfirmasiPesanan']);
|
||||
Route::get('count/verifikasi-pesanan', [PesananController::class, 'countVerifikasiPesanan']);
|
||||
@ -87,6 +95,9 @@ Route::post('/finish-checkout', [CustomerController::class, 'finishCheckout']);
|
||||
Route::get('/success-page', [CustomerController::class, 'success']);
|
||||
Route::get('/check-order', [CustomerController::class, 'checkOrder']);
|
||||
Route::get('/check-order/search', [CustomerController::class, 'searchOrder']);
|
||||
Route::get('/order-mcu', [CustomerController::class, 'indexMcu']);
|
||||
Route::post('/order-mcu', [CustomerController::class, 'storeMcu']);
|
||||
Route::get('/success-mcu', [CustomerController::class, 'successMcu']);
|
||||
|
||||
// Route::get('/send-mail', function(){
|
||||
// Mail::to('skyjok14@gmail.com')->queue(new NotifikasiCustomer('Test'));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user