91 lines
3.9 KiB
JavaScript
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;
|