Class: DealRedemptions::RedeemController

Inherits:
ApplicationController show all
Defined in:
app/controllers/deal_redemptions/redeem_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/controllers/deal_redemptions/redeem_controller.rb', line 11

def create
  @redemption = DealRedemptions::Redemption.new(redemption_params)

  redeem = DealRedemptions::Redemptions::Redeem.new(@company)
  redeem_codes = DealRedemptions::RedeemCode.find_all_by_code params[:redeem_codes]

  if redeem_codes.count > 0
    redeem.validate_redeem_codes redeem_codes do |validate|
      # Returns true, then all codes validated
      if validate
        begin
          ActiveRecord::Base.transaction do
            # Save redemption
            @redeem = DealRedemptions::Redemption.create(redemption_params)
            # Save redemption codes
            redeem_codes.each do |code|
              code.redemption_id = @redeem.id
              code.status = 2
              code.save
            end
          end

          # Save to mailing list if opt in
          if params[:redemption][:mailing_list]
            begin
              redemption = params[:redemption]
              DealRedemptions::MailingList.create(
                first_name: redemption[:first_name],
                last_name: redemption[:last_name],
                email_address: redemption[:email_address]
              )
            end
          end

          # Send confirmation email
          DealRedemptions::RedemptionMailer.confirmation(@redemption).deliver

          redirect_to thank_you_path and return
        rescue
          flash[:notice] = 'Something went wrong. Please try again.'
          render :new
        end
      else
        flash[:notice] = 'Please enter redemption codes that have not been previously used.'
        render :new
      end
    end
  else
    flash[:notice] = 'Please make sure to only redeem valid redemption codes.'
    render :new
  end
end

#newObject



7
8
9
# File 'app/controllers/deal_redemptions/redeem_controller.rb', line 7

def new
  @redemption = DealRedemptions::Redemption.new
end

#thankyouObject

Thank you page after successful redemption



65
66
# File 'app/controllers/deal_redemptions/redeem_controller.rb', line 65

def thankyou
end

#validate_codeObject

Validate valid redemption codes



69
70
71
72
73
74
75
76
# File 'app/controllers/deal_redemptions/redeem_controller.rb', line 69

def validate_code
  redeem_code = DealRedemptions::RedeemCode.find_by_code(params[:code])
  if redeem_code
    @redeem = redeem_code.validate_code(params)
  else
    @redeem = false
  end
end