| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- const { Contact } = require('../models/contact.model');
- const nodemailer = require('nodemailer');
- const config = require('../config/config.json');
- //post contact
- exports.addContact = async (req, res, next) => {
- try {
- // génère une exception
- if (!req.body.email) { throw new Error('Adresse email introuvable') }
- if (!validator.isEmail(req.body.email)) { throw new Error('Adresse email invalide') }
- const contact = new Contact({
- lastname: req.body.lastname,
- email: req.body.email,
- message: req.body.message,
- is_closed: false
- });
- contact.save()
- .then(() => { res.status(201).json({ success: true, message: 'Votre message a été envoyé avec success' }) })
- .catch((error) => { res.status(500).json(error.message) });
- }
- catch (err) { res.status(400).json({ success: false, message: err.message }) }
- };
- //get how many notification
- exports.notificationContact = async (req, res, next) => {
- Contact.countDocuments({ is_closed: false })
- .then(
- (notif) => {
- res.status(200).json({ success: true, notification: notif });
- }
- ).catch(
- () => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) }
- )
- }
- // get contact not closed
- exports.getnotclosedContact = async (req, res, next) => {
- Contact.find({ is_closed: false })
- .then((contact) => { res.status(200).json(contact) })
- .catch(() => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) })
- }
- // get contact closed
- exports.getclosedContact = async (req, res, next) => {
- Contact.find({ is_closed: true })
- .then((contact) => { res.status(200).json(contact) })
- .catch(() => { res.status(500).json({ success: false, message: 'Erreur dans le serveur' }) })
- }
- //response contact
- exports.ResponseContact = async (req, res, next) => {
- if (req.query.id) {
- if (req.body.text) {
- Contact.findOne({ _id: req.query.id })
- .then((item) => {
- if (item.is_closed === false) {
- var smtpTransport = nodemailer.createTransport({
- host: config.email.host,
- port: config.email.port,
- secure: true,
- auth: { user: config.email.user, pass: config.email.pass },
- tls: { rejectUnauthorized: false }, // do not fail on invalid certs
- });
- var mailOptions = {
- to: item.email,
- from: config.email.email,
- subject: `Réponse à votre message`,
- text: req.body.text
- };
- item.is_closed = true
- item.response = req.body.text
- item.response_date = new Date()
- item.save().then(() => {
- smtpTransport.sendMail(mailOptions)
- .then(() => {
- res.status(200).json({ success: true, message: `Votre réponse a été envoyer avec success` })
- })
- .catch((e) => res.status(500).json({ success: false, message: `${e}` }))
- }).catch((e) => res.status(500).json({ success: false, message: `${e}` }))
- } else {
- res.status(400).json({ success: false, message: `Le Message a été fermer` })
- }
- }
- )
- .catch((e) => res.status(404).json({ success: false, message: `Message non trouvé` }))
- } else {
- res.status(400).json({ success: false, message: `Le message est obligatoire` })
- }
- } else {
- res.status(400).json({ success: false, message: `Identifiant du message non trouvé` })
- }
- }
- //colse contact
- exports.CloseContact = async (req, res, next) => {
- if (req.query.id) {
- if (req.body.is_closed) {
- Contact.findOne({ _id: req.query.id })
- .then((item) => {
- if (item.is_closed === false) {
- item.is_closed = req.body.is_closed
- item.response_date = new Date()
- item.save().then(() => {
- res.status(200).json({ success: true, message: `Le message a été fermer avec success` })
- }).catch((e) => res.status(500).json({ success: false, message: `${e}` }))
- } else {
- res.status(400).json({ success: false, message: `Le Message a été fermer` })
- }
- }
- )
- .catch((e) => res.status(404).json({ success: false, message: `Message non trouvé` }))
- }
- else {
- res.status(400).json({ success: false, message: `Body non trouvé` })
- }
- } else {
- res.status(400).json({ success: false, message: `Identifiant du message non trouvé` })
- }
- }
|