lemail2
Version:
Strapi Email designer plugin.
94 lines (83 loc) • 2.5 kB
JavaScript
'use strict';
const _ = require('lodash');
/**
* email-designer.js controller
*
* @description: A set of functions called "actions" of the `email-designer` plugin.
*/
module.exports = {
/**
* Default action.
*
* @return {Object}
*/
index: async (ctx) => {
// Add your own logic here.
// Send 200 `ok`
ctx.send({
message: 'ok',
});
},
/**
* Get template design action.
*
* @return {Object}
*/
getTemplates: async (ctx) => {
const templates = await strapi.plugins['email-designer'].services.template.fetchAll();
ctx.send(templates);
},
/**
* Get template design action.
*
* @return {Object}
*/
getTemplate: async (ctx) => {
const template = await strapi.plugins['email-designer'].services.template.fetch({ id: ctx.params.templateId });
ctx.send(template);
},
/**
* Delete template design action.
*
* @return {Object}
*/
deleteTemplate: async (ctx) => {
const template = await strapi.plugins['email-designer'].services.template.remove({ id: ctx.params.templateId });
ctx.send({ removed: true });
},
/**
* Save template design action.
*
* @return {Object}
*/
saveTemplate: async (ctx) => {
if (!_.isEmpty(ctx.params.templateId) && ctx.request.body.import) {
const foundTemplate = await strapi.plugins['email-designer'].services.template.fetch({
id: ctx.params.templateId,
});
if (!foundTemplate || foundTemplate.name !== ctx.request.body.name) ctx.params.templateId = 'new';
}
const template =
_.isEmpty(ctx.params.templateId) || ctx.params.templateId === 'new'
? await strapi.plugins['email-designer'].services.template.add(ctx.request.body)
: await strapi.plugins['email-designer'].services.template.edit(
{ id: ctx.params.templateId },
{ ...ctx.request.body, id: ctx.params.templateId }
);
ctx.send(template);
},
/**
* Duplicate a template.
*
* @return {Object}
*/
duplicateTemplate: async (ctx) => {
if (_.isEmpty(ctx.params.sourceTemplateId)) return ctx.badRequest('No source template Id given');
const { __v, _id, id, updatedAt, createdAt, ...toClone } = await strapi
.query('email-template', 'email-designer')
.findOne({ id: ctx.params.sourceTemplateId });
return toClone
? strapi.query('email-template', 'email-designer').create({ ...toClone, name: `${toClone.name} copy` })
: null;
},
};