mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-29 18:45:48 -05:00
60 lines
2 KiB
CoffeeScript
60 lines
2 KiB
CoffeeScript
ModalView = require 'views/core/ModalView'
|
|
template = require 'templates/admin/administer-user-modal'
|
|
User = require 'models/User'
|
|
|
|
module.exports = class AdministerUserModal extends ModalView
|
|
id: "administer-user-modal"
|
|
template: template
|
|
plain: true
|
|
|
|
events:
|
|
'click #save-changes': 'onSaveChanges'
|
|
|
|
constructor: (options, @userHandle) ->
|
|
super(options)
|
|
@user = @supermodel.loadModel(new User({_id:@userHandle}), 'user', {cache: false}).model
|
|
options = {cache: false, url: '/stripe/coupons'}
|
|
options.success = (@coupons) =>
|
|
@couponsResource = @supermodel.addRequestResource('coupon', options)
|
|
@couponsResource.load()
|
|
|
|
getRenderData: ->
|
|
c = super()
|
|
stripe = @user.get('stripe') or {}
|
|
c.free = stripe.free is true
|
|
c.freeUntil = _.isString(stripe.free)
|
|
c.freeUntilDate = if c.freeUntil then stripe.free else new Date().toISOString()[...10]
|
|
c.coupon = stripe.couponID
|
|
c.coupons = @coupons or []
|
|
for coupon in c.coupons
|
|
bits = [coupon.id]
|
|
if coupon.percent_off
|
|
bits.push "(#{coupon.percent_off}% off)"
|
|
else if coupon.amount_off
|
|
bits.push "($#{coupon.amount_off} off)"
|
|
if coupon.duration
|
|
bits.push "(duration: #{coupon.duration})"
|
|
if coupon.redeem_by
|
|
bits.push "(redeem by: #{moment(coupon.redeem_by).format('lll')}"
|
|
coupon.format = bits.join(' ')
|
|
c.none = not (c.free or c.freeUntil or c.coupon)
|
|
c.user = @user
|
|
c
|
|
|
|
onSaveChanges: ->
|
|
stripe = _.clone(@user.get('stripe') or {})
|
|
delete stripe.free
|
|
delete stripe.couponID
|
|
|
|
selection = @$el.find('input[name="stripe-benefit"]:checked').val()
|
|
dateVal = @$el.find('#free-until-date').val()
|
|
couponVal = @$el.find('#coupon-select').val()
|
|
switch selection
|
|
when 'free' then stripe.free = true
|
|
when 'free-until' then stripe.free = dateVal
|
|
when 'coupon' then stripe.couponID = couponVal
|
|
|
|
@user.set('stripe', stripe)
|
|
options = {}
|
|
options.success = => @hide()
|
|
@user.patch(options)
|