const User = require("../database/models/user") const { getUserValidator, getIdValidator, getUpdatedUserValidator } = require("../validators/users") const mediator = require('../mediator/userMediator') const getUsers = async (req, res, next) => { const allUsers = await User.find({}) return res.status(200).send(allUsers) } const getUser = async (req, res, next) => { try { const id = req.params.id const errId = getIdValidator.validate(id).error if (errId) { return res.status(404).send(errId.message) } const result = await mediator.getUser(id) if (!result.succeeded) { return res.status(400).send(result.error) } return res.status(200).json(result.value) } catch (e) { next(e) } } const createUser = async (req, res, next) => { try { const userModel = req.body const err = getUserValidator.validate(userModel).error if (err) { return res.status(404).send(err.message) } const result = await mediator.createUser(userModel) if (!result.succeeded) { return res.status(400).send(result.error) } return res.status(201).json(result.value) } catch (e) { next(e) } } const updateUser = async (req, res, next) => { try { const id = req.params.id const errId = getIdValidator.validate(id).error if (errId) { return res.status(400).send(errId.message) } const objBody = req.body const err = getUpdatedUserValidator.validate(objBody).error if (err) { return res.status(400).send(err.message) } const result = await mediator.updateUser(id, objBody) if (!result.succeeded) { return res.status(400).send(result.error) } return res.status(200).send(result.value) } catch (e) { next(e) } } const deleteUser = async (req, res, next) => { try { const id = req.params.id const errId = getIdValidator.validate(id).error if (errId) { return res.status(400).send(errId.message) } const result = await mediator.deleteUser(id) if (!result.succeeded) { return res.status(400).send(result.error) } return res.status(204).send(result.value) } catch (e) { next(e) } } const updateUserContacts = async (req, res, next) => { try { const userFound = true if (!userFound) { return res.status(404).send('user not found') } if (!req.body) { return res.status(400).send('invalid input parameters') } return res.status(200).send('user contacts updated successfully') } catch (e) { next(e) } } module.exports = { getUsers, getUser, createUser, updateUserContacts, updateUser, deleteUser }