jam-cloud/admin/app/admin/jam_track_right.rb

87 lines
2.6 KiB
Ruby

require 'jam_ruby/recurly_client'
ActiveAdmin.register JamRuby::JamTrackRight, :as => 'JamTrackRights' do
menu :label => 'Purchased JamTracks', :parent => 'JamTracks'
config.sort_order = 'updated_at DESC'
config.batch_actions = false
#form :partial => 'form'
index do
default_actions
column "Order" do |right|
link_to("Place", order_admin_jam_track_right_path(right)) + " | " +
link_to("Refund", refund_admin_jam_track_right_path(right))
end
column "Last Name" do |right|
right.user.last_name
end
column "First Name" do |right|
right.user.first_name
end
column "Jam Track" do |right|
link_to(right.jam_track.name, admin_jam_track_right_path(right.jam_track))
# right.jam_track
end
column "Plan Code" do |right|
right.jam_track.plan_code
end
end
form do |f|
f.inputs 'New Jam Track Right' do
f.input :jam_track, :required=>true, collection: JamTrack.all, include_blank: false
f.input :user, :required=>true, collection: User.all, include_blank: false
end
f.actions
end
member_action :order, :method => :get do
right = JamTrackRight.where("id=?",params[:id]).first
user = right.user
jam_track = right.jam_track
client = RecurlyClient.new
billing_info = {
first_name: user.first_name,
last_name: user.last_name,
address1: 'Test Address 1',
address2: 'Test Address 2',
city: user.city,
state: user.state,
country: user.country,
zip: '12345',
number: '4111-1111-1111-1111',
month: '08',
year: '2017',
verification_value: '111'
}
begin
client.find_or_create_account(user, billing_info)
client.place_order(user, jam_track, nil, nil)
rescue RecurlyClientError=>x
redirect_to admin_jam_track_rights_path, notice: "Could not order #{jam_track} for #{user.to_s}: #{x.errors.inspect}"
else
redirect_to admin_jam_track_rights_path, notice: "Placed order of #{jam_track} for #{user.to_s}."
end
end
member_action :refund, :method => :get do
right = JamTrackRight.where("id=?",params[:id]).first
client = RecurlyClient.new
begin
client.refund_user_subscription(right.user, right.jam_track)
rescue RecurlyClientError=>x
redirect_to admin_jam_track_rights_path, notice: "Could not issue refund on #{right.jam_track} for #{right.user.to_s}: #{x.errors.inspect}"
else
redirect_to admin_jam_track_rights_path, notice: "Issued full refund on #{right.jam_track} for #{right.user.to_s}"
end
end
end