Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| import { isAlphanumeric, isHexadecimal } from 'validator'; | |
| import debug from 'debug'; | |
| const log = debug('fcc:models:promo'); | |
| export default function promo(Promo) { | |
| Promo.getButton = function getButton(id, code, type = 'isNot') { | |
| const Job = Promo.app.models.Job; | |
| if (!id || !isHexadecimal(id)) { | |
| return Promise.reject(new Error( | |
| 'Must include job id' | |
| )); | |
| } | |
| if ( | |
| !isAlphanumeric(code) && | |
| type && | |
| !isAlphanumeric(type) | |
| ) { | |
| return Promise.reject(new Error( | |
| 'Code or Type should be an alphanumeric' | |
| )); | |
| } | |
| const query = { | |
| where: { | |
| and: [{ | |
| code: type === 'isNot' ? type : 'isHighlighted' | |
| }, | |
| { | |
| type: type.replace(/^\$/g, '') | |
| }] | |
| } | |
| }; | |
| return Promo.findOne(query) | |
| .then(function(promo) { | |
| // turn promo model to plain js object; | |
| promo = promo.toJSON(); | |
| return Job.updateAll({ id: id }, { promoCodeUsed: code }) | |
| .then(function({ count = 0 } = {}) { | |
| log('job', count); | |
| if (count) { | |
| return Object.assign({}, promo, { name: `${code} Discount` }); | |
| } | |
| return Promise.reject(new Error( | |
| `Job ${id} not found` | |
| )); | |
| }); | |
| }); | |
| }; | |
| Promo.remoteMethod( | |
| 'getButton', | |
| { | |
| description: 'Get button id for promocode', | |
| accepts: [ | |
| { | |
| arg: 'id', | |
| type: 'string', | |
| required: true | |
| }, | |
| { | |
| arg: 'code', | |
| type: 'string', | |
| required: true | |
| }, | |
| { | |
| arg: 'type', | |
| type: 'string' | |
| } | |
| ], | |
| returns: [ | |
| { | |
| arg: 'promo', | |
| type: 'object' | |
| } | |
| ] | |
| } | |
| ); | |
| } |