UNPKG

prism-ad-campaigns

Version:
182 lines (134 loc) 3.84 kB
const RootController = require('structure-root-controller') const errorCodes = require('structure-error-codes') const StructureComposeError = require('structure-compose-error') const AdCampaignModel = require('../models/ad-campaign') const errorComposer = new StructureComposeError(errorCodes) /** * AdCampaignController Class * * @public * @class AdCampaignController */ class AdCampaignController extends RootController { /** * AdCampaignController constructor * * @public * @constructor * @param {Object} options - Options */ constructor(options = {}) { super(Object.assign({}, { name: 'ad-campaign' }, options)) } /** * Create new ad campaign * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ async create(req, res) { try { const organizationId = req.headers.organizationid const applicationId = req.headers.applicationid const adCampaignModel = new AdCampaignModel({ logger: this.logger, organizationId, applicationId }) return adCampaignModel.create(req.body) } catch(err) { this.logger.error('Error creating ad campaign', {err}) throw err } } /** * Update an ad campaign * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ updateById(req, res) { return new Promise(async (resolve, reject) => { try { const organizationId = req.headers.organizationid const applicationId = req.headers.applicationid const adCampaignModel = new AdCampaignModel({ logger: this.logger, organizationId, applicationId }) const oldAdCampaign = await adCampaignModel.getById(req.params.id) if (oldAdCampaign.status === 'active') { return reject(errorComposer.compose('CANT_UPDATE_ACTIVE_AD_CAMPAIGN')) } const res = await adCampaignModel.updateById(req.params.id, req.body) resolve(res) } catch(err) { if (err === 'Missing adAccountId') { return reject(errorComposer.compose('ADACCOUNTID_MISSING')) } this.logger.error('Error updating ad campaign', {err}) reject(err) } }) } /** * Get all ad campaigns * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ async getAll(req, res) { try { const organizationId = req.headers.organizationid const applicationId = req.headers.applicationid const adCampaignModel = new AdCampaignModel({ logger: this.logger, organizationId, applicationId }) const options = req.query ? { orderBy: req.query.orderBy, orderDir: req.query.orderDir, page: Number(req.query.page), limit: Number(req.query.limit) } : {} options.pagination = true const pkg = await adCampaignModel.getAll(false, options) pkg['ad-campaigns'] = pkg.results delete pkg.results return pkg } catch(err) { this.logger.error('Error getting all ad campaigns', {err}) throw err } } /** * Get ad campaign by id * * @public * @param {Object} req - Express req * @param {Object} res - Express res */ getById(req, res) { try { const organizationId = req.headers.organizationid const applicationId = req.headers.applicationid const adCampaignModel = new AdCampaignModel({ logger: this.logger, organizationId, applicationId }) return adCampaignModel.getById(req.params.id) } catch(err) { this.logger.error('Error getting all ad campaigns', {err}) throw err } } } module.exports = AdCampaignController