Files
smanab/sarpras-sma-negeri-1-abiansemal/server/routes/settings.js

91 lines
3.9 KiB
JavaScript

// Settings Routes
import express from 'express';
import pool from '../db.js';
const router = express.Router();
// POST /api/getSettings
router.post('/getSettings', async (req, res) => {
try {
const [rows] = await pool.query('SELECT setting_key, setting_value FROM settings');
const settings = {
appLogo: '',
logoPemprov: '/images/logo_pemprov.png',
kopSurat: '/images/kop_surat.png',
tahunAnggaran: new Date().getFullYear().toString(),
activeUserRole: 'Staf Sarpras',
activeUserName: 'Administrator',
headmaster: { name: '', nip: '' },
wakasek: { name: '', nip: '' },
assetAssistant: { name: '', nip: '' }
};
rows.forEach(row => {
const key = row.setting_key;
const value = row.setting_value;
if (key === 'appLogo') settings.appLogo = value;
else if (key === 'logoPemprov') settings.logoPemprov = value;
else if (key === 'kopSurat') settings.kopSurat = value;
else if (key === 'tahunAnggaran') settings.tahunAnggaran = value;
else if (key === 'activeUserRole') settings.activeUserRole = value;
else if (key === 'activeUserName') settings.activeUserName = value;
else if (key === 'headmaster_name') settings.headmaster.name = value;
else if (key === 'headmaster_nip') settings.headmaster.nip = value;
else if (key === 'wakasek_name') settings.wakasek.name = value;
else if (key === 'wakasek_nip') settings.wakasek.nip = value;
else if (key === 'assetAssistant_name') settings.assetAssistant.name = value;
else if (key === 'assetAssistant_nip') settings.assetAssistant.nip = value;
});
res.json({ status: 'success', data: settings });
} catch (error) {
console.error('Get settings error:', error);
res.json({ status: 'error', message: error.message });
}
});
// POST /api/saveSettings
router.post('/saveSettings', async (req, res) => {
try {
const settings = req.body;
const upsert = async (key, value) => {
await pool.query(
`INSERT INTO settings (setting_key, setting_value) VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)`,
[key, value || '']
);
};
// Save all settings
if (settings.appLogo !== undefined) await upsert('appLogo', settings.appLogo);
if (settings.logoPemprov !== undefined) await upsert('logoPemprov', settings.logoPemprov);
if (settings.kopSurat !== undefined) await upsert('kopSurat', settings.kopSurat);
if (settings.tahunAnggaran !== undefined) await upsert('tahunAnggaran', settings.tahunAnggaran);
if (settings.activeUserRole !== undefined) await upsert('activeUserRole', settings.activeUserRole);
if (settings.activeUserName !== undefined) await upsert('activeUserName', settings.activeUserName);
if (settings.headmaster) {
await upsert('headmaster_name', settings.headmaster.name);
await upsert('headmaster_nip', settings.headmaster.nip);
}
if (settings.wakasek) {
await upsert('wakasek_name', settings.wakasek.name);
await upsert('wakasek_nip', settings.wakasek.nip);
}
if (settings.assetAssistant) {
await upsert('assetAssistant_name', settings.assetAssistant.name);
await upsert('assetAssistant_nip', settings.assetAssistant.nip);
}
res.json({ status: 'success', message: 'Pengaturan berhasil disimpan' });
} catch (error) {
console.error('Save settings error:', error);
res.json({ status: 'error', message: error.message });
}
});
export default router;