Sha256: d2b5ec9d11223b4588a39e818d8e15937197bee8f2e37f8716a4a462fdcd1942

Contents?: true

Size: 992 Bytes

Versions: 1

Compression:

Stored size: 992 Bytes

Contents

module Catarse
module Credits
  class Refund
    attr_accessor :backer, :user, :message

    def initialize(backer, user)
      @backer = backer
      @user = user
    end

    def make_request!
      check_refunded
      check_requested
      check_total_of_credits
      check_can_refund
      @backer.update_attributes({ requested_refund: true })
      @backer.user.save
      CreditsMailer.request_refund_from(@backer).deliver
      @message = I18n.t('credits.index.refunded')
    end

    private

    def check_requested
      raise I18n.t('credits.refund.requested_refund') if @backer.requested_refund
    end

    def check_refunded
      raise I18n.t('credits.refund.refunded') if @backer.refunded
    end

    def check_total_of_credits
      unless @backer.user.credits >= @backer.value
        raise I18n.t('credits.refund.no_credits')
      end
    end

    def check_can_refund
      raise I18n.t('credits.refund.cannot_refund') unless @backer.can_refund?
    end
  end
end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
catarse_core-1.0.0.beta app/business/catarse/credits/refund.rb