MIF_E31222307/app/Http/Controllers/AlertSettingController.php

137 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\UserAlertSetting;
use App\Models\WaktuMakan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
class AlertSettingController extends Controller
{
public function index()
{
$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()
]);
}
$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')
]
]);
}
}