| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- const bcrypt = require("bcryptjs/dist/bcrypt")
- const { Router } = require("express")
- const User = require("../database/models/user")
- const {getUserValidator} = require("../validators/users")
-
- const getUsers = async (req, res, next) => {
- const allUsers = await User.find({})
- return res.status(200).send(allUsers)
- }
-
- const getUser = async (req, res, next) => {
- const result = getUserValidator.validate(req.body)
- console.log(result)
- try {
- const id = req.params.id
- if (!id) {
- return res.status(400).send('Bad request')
- }
-
- const user = await User.findById(id)
- if (!user) {
- return res.status(404).send("User with the id of: " + id + " doesnt exist")
- }
-
- return res.json(user)
- } catch (e) {
- next(e)
- }
- }
-
- const createUser = async (req, res, next) => {
- try {
- const userModel = req.body
- if (Object.entries(userModel).length === 0) {
- return res.status(400).send('Object cant be empty')
- }
-
- const err = getUserValidator.validate(userModel).error
- if (err) {
- return res.status(400).send(err.message)
- }
-
- const newUser = new User(userModel)
- newUser.password = await bcrypt.hash(newUser.password, 8)
- await newUser.save()
-
- return res.status(201).json(newUser)
- } catch (e) {
- next(e)
- }
- }
-
- const updateUser = async (req, res, next) => {
- try {
- const id = req.params.id
- const objBody = req.body
- if (Object.entries(objBody).length == 0) {
- return res.status(400).send('Invalid input parameters')
- }
-
- const err = getUserValidator.validate(objBody).error
- if (err) {
- return res.status(400).send(err.message)
- }
-
- let user = await User.findById(id);
- if (!user) {
- return res.status(404).send("User with the id of: " + id + " doesnt exist")
- }
-
- user.name = objBody.name
- user.password = objBody.password
- user.email = objBody.email
-
- await User.updateOne(user)
-
- return res.status(200).send('User updated successfully')
- } catch (e) {
- next(e)
- }
- }
-
- const updateUserContacts = async (req, res, next) => {
- try {
- userFound = true
- if (!userFound) {
- return res.status(404).send('user not found')
- }
- if (Object.entries(req.body).length == 0) {
- return res.status(400).send('invalid input parameters')
- }
- return res.status(200).send('user contacts updated successfully')
- } catch (e) {
- next(e)
- }
- }
-
- const deleteUser = async (req, res, next) => {
- try {
- const id = req.params.id
- if (!id) {
- return res.status(400).send('You need to provide valid Id')
- }
-
- const user = await User.findById(id)
- if (!user) {
- return res.status(404).send("User with the id of: " + id + " doesnt exist")
- }
-
- await User.deleteOne(user)
-
- return res.status(204).send('Deleting user with id of ' + id)
- } catch (e) {
- next(e)
- }
- }
-
- module.exports = { getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser }
|