MIF_E31222313/app/Models/SystemSetting.php

62 lines
1.5 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
class SystemSetting extends Model
{
use HasFactory;
protected $fillable = ['key', 'value', 'description'];
// Konstanta untuk key setting
const PERHITUNGAN_OPEN = 'perhitungan_open';
/**
* Cek apakah perhitungan/quiz terbuka
*/
public static function isPerhitunganOpen()
{
// Gunakan cache untuk performa yang lebih baik
return Cache::remember('perhitungan_open', 60, function () {
$setting = self::where('key', self::PERHITUNGAN_OPEN)->first();
return $setting ? (bool) $setting->value : false;
});
}
/**
* Update status perhitungan/quiz
*/
public static function setPerhitunganOpen($status)
{
$setting = self::updateOrCreate(
['key' => self::PERHITUNGAN_OPEN],
[
'value' => $status ? '1' : '0',
'description' => 'Status akses section perhitungan/quiz untuk user'
]
);
// Clear cache
Cache::forget('perhitungan_open');
return $setting;
}
/**
* Toggle status perhitungan/quiz
*/
public static function togglePerhitunganOpen()
{
$currentStatus = self::isPerhitunganOpen();
$newStatus = !$currentStatus;
self::setPerhitunganOpen($newStatus);
return $newStatus;
}
}