147 lines
3.9 KiB
Ruby
Executable File
147 lines
3.9 KiB
Ruby
Executable File
class PaymentsController < ApplicationController
|
|
load_and_authorize_resource :payment
|
|
#load_and_authorize_resource :user, :through => :payment
|
|
before_filter :authenticate_user!
|
|
|
|
# Load users and certs based on current ability
|
|
before_filter do
|
|
@users = User.where(:hidden => false).where("member_level > 10").accessible_by(current_ability).sort_by(&:name_with_payee_and_member_level)
|
|
end
|
|
|
|
before_filter :only => [:create, :update] do
|
|
@payment.created_by = current_user.id
|
|
end
|
|
|
|
# GET /payments
|
|
# GET /payments.json
|
|
def index
|
|
@payments = @payments.order("date DESC")
|
|
@graph = { :members => chart("members"),
|
|
:total => chart("total"),
|
|
:basic => chart("basic"),
|
|
:associate => chart("associate")}
|
|
|
|
respond_to do |format|
|
|
format.html # index.html.erb
|
|
format.json { render :json => @payments }
|
|
end
|
|
end
|
|
|
|
# Private method for index charts
|
|
def chart name
|
|
chart_name = name || "total"
|
|
if chart_name == "total"
|
|
chart_type = [25, 50, 100]
|
|
elsif chart_name == "members"
|
|
chart_type = [25, 50, 100]
|
|
elsif chart_name == "basic"
|
|
chart_type = [50]
|
|
elsif chart_name == "associate"
|
|
chart_type = [25]
|
|
else
|
|
chart_type = []
|
|
end
|
|
|
|
payment_months = @payments.sort_by(&:date).group_by{ |p| p.date.beginning_of_month }
|
|
@payments_by_month = []
|
|
payment_months.each do |month|
|
|
# Only grab the last year from today
|
|
if month.first > (Date.today - 1.year) && month.first < Date.today
|
|
# Calculate sum of amounts for each month and store at end of month array
|
|
@payments_by_month << [month.first.to_time.to_i*1000, month.last.sum{|p|
|
|
amount = amount_or_level(p)
|
|
if chart_type.include?(amount)
|
|
if chart_name == "members"
|
|
1 # Output 1 to count members
|
|
else
|
|
amount # Output dollars to count amount
|
|
end
|
|
else
|
|
0
|
|
end
|
|
}]
|
|
end
|
|
end
|
|
|
|
return @payments_by_month
|
|
end
|
|
|
|
def amount_or_level p
|
|
if p.amount
|
|
return p.amount.to_i
|
|
else
|
|
if p.user
|
|
Rails.logger.info p.user.member_level
|
|
return p.user.member_level.to_i
|
|
else
|
|
Rails.logger.info p.inspect
|
|
Rails.logger.info p.user.inspect
|
|
return 0
|
|
end
|
|
end
|
|
end
|
|
|
|
# GET /payments/1
|
|
# GET /payments/1.json
|
|
def show
|
|
respond_to do |format|
|
|
format.html # show.html.erb
|
|
format.json { render :json => @payment }
|
|
end
|
|
end
|
|
|
|
# GET /payments/new
|
|
# GET /payments/new.json
|
|
def new
|
|
respond_to do |format|
|
|
format.html # new.html.erb
|
|
format.json { render :json => @payment }
|
|
end
|
|
end
|
|
|
|
# GET /payments/1/edit
|
|
def edit
|
|
end
|
|
|
|
# POST /payments
|
|
# POST /payments.json
|
|
def create
|
|
Rails.logger.warn "payment:"
|
|
Rails.logger.warn @payment.inspect
|
|
respond_to do |format|
|
|
if @payment.save
|
|
format.html { redirect_to payments_url, :notice => 'Payment was successfully created.' }
|
|
format.json { render :json => @payment, :status => :created, :location => @payment }
|
|
else
|
|
format.html { render :action => "new" }
|
|
format.json { render :json => @payment.errors, :status => :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# PUT /payments/1
|
|
# PUT /payments/1.json
|
|
def update
|
|
respond_to do |format|
|
|
if @payment.update_attributes(params[:payment])
|
|
format.html { redirect_to payments_url, :notice => 'Payment was successfully updated.' }
|
|
format.json { head :no_content }
|
|
else
|
|
format.html { render :action => "edit" }
|
|
format.json { render :json => @payment.errors, :status => :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /payments/1
|
|
# DELETE /payments/1.json
|
|
def destroy
|
|
@payment.destroy
|
|
|
|
respond_to do |format|
|
|
format.html { redirect_to payments_url }
|
|
format.json { head :no_content }
|
|
end
|
|
end
|
|
end
|