| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- const { Ticket } = require('../models/ticket.model');
- const { User } = require('../models/user.model');
- const bcrypt = require('bcrypt');
- const Role = require('../lib/role')
- var validator = require('validator');
- // ajout employé
- exports.postEmployee = async (req, res, next) => {
- try {
- // génère une exception
- if (!req.body.firstname) { throw new Error('Nom introuvable') }
- if (!req.body.lastname) { throw new Error('Prénom introuvable') }
- if (!req.body.password) { throw new Error('Mot de passe introuvable') }
- if (!req.body.email) { throw new Error('Adresse email introuvable') }
- if (!req.body.birthday) { throw new Error('Date de naissance introuvable') }
- if (!req.body.phonenumber) { throw new Error('Numéro de téléphone introuvable') }
- if (!validator.isEmail(req.body.email)) { throw new Error('Adresse email invalide') }
- if (isNaN(Date.parse(req.body.birthday)) || (Date.parse(req.body.birthday)) > 1073692800000) { throw new Error('Date de naissance invalide') }
- const user = await User.findOne({ email: req.body.email }, { email: 1 })
- if (user) {
- res.status(400).json({ success: false, message: 'Adresse email existe déja veuillez renseigner une autre adresse email' })
- } else {
- bcrypt.hash(req.body.password, 12)
- .then(hash => {
- const user = new User({
- firstname: req.body.firstname,
- lastname: req.body.lastname,
- email: req.body.email,
- role: Role.Employee,
- birthday: req.body.birthday,
- phonenumber: req.body.phonenumber,
- isActive: true,
- password: hash
- });
- user.save()
- .then(() => {
- res.status(201).json({ success: true, message: 'Employé ajouté avec succès'})
- })
- .catch((err) => res.status(500).json({ success: false, message: 'Erreur dans le serveur' }))
- })
- .catch(() => res.status(400).json({ success: false, message: 'Erreur dans le mot de passe' }));
- }
- }
- catch (err) {
- res.status(500).json({ success: false, message: err.message })
- }
- };
- //get employee by id
- exports.getEmployeeById = async (req, res) => {
- User.findById(req.params.id, {password:0, __v:0})
- .then( (employee) => {
- res.status(200).send(employee);
- })
- .catch(() => {
- res.status(404).send({
- success: false,
- message: 'user not found'
- }
- );
- })
- };
- //delete employee by id
- exports.deleteEmployeeById = async (req, res) => {
- const employee = await User.findByIdAndRemove(req.params.id);
- if (!employee) return res.status(404).json('employee not found');
- res.status(200).json('user deleted successfully!');
-
- };
- //patch user by id
- exports.patchUserById = async (req, res, next) => {
- const user = await User.findById(req.params.id);
- const phonenumber = req.body.phonenumber;
- const password = req.body.password
- const adresse = req.body.adresse;
-
- if (phonenumber) { user.phonenumber = phonenumber }
- if (password) { user.password = password }
- if (adresse) { user.adresse = adresse }
-
- await user.save() // on sauvegarde les modifications
-
- res.json(user)
- };
- //get all employees
- exports.getAllEmployees = async (req, res, next) => {
- var page = parseInt(req.query.page) || 1;
- var limit = parseInt(req.query.limit) || 5;
-
- if (req.query) {
- var query = {role: Role.Employee}
- if (req.query.lastname) { query.lastname = { $regex: req.query.lastname } }
- if (req.query.firstname) { query.firstname = { $regex: req.query.firstname } }
- if (req.query.email) { query.email = { $regex: req.query.email } }
- }
-
- await User.find(query, {password:0, resetLink:0, __v:0})
- .sort({ register_date: -1 })
- .skip((page - 1) * limit)
- .limit(limit)
- .exec((err, doc) => {
- if (err) {
- return res.status(500).json(err);
- }
- User.countDocuments(query).exec((count_error, count) => {
- if (err) {
- return res.status(404).json(count_error);
- }
- return res.status(200).json({
- success: true,
- page: page,
- page_size: doc.length,
- total: count,
- employees: doc
- });
- });
- });
- };
|