contact.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. const { Contact } = require('../models/contact.model');
  2. const nodemailer = require('nodemailer');
  3. var validator = require('validator');
  4. const config = require('../config/config.json');
  5. //post contact
  6. exports.addContact = async (req, res, next) => {
  7. try {
  8. // génère une exception
  9. if (!req.body.email) { throw new Error('Adresse email introuvable') }
  10. if (!validator.isEmail(req.body.email)) { throw new Error('Adresse email invalide') }
  11. const contact = new Contact({
  12. lastname: req.body.lastname,
  13. email: req.body.email,
  14. message: req.body.message,
  15. is_closed: false
  16. });
  17. contact.save()
  18. .then(() => { res.status(201).json({ success: true, message: 'Votre message a été envoyé avec success' }) })
  19. .catch((error) => { res.status(500).json(error.message) });
  20. }
  21. catch (err) { res.status(400).json({ success: false, message: err.message }) }
  22. };
  23. //get how many notification
  24. exports.notificationContact = async (req, res, next) => {
  25. Contact.countDocuments({ is_closed: false })
  26. .then(
  27. (notif) => {
  28. res.status(200).json({ success: true, notification: notif });
  29. }
  30. ).catch(
  31. () => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) }
  32. )
  33. }
  34. // get contact not closed
  35. exports.getnotclosedContact = async (req, res, next) => {
  36. Contact.find({ is_closed: false })
  37. .then((contact) => { res.status(200).json(contact) })
  38. .catch(() => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) })
  39. }
  40. // get contact closed
  41. exports.getclosedContact = async (req, res, next) => {
  42. Contact.find({ is_closed: true })
  43. .then((contact) => { res.status(200).json(contact) })
  44. .catch(() => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) })
  45. }
  46. //response contact
  47. exports.ResponseContact = async (req, res, next) => {
  48. if (req.query.id) {
  49. if (req.body.text) {
  50. Contact.findOne({ _id: req.query.id })
  51. .then((item) => {
  52. if (item.is_closed === false) {
  53. var smtpTransport = nodemailer.createTransport({
  54. host: config.email.host,
  55. port: config.email.port,
  56. secure: true,
  57. auth: { user: config.email.user, pass: config.email.pass },
  58. tls: { rejectUnauthorized: false }, // do not fail on invalid certs
  59. });
  60. var mailOptions = {
  61. to: item.email,
  62. from: config.email.email,
  63. subject: `Réponse à votre message`,
  64. text: req.body.text
  65. };
  66. item.is_closed = true
  67. item.response = req.body.text
  68. item.response_date = new Date()
  69. item.save().then(() => {
  70. smtpTransport.sendMail(mailOptions)
  71. .then(() => {
  72. res.status(200).json({ success: true, message: `Votre réponse a été envoyer avec success` })
  73. })
  74. .catch((e) => res.status(500).json({ success: false, message: `${e}` }))
  75. }).catch((e) => res.status(500).json({ success: false, message: `${e}` }))
  76. } else {
  77. res.status(400).json({ success: false, message: `Le Message a été fermer` })
  78. }
  79. }
  80. )
  81. .catch((e) => res.status(404).json({ success: false, message: `Message non trouvé` }))
  82. } else {
  83. res.status(400).json({ success: false, message: `Le message est obligatoire` })
  84. }
  85. } else {
  86. res.status(400).json({ success: false, message: `Identifiant du message non trouvé` })
  87. }
  88. }
  89. //colse contact
  90. exports.CloseContact = async (req, res, next) => {
  91. if (req.query.id) {
  92. if (req.body.is_closed) {
  93. Contact.findOne({ _id: req.query.id })
  94. .then((item) => {
  95. if (item.is_closed === false) {
  96. item.is_closed = req.body.is_closed
  97. item.response_date = new Date()
  98. item.save().then(() => {
  99. res.status(200).json({ success: true, message: `Le message a été fermer avec success` })
  100. }).catch((e) => res.status(500).json({ success: false, message: `${e}` }))
  101. } else {
  102. res.status(400).json({ success: false, message: `Le Message a été fermer` })
  103. }
  104. }
  105. )
  106. .catch((e) => res.status(404).json({ success: false, message: `Message non trouvé` }))
  107. }
  108. else {
  109. res.status(400).json({ success: false, message: `Body non trouvé` })
  110. }
  111. } else {
  112. res.status(400).json({ success: false, message: `Identifiant du message non trouvé` })
  113. }
  114. }