Preview: settingsController.js
Size: 2.33 KB
/home/byroehnu/easepay.easetack.com/controllers/settingsController.js
const { prisma } = require('../config/prisma');
// @desc Get user settings
// @route GET /api/settings
// @access Private
const getUserSettings = async (req, res) => {
try {
const userId = req.user.id;
let settings = await prisma.userSettings.findUnique({
where: { userId }
});
if (!settings) {
settings = await prisma.userSettings.create({
data: { userId }
});
}
res.status(200).json({
success: true,
data: settings
});
} catch (error) {
console.error('Get user settings error:', error);
res.status(500).json({
success: false,
message: 'Failed to get user settings'
});
}
};
// @desc Update user settings
// @route PUT /api/settings
// @access Private
const updateUserSettings = async (req, res) => {
try {
const userId = req.user.id;
const {
language,
fontSize,
currency,
dateFormat,
lowStockAlert,
pushNotifications,
smsAlerts,
usePinCode,
useBiometrics
} = req.body;
const settings = await prisma.userSettings.upsert({
where: { userId },
update: {
...(language !== undefined && { language }),
...(fontSize !== undefined && { fontSize }),
...(currency !== undefined && { currency }),
...(dateFormat !== undefined && { dateFormat }),
...(lowStockAlert !== undefined && { lowStockAlert }),
...(pushNotifications !== undefined && { pushNotifications }),
...(smsAlerts !== undefined && { smsAlerts }),
...(usePinCode !== undefined && { usePinCode }),
...(useBiometrics !== undefined && { useBiometrics })
},
create: {
userId,
language,
fontSize,
currency,
dateFormat,
lowStockAlert,
pushNotifications,
smsAlerts,
usePinCode,
useBiometrics
}
});
res.status(200).json({
success: true,
message: 'Settings updated successfully',
data: settings
});
} catch (error) {
console.error('Update user settings error:', error);
res.status(500).json({
success: false,
message: 'Failed to update user settings'
});
}
};
module.exports = {
getUserSettings,
updateUserSettings
};
Directory Contents
Dirs: 1 × Files: 17