id)->first(); if (!$alertSetting) { $alertSetting = UserAlertSetting::create([ 'user_id' => $user->id, 'is_enabled' => true, 'enabled_waktu_makan_ids' => WaktuMakan::where('is_active', true)->pluck('id')->toArray() ]); } $waktuMakans = WaktuMakan::where('is_active', true)->get(); return view('user.alert-settings', compact('alertSetting', 'waktuMakans')); } public function update(Request $request) { $user = Auth::user(); $alertSetting = UserAlertSetting::where('user_id', $user->id)->first(); if (!$alertSetting) { $alertSetting = new UserAlertSetting(); $alertSetting->user_id = $user->id; } $alertSetting->is_enabled = $request->has('is_enabled'); $alertSetting->enabled_waktu_makan_ids = $request->enabled_waktu_makan_ids ?? []; $alertSetting->save(); return redirect()->back()->with('success', 'Pengaturan alert berhasil diperbarui!'); } public function toggle() { $user = Auth::user(); $alertSetting = UserAlertSetting::where('user_id', $user->id)->first(); if (!$alertSetting) { $alertSetting = UserAlertSetting::create([ 'user_id' => $user->id, 'is_enabled' => true, 'enabled_waktu_makan_ids' => WaktuMakan::where('is_active', true)->pluck('id')->toArray() ]); } $alertSetting->is_enabled = !$alertSetting->is_enabled; $alertSetting->save(); return response()->json([ 'success' => true, 'is_enabled' => $alertSetting->is_enabled, 'message' => $alertSetting->is_enabled ? 'Alert diaktifkan' : 'Alert dinonaktifkan' ]); } public function getCurrentAlerts() { $user = Auth::user(); $alertSetting = UserAlertSetting::where('user_id', $user->id)->first(); if (!$alertSetting || !$alertSetting->is_enabled) { return response()->json(['alerts' => []]); } $currentTime = Carbon::now(config('app.timezone')); $enabledWaktuMakan = $alertSetting->enabledWaktuMakan; $alerts = []; foreach ($enabledWaktuMakan as $waktuMakan) { // Gunakan method baru untuk cek waktu makan if ($waktuMakan->isWaktuMakanSekarang(30)) { $alerts[] = [ 'id' => $waktuMakan->id, 'nama' => $waktuMakan->nama, 'alert_text' => $waktuMakan->alert_text, 'waktu' => $waktuMakan->getWaktuFormatted(), 'waktu_ampm' => $waktuMakan->getWaktuAMPM(), 'timezone' => config('app.timezone') ]; } } return response()->json(['alerts' => $alerts]); } public function testAlert() { $user = Auth::user(); $alertSetting = UserAlertSetting::where('user_id', $user->id)->first(); if (!$alertSetting) { $alertSetting = UserAlertSetting::create([ 'user_id' => $user->id, 'is_enabled' => true, 'enabled_waktu_makan_ids' => WaktuMakan::where('is_active', true)->pluck('id')->toArray() ]); } $enabledWaktuMakan = $alertSetting->enabledWaktuMakan; if ($enabledWaktuMakan->isEmpty()) { return response()->json([ 'success' => false, 'message' => 'Pilih minimal satu waktu makan untuk test alert!' ]); } // Ambil waktu makan pertama yang aktif $testWaktuMakan = $enabledWaktuMakan->first(); return response()->json([ 'success' => true, 'alert' => [ 'nama' => $testWaktuMakan->nama, 'alert_text' => $testWaktuMakan->alert_text, 'waktu' => $testWaktuMakan->getWaktuFormatted(), 'waktu_ampm' => $testWaktuMakan->getWaktuAMPM(), 'timezone' => config('app.timezone') ] ]); } }