var _ = require('lodash'); import { model as Coupon, } from '../../models/coupon'; var api = module.exports; var csvStringify = require('csv-stringify'); var async = require('async'); api.ensureAdmin = function(req, res, next) { if (!res.locals.user.contributor.sudo) return res.status(401).json({err:"You don't have admin access"}); next(); } api.generateCoupons = function(req,res,next) { let count = Number(req.query.count); Coupon.generate(req.params.event, count, function(err){ if(err) return next(err); res.sendStatus(200); }); } api.getCoupons = function(req,res,next) { var options = {sort:'seq'}; if (req.query.limit) options.limit = req.query.limit; if (req.query.skip) options.skip = req.query.skip; Coupon.find({},{}, options, function(err,coupons){ let output = [['code']].concat(_.map(coupons, function(c){ return [c._id]; })) res.set({ 'Content-Type': 'text/csv', 'Content-disposition': 'attachment; filename=habitica-coupons.csv', }); csvStringify(output, (err, csv) => { if (err) return next(err); res.status(200).send(csv); }); }); } api.enterCode = function(req,res,next) { Coupon.apply(res.locals.user,req.params.code,function(err,user){ if (err) return res.status(400).json({err:err}); res.json(user); }); }