diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index d20aee6..0c9b23b 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -8,6 +8,7 @@ use App\Models\Karbohidrat; use App\Models\Order; use App\Models\OrderDetail; use Carbon\Carbon; +use Carbon\CarbonPeriod; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; @@ -28,39 +29,37 @@ class CustomerController extends Controller $search = request('search'); $jenis_menu = request('jenis_menu'); $perPage = request()->get('per_page', 12); - $filters = explode(',', request('filters')); // - return self::menuOrder($search, $jenis_menu, $perPage, $filters); + $tanggal_awal = (int) request('tanggal_awal'); + $tanggal_akhir = (int) request('tanggal_akhir'); + + return self::menuOrder($search, $jenis_menu, $perPage, $tanggal_awal, $tanggal_akhir); } - private static function menuOrder($search = null, $jenis_menu = null, $perPage, $filters = []) + private static function menuOrder($search = null, $jenis_menu = null, $perPage, $tanggal_awal = null, $tanggal_akhir = null) { - $filterCollection = collect($filters); - $includeSameday = $filterCollection->contains('someday'); - $includeNormal = $filterCollection->contains('normal'); - - $menuMapping = [ - 'menu1' => ['1', '11', '21'], - 'menu2' => ['2', '12', '22'], - 'menu3' => ['3', '13', '23'], - 'menu4' => ['4', '14', '24'], - 'menu5' => ['5', '15', '25'], - 'menu6' => ['6', '16', '26'], - 'menu7' => ['7', '17', '27'], - 'menu8' => ['8', '18', '28'], - 'menu9' => ['9', '19', '29'], - 'menu10' => ['10', '20', '30'], - 'menu31' => ['31'], - ]; - - $payload = []; - foreach ($menuMapping as $menuKey => $values) { - if ($filterCollection->contains($menuKey)) { - $payload = array_merge($payload, $values); + $payloadHari = []; + if (!empty($tanggal_awal) && !empty($tanggal_akhir)) { + if ($tanggal_awal > 0 && $tanggal_akhir >= $tanggal_awal) { + $payloadHari = range($tanggal_awal, $tanggal_akhir); } } - $payload = array_unique($payload); + // Step 1: Ambil menu_id yang sesuai tanggal + $menuIdTanggalValid = []; + if (!empty($payloadHari)) { + $menuIdTanggalValid = DB::connection('dbOrderGizi') + ->table('public.detail_menu_paket_harian') + ->whereIn('tgl_harian', $payloadHari) + ->pluck('master_menu_id') + ->unique() + ->toArray(); + // Jika tidak ada menu di tanggal tersebut, return kosong langsung + if (empty($menuIdTanggalValid)) { + return self::emptyMenuResponse($perPage); + } + } + // Step 2: Query menu $menuQuery = DB::connection('dbOrderGizi') ->table('public.master_menu as mn') ->where('mn.statusenabled', true); @@ -73,38 +72,31 @@ class CustomerController extends Controller $menuQuery->where('mn.nama_menu', 'ILIKE', '%' . $search . '%'); } - if ($includeSameday && !$includeNormal) { - $menuQuery->where('mn.apakah_someday', true); - } elseif (!$includeSameday && $includeNormal) { - $menuQuery->where('mn.apakah_someday', false); - } - if (!empty($payload)) { - $menuQuery->whereExists(function ($q) use ($payload) { - $q->select(DB::raw(1)) - ->from('public.detail_menu_paket_harian as dmph') - ->whereRaw('dmph.master_menu_id = mn.master_menu_id') - ->whereIn('dmph.tgl_harian', $payload); - }); + if (!empty($menuIdTanggalValid)) { + $menuQuery->whereIn('mn.master_menu_id', $menuIdTanggalValid); } + $paginated = $menuQuery->select( + 'mn.master_menu_id', + 'mn.nama_menu', + 'mn.foto', + 'mn.jenis_menu', + 'mn.harga_public', + 'mn.harga_karyawan', + 'mn.harga_keluarga_pasien', + 'mn.status', + 'mn.deskripsi', + 'mn.apakah_someday', + 'mn.apakah_menu_siang', + 'mn.apakah_menu_sore', + )->paginate($perPage); - $paginated = $menuQuery - ->select( - 'mn.master_menu_id', - 'mn.nama_menu', - 'mn.foto', - 'mn.jenis_menu', - 'mn.harga_public', - 'mn.harga_karyawan', - 'mn.harga_keluarga_pasien', - 'mn.status', - 'mn.deskripsi', - 'mn.apakah_someday', - 'mn.apakah_menu_siang', - 'mn.apakah_menu_sore', - ) - ->paginate($perPage); $menuIds = collect($paginated->items())->pluck('master_menu_id')->toArray(); + if (empty($menuIds)) { + return self::emptyMenuResponse($perPage); + } + + // Step 3: Relasi data tambahan $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') @@ -116,9 +108,6 @@ class CustomerController extends Controller $dmph = DB::connection('dbOrderGizi') ->table('public.detail_menu_paket_harian as dmph') ->whereIn('dmph.master_menu_id', $menuIds) - ->when(!empty($payload), function ($query) use ($payload) { - $query->whereIn('dmph.tgl_harian', $payload); - }) ->select('dmph.master_menu_id', 'dmph.tgl_harian') ->get() ->groupBy('master_menu_id'); @@ -129,8 +118,10 @@ class CustomerController extends Controller ->select('kmk.master_menu_id', 'k.kalori_id', 'k.nilai_kalori') ->get() ->groupBy('master_menu_id'); - + + // Step 4: Transform response $result = collect($paginated->items())->map(function ($menu) use ($klasifikasi, $dmph, $kkal) { + return [ 'master_menu_id' => $menu->master_menu_id, 'nama' => $menu->nama_menu, @@ -152,7 +143,7 @@ class CustomerController extends Controller })->values() : [], 'dmph' => isset($dmph[$menu->master_menu_id]) ? $dmph[$menu->master_menu_id]->map(function ($item) { return [ - 'tgl_harian' => $item->tgl_harian, + 'tgl_harian' => $item->tgl_harian ]; })->values() : [], 'kalori' => isset($kkal[$menu->master_menu_id]) ? $kkal[$menu->master_menu_id]->map(function ($item) { @@ -176,6 +167,22 @@ class CustomerController extends Controller ]); } + private static function emptyMenuResponse($perPage) + { + return response()->json([ + 'status' => true, + 'message' => 'Tidak ada menu ditemukan', + 'data' => [ + 'data' => [], + 'current_page' => 1, + 'last_page' => 1, + 'per_page' => $perPage, + 'total' => 0, + ] + ]); + } + + // paket do komen dulu // private static function dataPaketMenuOrder($search = null, $perPage){ diff --git a/app/Http/Controllers/MenuController.php b/app/Http/Controllers/MenuController.php index 1771538..df2e2ca 100644 --- a/app/Http/Controllers/MenuController.php +++ b/app/Http/Controllers/MenuController.php @@ -280,7 +280,7 @@ class MenuController extends Controller 'kmk.kalori_id', 'k.nilai_kalori' ) - ->get()->groupBy('master_menu_id'); + ->orderBy('mn.entry_at', 'desc')->get()->groupBy('master_menu_id'); $grouped = $data->map(function($items){ $first = $items->first(); diff --git a/public/gambar/8dY9w9VBXYg2aR4.jpeg b/public/gambar/8dY9w9VBXYg2aR4.jpeg new file mode 100644 index 0000000..8be4df9 Binary files /dev/null and b/public/gambar/8dY9w9VBXYg2aR4.jpeg differ diff --git a/public/gambar/GPhScYOLRXhCNuZ.jpg b/public/gambar/GPhScYOLRXhCNuZ.jpg new file mode 100644 index 0000000..322ca31 Binary files /dev/null and b/public/gambar/GPhScYOLRXhCNuZ.jpg differ diff --git a/public/gambar/IY690j402Rjs4M3.jpg b/public/gambar/IY690j402Rjs4M3.jpg new file mode 100644 index 0000000..6c8cd04 Binary files /dev/null and b/public/gambar/IY690j402Rjs4M3.jpg differ diff --git a/public/gambar/kf0NqtLWFSnPcV5.jpg b/public/gambar/kf0NqtLWFSnPcV5.jpg new file mode 100644 index 0000000..d7fdf6b Binary files /dev/null and b/public/gambar/kf0NqtLWFSnPcV5.jpg differ diff --git a/public/gambar/nPwsfRiIqPlWPmG.jpg b/public/gambar/nPwsfRiIqPlWPmG.jpg new file mode 100644 index 0000000..322ca31 Binary files /dev/null and b/public/gambar/nPwsfRiIqPlWPmG.jpg differ diff --git a/public/gambar/txkrSnBJAeGRYz4.jpg b/public/gambar/txkrSnBJAeGRYz4.jpg new file mode 100644 index 0000000..322ca31 Binary files /dev/null and b/public/gambar/txkrSnBJAeGRYz4.jpg differ diff --git a/public/gambar/uFq7WBhHan3G8Uo.jpg b/public/gambar/uFq7WBhHan3G8Uo.jpg new file mode 100644 index 0000000..652eaab Binary files /dev/null and b/public/gambar/uFq7WBhHan3G8Uo.jpg differ diff --git a/public/js/checkout/index.js b/public/js/checkout/index.js index ce8efc3..8a43dad 100644 --- a/public/js/checkout/index.js +++ b/public/js/checkout/index.js @@ -316,10 +316,10 @@ function renderCartSummary() { ${item.apakah_someday ? `` : `