employee.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. const { Ticket } = require('../models/ticket.model');
  2. const { User } = require('../models/user.model');
  3. const bcrypt = require('bcrypt');
  4. const Role = require('../lib/role')
  5. var validator = require('validator');
  6. // ajout employé
  7. exports.postEmployee = async (req, res, next) => {
  8. try {
  9. // génère une exception
  10. if (!req.body.firstname) { throw new Error('Nom introuvable') }
  11. if (!req.body.lastname) { throw new Error('Prénom introuvable') }
  12. if (!req.body.password) { throw new Error('Mot de passe introuvable') }
  13. if (!req.body.email) { throw new Error('Adresse email introuvable') }
  14. if (!req.body.birthday) { throw new Error('Date de naissance introuvable') }
  15. if (!req.body.phonenumber) { throw new Error('Numéro de téléphone introuvable') }
  16. if (!validator.isEmail(req.body.email)) { throw new Error('Adresse email invalide') }
  17. if (isNaN(Date.parse(req.body.birthday)) || (Date.parse(req.body.birthday)) > 1073692800000) { throw new Error('Date de naissance invalide') }
  18. const user = await User.findOne({ email: req.body.email }, { email: 1 })
  19. if (user) {
  20. res.status(400).json({ success: false, message: 'Adresse email existe déja veuillez renseigner une autre adresse email' })
  21. } else {
  22. bcrypt.hash(req.body.password, 12)
  23. .then(hash => {
  24. const user = new User({
  25. firstname: req.body.firstname,
  26. lastname: req.body.lastname,
  27. email: req.body.email,
  28. role: Role.Employee,
  29. birthday: req.body.birthday,
  30. phonenumber: req.body.phonenumber,
  31. isActive: true,
  32. password: hash
  33. });
  34. user.save()
  35. .then(() => {
  36. res.status(201).json({ success: true, message: 'Employé ajouté avec succès'})
  37. })
  38. .catch((err) => res.status(500).json({ success: false, message: 'Erreur dans le serveur' }))
  39. })
  40. .catch(() => res.status(400).json({ success: false, message: 'Erreur dans le mot de passe' }));
  41. }
  42. }
  43. catch (err) {
  44. res.status(500).json({ success: false, message: err.message })
  45. }
  46. };
  47. //get employee by id
  48. exports.getEmployeeById = async (req, res) => {
  49. User.findById(req.params.id, {password:0, __v:0})
  50. .then( (employee) => {
  51. res.status(200).send(employee);
  52. })
  53. .catch(() => {
  54. res.status(404).send({
  55. success: false,
  56. message: 'user not found'
  57. }
  58. );
  59. })
  60. };
  61. //delete employee by id
  62. exports.deleteEmployeeById = async (req, res) => {
  63. const employee = await User.findByIdAndRemove(req.params.id);
  64. if (!employee) return res.status(404).json('employee not found');
  65. res.status(200).json('user deleted successfully!');
  66. };
  67. //patch user by id
  68. exports.patchUserById = async (req, res, next) => {
  69. const user = await User.findById(req.params.id);
  70. const phonenumber = req.body.phonenumber;
  71. const password = req.body.password
  72. const adresse = req.body.adresse;
  73. if (phonenumber) { user.phonenumber = phonenumber }
  74. if (password) { user.password = password }
  75. if (adresse) { user.adresse = adresse }
  76. await user.save() // on sauvegarde les modifications
  77. res.json(user)
  78. };
  79. //get all employees
  80. exports.getAllEmployees = async (req, res, next) => {
  81. var page = parseInt(req.query.page) || 1;
  82. var limit = parseInt(req.query.limit) || 5;
  83. if (req.query) {
  84. var query = {role: Role.Employee}
  85. if (req.query.lastname) { query.lastname = { $regex: req.query.lastname } }
  86. if (req.query.firstname) { query.firstname = { $regex: req.query.firstname } }
  87. if (req.query.email) { query.email = { $regex: req.query.email } }
  88. }
  89. await User.find(query, {password:0, resetLink:0, __v:0})
  90. .sort({ register_date: -1 })
  91. .skip((page - 1) * limit)
  92. .limit(limit)
  93. .exec((err, doc) => {
  94. if (err) {
  95. return res.status(500).json(err);
  96. }
  97. User.countDocuments(query).exec((count_error, count) => {
  98. if (err) {
  99. return res.status(404).json(count_error);
  100. }
  101. return res.status(200).json({
  102. success: true,
  103. page: page,
  104. page_size: doc.length,
  105. total: count,
  106. employees: doc
  107. });
  108. });
  109. });
  110. };