contact.js 5.2 KB

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