Sha256: 99611f6e0c3a1398a7da8df64ada768bef9faceb6bf3de7604cdd53de93d308f

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

angular.module('EssayApp.directives').directive("checkDiscount", ["$timeout", "$parse", "$q", "discountService", ($timeout, $parse, $q, discountService) ->
  restrict: 'A'
  scope: true
  require: "ngModel"
  link: (scope, element, attrs, ngModel) ->
    _model = $parse(attrs.checkDiscount)
    _defaultMinPrice = null

    fn = () ->
      ngModel.$modelValue

    ngModel.$asyncValidators.discount = (modelValue, viewValue)->
      if modelValue?.length > 2
        # _model.assign(scope, null)
        return discountService.check(modelValue).then (data) ->
          $timeout(() ->
            element.not(':focus').trigger('focusout')
          , 10)

          # {price: 15, type: "percentage", message: "some text here"}
          if data.price
            data['pub_message'] = replaceMessageCurrency(data.message, true)
            _model.assign(scope, data)
            return true
          else
            # element.attr('data-error-discount', data['error'])
            # element.attr('data-error-discount',
            #   'This code expired. Contact Support for a valid discount code.')
            _model.assign(scope, null)
            return $q.reject()
      else
        _model.assign(scope, null)
        return $q.when(true)

    replaceMessageCurrency = (message, is_init=false) ->
      if is_init && /\$([\d\.]+)$/.test(message)
        _defaultMinPrice = /([\d\.]+)$/.exec(message)[0]

      if _defaultMinPrice
        _new_price = scope.price.formatted_value parseFloat(_defaultMinPrice)
        message = message.replace(/\D[\d\.]+$/, _new_price)

      return message

    scope.$watch 'customer.order_exchange_rate', (value) ->
      if value
        if data = scope.$eval(attrs.checkDiscount)
          data.pub_message = replaceMessageCurrency(data.message)
          _model.assign(scope, data)
])

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/assets/javascripts/app/directives/check_discount.js.coffee