- 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.
112 lines
4.0 KiB
JavaScript
112 lines
4.0 KiB
JavaScript
import forumService from '../services/forumService.js';
|
|
import Joi from 'joi';
|
|
|
|
const forumController = {
|
|
async createForum(req, res) {
|
|
const schema = Joi.object({
|
|
name: Joi.string().min(1).max(255).required(),
|
|
permissions: Joi.array().items(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 forum = await forumService.createForum(userId, value.name, value.permissions);
|
|
res.status(201).json(forum);
|
|
} catch (error) {
|
|
console.error('Error in createForum:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async deleteForum(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const { forumId } = req.params;
|
|
await forumService.deleteForum(userId, forumId);
|
|
res.status(200).json({ message: 'Forum deleted successfully' });
|
|
} catch (error) {
|
|
console.error('Error in deleteForum:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async getAllForums(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const forums = await forumService.getAllForums(userId);
|
|
res.status(200).json(forums);
|
|
} catch (error) {
|
|
console.error('Error in getAllForums:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async getForum(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const { forumId, page } = req.params;
|
|
const forum = await forumService.getForum(userId, forumId, page);
|
|
res.status(200).json(forum);
|
|
} catch (error) {
|
|
console.error('Error in getForum:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async createTopic(req, res) {
|
|
const schema = Joi.object({
|
|
forumId: Joi.number().integer().required(),
|
|
title: Joi.string().min(1).max(255).required(),
|
|
content: Joi.string().min(1).max(5000).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 result = await forumService.createTopic(userId, value.forumId, value.title, value.content);
|
|
res.status(201).json(result);
|
|
} catch (error) {
|
|
console.error('Error in createTopic:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async getTopic(req, res) {
|
|
try {
|
|
const { userid: userId } = req.headers;
|
|
const { id: topicId } = req.params;
|
|
const topic = await forumService.getTopic(userId, topicId);
|
|
res.status(200).json(topic);
|
|
} catch (error) {
|
|
console.error('Error in getTopic:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
},
|
|
|
|
async addMessage(req, res) {
|
|
const schema = Joi.object({
|
|
content: Joi.string().min(1).max(5000).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 { id: topicId } = req.params;
|
|
const result = await forumService.addMessage(userId, topicId, value.content);
|
|
res.status(201).json(result);
|
|
} catch (error) {
|
|
console.error('Error in addMessage:', error);
|
|
res.status(400).json({ error: error.message });
|
|
}
|
|
}
|
|
};
|
|
|
|
export default forumController;
|