Class: Koudoku::SubscriptionsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/koudoku/subscriptions_controller.rb

Instance Method Summary collapse

Instance Method Details

#cancelObject



112
113
114
115
116
117
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 112

def cancel
  flash[:notice] = "You've successfully cancelled your subscription."
  @subscription.plan_id = nil
  @subscription.save
  redirect_to owner_subscription_path(@owner, @subscription)
end

#createObject



97
98
99
100
101
102
103
104
105
106
107
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 97

def create
  @subscription = ::Subscription.new(subscription_params)
  @subscription.user = @owner
  if @subscription.save
    flash[:notice] = "You've been successfully upgraded."
    redirect_to owner_subscription_path(@owner, @subscription)
  else
    flash[:error] = 'There was a problem processing this transaction.'
    render :new
  end
end

#current_ownerObject

the following two methods allow us to show the pricing table before someone has an account. by default these support devise, but they can be overriden to support others.



39
40
41
42
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 39

def current_owner
  # e.g. "self.current_user"
  send "current_#{Koudoku.subscriptions_owned_by.to_s}"
end

#editObject



119
120
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 119

def edit
end

#indexObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 49

def index

  # don't bother showing the index if they've already got a subscription.
  if current_owner and current_owner.subscription.present?
    redirect_to koudoku.edit_owner_subscription_path(current_owner, current_owner.subscription)
  end

  # Load all plans.
  @plans = ::Plan.order(:display_order).all
  
  # Don't prep a subscription unless a user is authenticated.
  unless no_owner?
    # we should also set the owner of the subscription here.
    @subscription = ::Subscription.new({Koudoku.owner_id_sym => @owner.id})
    # e.g. @subscription.user = @owner
    @subscription.send Koudoku.owner_assignment_sym, @owner
  end

end

#load_ownerObject



17
18
19
20
21
22
23
24
25
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 17

def load_owner
  unless params[:owner_id].nil?
    if current_owner.try(:id) == params[:owner_id].try(:to_i)
      @owner = current_owner
    else
      return unauthorized
    end
  end
end

#load_plansObject



8
9
10
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 8

def load_plans
  @plans = ::Plan.order(:price)
end

#load_subscriptionObject



31
32
33
34
35
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 31

def load_subscription
  ownership_attribute = (Koudoku.subscriptions_owned_by.to_s + "_id").to_sym
  @subscription = ::Subscription.where(ownership_attribute => current_owner.id).find_by_id(params[:id])
  return @subscription.present? ? @subscription : unauthorized
end

#newObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 69

def new
  if no_owner?

    if defined?(Devise)

      # by default these methods support devise.
      if current_owner
        redirect_to new_owner_subscription_path(current_owner, plan: params[:plan])
      else
        
      end
      
    else
      raise "This feature depends on Devise for authentication."
    end

  else
    @subscription = ::Subscription.new
    @subscription.plan = ::Plan.find(params[:plan])
  end
end

#no_owner?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 27

def no_owner?
  @owner.nil?
end

#redirect_to_sign_upObject



44
45
46
47
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 44

def 
  session["#{Koudoku.subscriptions_owned_by.to_s}_return_to"] = new_subscription_path(plan: params[:plan])
  redirect_to new_registration_path(Koudoku.subscriptions_owned_by.to_s)
end

#showObject



109
110
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 109

def show
end

#show_existing_subscriptionObject



91
92
93
94
95
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 91

def show_existing_subscription
  if @owner.subscription.present?
    redirect_to owner_subscription_path(@owner, @owner.subscription)
  end
end

#unauthorizedObject



12
13
14
15
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 12

def unauthorized
  render status: 401, template: "koudoku/subscriptions/unauthorized"
  false
end

#updateObject



122
123
124
125
126
127
128
129
130
# File 'app/controllers/koudoku/subscriptions_controller.rb', line 122

def update
  if @subscription.update_attributes(subscription_params)
    flash[:notice] = "You've successfully updated your subscription."
    redirect_to owner_subscription_path(@owner, @subscription)
  else
    flash[:error] = 'There was a problem processing this transaction.'
    render :edit
  end
end