137 lines
4.5 KiB
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')
|
|
]
|
|
]);
|
|
}
|
|
}
|