Files
2026-09-16 23:20:08 +07:00

59 lines
1.8 KiB
PHP

<?php
namespace App\Controllers;
use App\Helpers\Response;
use App\Middleware\JwtAuthMiddleware;
use App\Middleware\RoleGuard;
use App\Models\Model;
/**
* Class SettingController
* System Settings & Configuration REST API Controller
*
* @package App\Controllers
*/
class SettingController
{
/**
* GET /api/v1/settings - Get all system settings
*/
public function index(): void
{
$db = Model::getDB();
$stmt = $db->query("SELECT * FROM system_settings");
$settings = $stmt->fetchAll();
$formatted = [];
foreach ($settings as $s) {
$formatted[$s['setting_key']] = $s['setting_value'];
}
Response::success('ค่าการตั้งค่าระบบทั้งหมด', $formatted);
}
/**
* PUT /api/v1/settings - Update Settings (Admin only)
*/
public function update(): void
{
JwtAuthMiddleware::handle();
RoleGuard::check(['Admin', 'Manager']);
$input = json_decode(file_get_contents('php://input'), true) ?? $_POST;
if (empty($input) || !is_array($input)) {
Response::error('ข้อมูลการตั้งค่าไม่ถูกต้อง', 400);
}
$db = Model::getDB();
$stmt = $db->prepare("INSERT INTO system_settings (setting_key, setting_value, setting_group)
VALUES (:key, :val, 'general')
ON DUPLICATE KEY UPDATE setting_value = :val2");
foreach ($input as $key => $val) {
$stmt->execute(['key' => $key, 'val' => (string)$val, 'val2' => (string)$val]);
}
Response::success('บันทึกการตั้งค่าระบบเรียบร้อยแล้ว', $input);
}
}