123 lines
3.5 KiB
JavaScript
123 lines
3.5 KiB
JavaScript
const CreateUserCommand = require('../../application/user/command/CreateUserCommand');
|
|
const UpdateUserCommand = require('../../application/user/command/UpdateUserCommand');
|
|
const DeleteUserCommand = require('../../application/user/command/DeleteUserCommand');
|
|
const GetUserQuery = require('../../application/user/query/GetUserQuery');
|
|
const GetAllUsersQuery = require('../../application/user/query/GetAllUsersQuery');
|
|
|
|
const CreateUserHandler = require('../../application/user/command/CreateUserHandler');
|
|
const UpdateUserHandler = require('../../application/user/command/UpdateUserHandler');
|
|
const DeleteUserHandler = require('../../application/user/command/DeleteUserHandler');
|
|
const GetUserHandler = require('../../application/user/query/GetUserHandler');
|
|
const GetAllUsersHandler = require('../../application/user/query/GetAllUsersHandler');
|
|
|
|
class UserController {
|
|
constructor() {
|
|
this.createUserHandler = new CreateUserHandler();
|
|
this.updateUserHandler = new UpdateUserHandler();
|
|
this.deleteUserHandler = new DeleteUserHandler();
|
|
this.getUserHandler = new GetUserHandler();
|
|
this.getAllUsersHandler = new GetAllUsersHandler();
|
|
}
|
|
|
|
// GET /api/users - Összes user lekérése
|
|
async getAllUsers(req, res) {
|
|
try {
|
|
const query = new GetAllUsersQuery();
|
|
const users = await this.getAllUsersHandler.handle(query);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: users
|
|
});
|
|
} catch (error) {
|
|
res.status(500).json({
|
|
success: false,
|
|
message: error.message
|
|
});
|
|
}
|
|
}
|
|
|
|
// GET /api/users/:id - Egy user lekérése ID alapján
|
|
async getUserById(req, res) {
|
|
try {
|
|
const query = new GetUserQuery(parseInt(req.params.id));
|
|
const user = await this.getUserHandler.handle(query);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: user
|
|
});
|
|
} catch (error) {
|
|
res.status(404).json({
|
|
success: false,
|
|
message: error.message
|
|
});
|
|
}
|
|
}
|
|
|
|
// POST /api/users - Új user létrehozása
|
|
async createUser(req, res) {
|
|
try {
|
|
const { email, name, password, role } = req.body;
|
|
const command = new CreateUserCommand(email, name, password, role);
|
|
const user = await this.createUserHandler.handle(command);
|
|
|
|
res.status(201).json({
|
|
success: true,
|
|
message: 'User sikeresen létrehozva!',
|
|
data: user
|
|
});
|
|
} catch (error) {
|
|
res.status(400).json({
|
|
success: false,
|
|
message: error.message
|
|
});
|
|
}
|
|
}
|
|
|
|
// PUT /api/users/:id - User frissítése
|
|
async updateUser(req, res) {
|
|
try {
|
|
const { email, name, role } = req.body;
|
|
const command = new UpdateUserCommand(
|
|
parseInt(req.params.id),
|
|
email,
|
|
name,
|
|
role
|
|
);
|
|
const user = await this.updateUserHandler.handle(command);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
message: 'User sikeresen frissítve!',
|
|
data: user
|
|
});
|
|
} catch (error) {
|
|
res.status(400).json({
|
|
success: false,
|
|
message: error.message
|
|
});
|
|
}
|
|
}
|
|
|
|
// DELETE /api/users/:id - User törlése
|
|
async deleteUser(req, res) {
|
|
try {
|
|
const command = new DeleteUserCommand(parseInt(req.params.id));
|
|
const result = await this.deleteUserHandler.handle(command);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
message: result.message
|
|
});
|
|
} catch (error) {
|
|
res.status(404).json({
|
|
success: false,
|
|
message: error.message
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = UserController;
|