59 lines
1.8 KiB
PHP
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);
|
|
}
|
|
}
|