diff --git a/backend/src/controller/userController.js b/backend/src/controller/userController.js new file mode 100644 index 0000000000000000000000000000000000000000..ec0df433ed9bb24dd96befabe1e60ee0082fb92f --- /dev/null +++ b/backend/src/controller/userController.js @@ -0,0 +1,121 @@ +const db = require('../config/db.config.js'); +const config = require('../config/config.js'); +var bcrypt = require('bcryptjs'); +const User = db.user; +const Role = db.role; + +exports.fetchAll = (req, res) => { + User.findAll({ + attributes: ['id', 'name', 'username'], + include: [{ + model: Role, + attributes: ['id', 'name'] + }] + }).then(user => { + res.status(200).json({ + "description": "Users data", + "users": user + }) + }).catch(err => { + res.status(500).json({ + "description": "Error", + "error": err + }); + }) +} + +exports.createUser = (req, res) => { + User.create({ + name: req.body.name, + email: req.body.email, + username: req.body.username, + password: bcrypt.hashSync(req.body.password), + }).then(user => { + Role.findOne({ + where: { + name: req.body.role + } + }).then(role => { + user.setRole(role).then(() => { + res.send("User created successfully!"); + }) + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); +} + +exports.editUser = (req, res) => { + User.findOne({ + where: { + id: req.body.id + } + }).then(user => { + Role.findOne({ + where: { + name: req.body.role + } + }).then(role => { + user.setRole(role).then(() => { + user.update( + { + name: req.body.name, + email: req.body.email, + username: req.body.username, + password: bcrypt.hashSync(req.body.password) + }, + { + fields: ['name', 'email', 'username', 'password'] + } + ).then(() => { + res.send("User edited successfully!"); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); +} + +exports.deleteUser = (req, res) => { + User.destroy({ + where: { + id: req.body.id + } + }).then(() => { + res.send("User deleted successfully!"); + }).catch(err => { + res.status(500).send('Error -> ' + err); + }); +} + +exports.viewDetail = (req, res) => { + User.findOne({ + where: { + id: req.body.id + }, + attributes: ['id', 'name', 'email', 'username', 'password'], + include: [{ + model: Role, + attributes: ['id', 'name'] + }] + }).then(users => { + res.status(200).json({ + "description": "Users data", + "users": users + }) + }).catch(err => { + res.status(500).json({ + "description": "Error", + "error": err + }); + }) +} \ No newline at end of file