46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import prisma from '@/lib/prisma';
|
|
import { NextResponse } from 'next/server';
|
|
|
|
export async function GET() {
|
|
try {
|
|
const settings = await prisma.systemSetting.findMany();
|
|
const settingsMap = settings.reduce((acc, setting) => {
|
|
acc[setting.key] = JSON.parse(setting.value);
|
|
return acc;
|
|
}, {});
|
|
|
|
// Default settings if not exists
|
|
if (settingsMap['blind_counting'] === undefined) {
|
|
settingsMap['blind_counting'] = false;
|
|
}
|
|
if (settingsMap['correction_roles'] === undefined) {
|
|
settingsMap['correction_roles'] = ['ADMIN', 'SUPERVISOR'];
|
|
}
|
|
|
|
return NextResponse.json(settingsMap);
|
|
} catch (error) {
|
|
console.error('Settings error:', error);
|
|
return NextResponse.json({ error: 'خطا در دریافت تنظیمات' }, { status: 500 });
|
|
}
|
|
}
|
|
|
|
export async function POST(req) {
|
|
try {
|
|
const data = await req.json();
|
|
|
|
// Process each key-value pair
|
|
for (const [key, value] of Object.entries(data)) {
|
|
await prisma.systemSetting.upsert({
|
|
where: { key },
|
|
update: { value: JSON.stringify(value) },
|
|
create: { key, value: JSON.stringify(value) },
|
|
});
|
|
}
|
|
|
|
return NextResponse.json({ message: 'تنظیمات با موفقیت ذخیره شد' });
|
|
} catch (error) {
|
|
console.error('Settings save error:', error);
|
|
return NextResponse.json({ error: 'خطا در ذخیره تنظیمات' }, { status: 500 });
|
|
}
|
|
}
|