2015-03-19 18:02:45 -04:00
|
|
|
Handler = require '../commons/Handler'
|
|
|
|
Prepaid = require './Prepaid'
|
|
|
|
|
|
|
|
# TODO: Should this happen on a save() call instead of a prepaid/-/create post?
|
|
|
|
# TODO: Probably a better way to create a unique 8 charactor string property using db voodoo
|
|
|
|
|
|
|
|
PrepaidHandler = class PrepaidHandler extends Handler
|
|
|
|
modelClass: Prepaid
|
|
|
|
jsonSchema: require '../../app/schemas/models/prepaid.schema'
|
|
|
|
allowedMethods: ['POST']
|
|
|
|
|
|
|
|
hasAccess: (req) ->
|
|
|
|
req.user?.isAdmin()
|
|
|
|
|
|
|
|
getByRelationship: (req, res, args...) ->
|
|
|
|
relationship = args[1]
|
|
|
|
return @createPrepaid(req, res) if relationship is 'create'
|
|
|
|
super arguments...
|
|
|
|
|
|
|
|
createPrepaid: (req, res) ->
|
|
|
|
return @sendForbiddenError(res) unless @hasAccess(req)
|
|
|
|
return @sendForbiddenError(res) unless req.body.type is 'subscription'
|
2015-06-05 09:48:09 -04:00
|
|
|
Prepaid.generateNewCode (code) =>
|
2015-03-19 18:02:45 -04:00
|
|
|
return @sendDatabaseError(res, 'Database error.') unless code
|
|
|
|
prepaid = new Prepaid
|
|
|
|
creator: req.user.id
|
|
|
|
type: req.body.type
|
|
|
|
status: 'active'
|
|
|
|
code: code
|
|
|
|
properties:
|
|
|
|
couponID: 'free'
|
|
|
|
prepaid.save (err) =>
|
|
|
|
return @sendDatabaseError(res, err) if err
|
|
|
|
@sendSuccess(res, prepaid.toObject())
|
|
|
|
|
|
|
|
module.exports = new PrepaidHandler()
|