|
|
@ -7,7 +7,7 @@ |
|
|
|
const DTP_COMPONENT_NAME = 'admin:newsletter'; |
|
|
|
const express = require('express'); |
|
|
|
|
|
|
|
const { SiteController } = require('../../../lib/site-lib'); |
|
|
|
const { SiteController, SiteError } = require('../../../lib/site-lib'); |
|
|
|
|
|
|
|
class NewsletterController extends SiteController { |
|
|
|
|
|
|
@ -33,6 +33,8 @@ class NewsletterController extends SiteController { |
|
|
|
|
|
|
|
router.get('/', this.getIndex.bind(this)); |
|
|
|
|
|
|
|
router.delete('/:newsletterId', this.deleteNewsletter.bind(this)); |
|
|
|
|
|
|
|
return router; |
|
|
|
} |
|
|
|
|
|
|
@ -40,6 +42,9 @@ class NewsletterController extends SiteController { |
|
|
|
const { newsletter: newsletterService } = this.dtp.services; |
|
|
|
try { |
|
|
|
res.locals.newsletter = await newsletterService.getById(newsletterId); |
|
|
|
if (!res.locals.newsletter) { |
|
|
|
throw new SiteError(404, 'Newsletter not found'); |
|
|
|
} |
|
|
|
return next(); |
|
|
|
} catch (error) { |
|
|
|
this.log.error('failed to populate newsletterId', { newsletterId, error }); |
|
|
@ -62,7 +67,7 @@ class NewsletterController extends SiteController { |
|
|
|
const { newsletter: newsletterService } = this.dtp.services; |
|
|
|
try { |
|
|
|
const newsletter = await newsletterService.create(req.user, req.body); |
|
|
|
res.redirect(`/admin/newsletter/${newsletter._id}`); |
|
|
|
res.redirect('/admin/newsletter'); |
|
|
|
} catch (error) { |
|
|
|
this.log.error('failed to update newsletter', { error }); |
|
|
|
return next(error); |
|
|
@ -83,6 +88,33 @@ class NewsletterController extends SiteController { |
|
|
|
return next(error); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
async deleteNewsletter (req, res, next) { |
|
|
|
const { newsletter: newsletterService, displayEngine: displayEngineService } = this.dtp.services; |
|
|
|
try { |
|
|
|
const displayList = displayEngineService.createDisplayList('delete-newsletter'); |
|
|
|
|
|
|
|
await newsletterService.deleteNewsletter(res.locals.newsletter); |
|
|
|
|
|
|
|
displayList.removeElement(`li[data-newsletter-id="${res.locals.newsletter._id}"]`); |
|
|
|
displayList.showNotification( |
|
|
|
`Newsletter "${res.locals.newsletter.title}" deleted`, |
|
|
|
'success', |
|
|
|
'bottom-center', |
|
|
|
3000, |
|
|
|
); |
|
|
|
res.status(200).json({ success: true, displayList }); |
|
|
|
} catch (error) { |
|
|
|
this.log.error('failed to delete newsletter', { |
|
|
|
newsletterId: res.local.newsletter._id, |
|
|
|
error, |
|
|
|
}); |
|
|
|
res.status(error.statusCode || 500).json({ |
|
|
|
success: false, |
|
|
|
message: error.message, |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
module.exports = async (dtp) => { |
|
|
|