Skip to content

Instantly share code, notes, and snippets.

@michaelRM
Created June 11, 2012 19:32
Show Gist options
  • Save michaelRM/2912165 to your computer and use it in GitHub Desktop.
Save michaelRM/2912165 to your computer and use it in GitHub Desktop.
Attempting to allow purchases within groups. TODO create credit card form new.haml
class GroupsController < ApplicationController
skip_before_filter :login_required , :only => [:index,:show,:join]
before_filter :pending? , :only => [:index,:show]
before_filter :suspended? , :only => [:index,:show]
before_filter :find_group, :only => [:edit,:update,:show,:destroy,:manage_docs,:join]
before_filter :require_group_admin, :only => [:edit,:update,:destroy]
def index
q = params[:q]
page = params[:page]
@featured = Group.where(:featured => true).all
search = Group.search do
order_by :created_at, :desc
with :featured , false
fulltext q if q
paginate :page => page if page
end
solr_pagination search
@groups = search.results
json_only_action
end
def join
unless logged_in?
session[:group_forward] = @group.id
return redirect_to '/login'
else
if @group.add_student _user
render :action => 'new'
@purchase = @group.purchases.new
if @purchase.errors.empty?
UserMailer.group_code(_user,@group).deliver
else
render :new, :notice => "Purchase failed: #{@purchase.message}"
end
end
end
end
def update
@group.update_attributes params[:group]
redirect_to group_url @group
end
def show
if logged_in?
@enrolled = @group.member?(_user)
@unique_code = _user.group_code @group if @enrolled
end
respond_to do |f|
f.json
end
end
protected
def find_group
@group = Group.find params[:id]
end
def require_group_admin
access = @group.admin? _user
unless access
url = group_url @group
return redirect_to url
end
end
end
= form_for @order do |f|
= f.error_messages
%p
= f.label :first_name
%br/
= f.text_field :first_name
%p
= f.label :last_name
%br/
= f.text_field :last_name
%p
= f.label :card_type
%br/
= f.select :card_type, [["Visa", "visa"], ["MasterCard", "master"], ["Discover", "discover"], ["American Express", "american_express"]]
%p
= f.label :card_number
%br/
= f.text_field :card_number
%p
= f.label :card_verification, "Card Verification Value (CVV)"
%br/
= f.text_field :card_cvv
%p
= f.label :card_expires_on
%br/
= f.date_select :card_expires_on, :discard_day => true, :start_year => Date.today.year, :end_year => (Date.today.year+10), :add_month_numbers => true
%p= f.submit "Submit"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment