- Implemented German and English localization for password reset functionality. - Added WebSocket URL resolution logic in chat services to support various environments and configurations. - Created centralized chat configuration for event keys and payload mappings. - Developed RoomsView component for admin chat room management, including create, edit, and delete functionalities.
191 lines
7.1 KiB
JavaScript
191 lines
7.1 KiB
JavaScript
import settingsService from '../services/settingsService.js';
|
|
import Joi from 'joi';
|
|
|
|
class SettingsController {
|
|
async filterSettings(req, res) {
|
|
const { userid, type } = req.body;
|
|
try {
|
|
const responseFields = await settingsService.filterSettings(userid, type);
|
|
res.status(200).json(responseFields);
|
|
} catch (error) {
|
|
console.error('Error filtering settings:', error);
|
|
res.status(500).json({ error: 'An error occurred while filtering the settings' });
|
|
}
|
|
}
|
|
|
|
async updateSetting(req, res) {
|
|
const schema = Joi.object({
|
|
userid: Joi.string().required(),
|
|
settingId: Joi.number().integer().required(),
|
|
value: Joi.any().required()
|
|
});
|
|
const { error, value } = schema.validate(req.body);
|
|
if (error) {
|
|
return res.status(400).json({ error: error.details[0].message });
|
|
}
|
|
try {
|
|
await settingsService.updateSetting(value.userid, value.settingId, value.value);
|
|
res.status(200).json({ message: 'Setting updated successfully' });
|
|
} catch (error) {
|
|
console.error('Error updating user setting:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async getTypeParamValueId(req, res) {
|
|
const { paramValue } = req.body;
|
|
try {
|
|
const paramValueId = await settingsService.getTypeParamValueId(paramValue);
|
|
res.status(200).json({ paramValueId });
|
|
} catch (error) {
|
|
console.error('Error retrieving parameter value ID:', error);
|
|
res.status(404).json({ error: "notfound" });
|
|
}
|
|
}
|
|
|
|
async getTypeParamValues(req, res) {
|
|
const { type } = req.body;
|
|
try {
|
|
const paramValues = await settingsService.getTypeParamValues(type);
|
|
res.status(200).json(paramValues);
|
|
} catch (error) {
|
|
console.error('Error retrieving parameter values:', error);
|
|
res.status(500).json({ error: 'An error occurred while retrieving the parameter values' });
|
|
}
|
|
}
|
|
|
|
async getTypeParamValue(req, res) {
|
|
const { id } = req.params;
|
|
try {
|
|
const paramValue = await settingsService.getTypeParamValue(id);
|
|
res.status(200).json({ paramValue });
|
|
} catch (error) {
|
|
console.error('Error retrieving parameter value:', error);
|
|
res.status(404).json({ error: "notfound" });
|
|
}
|
|
}
|
|
|
|
async getAccountSettings(req, res) {
|
|
try {
|
|
const { userId } = req.body;
|
|
const accountSettings = await settingsService.getAccountSettings(userId);
|
|
res.status(200).json(accountSettings);
|
|
} catch (error) {
|
|
console.error('Error retrieving account settings:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async setAccountSettings(req, res) {
|
|
const schema = Joi.object({
|
|
userId: Joi.string().required(),
|
|
settings: Joi.object().required()
|
|
});
|
|
const { error, value } = schema.validate(req.body);
|
|
if (error) {
|
|
return res.status(400).json({ error: error.details[0].message });
|
|
}
|
|
try {
|
|
await settingsService.setAccountSettings(value);
|
|
res.status(200).json({ message: 'Account settings updated successfully' });
|
|
} catch (error) {
|
|
console.error('Error updating account settings:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async getPossibleInterests(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const interests = await settingsService.getPossibleInterests(userId);
|
|
res.status(200).json(interests);
|
|
} catch (error) {
|
|
console.error('Error retrieving possible interests:', error);
|
|
res.status(500).json({ error: 'An error occurred while retrieving the possible interests' });
|
|
}
|
|
}
|
|
|
|
async getInterests(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const interests = await settingsService.getInterests(userId);
|
|
res.status(200).json(interests);
|
|
} catch (error) {
|
|
console.error('Error retrieving interests:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async addInterest(req, res) {
|
|
const schema = Joi.object({
|
|
name: Joi.string().min(1).max(255).required()
|
|
});
|
|
const { error, value } = schema.validate(req.body);
|
|
if (error) {
|
|
return res.status(400).json({ error: error.details[0].message });
|
|
}
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const interest = await settingsService.addInterest(userId, value.name);
|
|
res.status(200).json({ interest });
|
|
} catch (error) {
|
|
console.error('Error adding interest:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async addUserInterest(req, res) {
|
|
const schema = Joi.object({
|
|
interestid: Joi.number().integer().required()
|
|
});
|
|
const { error, value } = schema.validate(req.body);
|
|
if (error) {
|
|
return res.status(400).json({ error: error.details[0].message });
|
|
}
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
await settingsService.addUserInterest(userId, value.interestid);
|
|
res.status(200).json({ message: 'User interest added successfully' });
|
|
} catch (error) {
|
|
console.error('Error adding user interest:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async removeInterest(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const { id: interestId } = req.params;
|
|
await settingsService.removeInterest(userId, interestId);
|
|
res.status(200).json({ message: 'Interest removed successfully' });
|
|
} catch (error) {
|
|
console.error('Error removing interest:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async getVisibilities(req, res) {
|
|
try {
|
|
const visibilities = await settingsService.getVisibilities();
|
|
res.status(200).json(visibilities);
|
|
} catch (error) {
|
|
console.error('Error retrieving visibilities:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
|
|
async updateVisibility(req, res) {
|
|
const { userParamTypeId, visibilityId } = req.body;
|
|
const hashedUserId = req.headers.userid;
|
|
try {
|
|
await settingsService.updateVisibility(hashedUserId, userParamTypeId, visibilityId);
|
|
res.status(200).json({ message: 'Visibility updated successfully' });
|
|
} catch (error) {
|
|
console.error('Error updating visibility:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
}
|
|
}
|
|
|
|
export default SettingsController;
|