94 lines
2.5 KiB
Ruby
94 lines
2.5 KiB
Ruby
|
module Nonprofits
|
||
|
class RecurringDonationsController < ApplicationController
|
||
|
include NonprofitHelper
|
||
|
|
||
|
before_filter :authenticate_nonprofit_user!, except: [:create]
|
||
|
|
||
|
# get /nonprofits/:nonprofit_id/recurring_donations
|
||
|
def index
|
||
|
@nonprofit = current_nonprofit
|
||
|
@panels_layout = true
|
||
|
respond_to do |format|
|
||
|
format.html
|
||
|
format.json do
|
||
|
# set dashboard params include externally active and failed
|
||
|
#TODO move into javascript
|
||
|
params[:active] = true
|
||
|
|
||
|
render json: QueryRecurringDonations.full_list(params[:nonprofit_id], params)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def export
|
||
|
begin
|
||
|
@nonprofit = current_nonprofit
|
||
|
@user = current_user_id
|
||
|
#TODO move into javascript
|
||
|
if params.key?(:active_and_not_failed)
|
||
|
params.delete(:active) if params.key?(:active)
|
||
|
params.delete(:failed) if params.key?(:failed)
|
||
|
end
|
||
|
|
||
|
[:active_and_not_failed, :active, :failed].each do |k|
|
||
|
if (params.key?(k))
|
||
|
params[k] = ActiveRecord::ConnectionAdapters::Column.value_to_boolean(params[k])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
params[:root_url] = root_url
|
||
|
|
||
|
ExportRecurringDonations::initiate_export(@nonprofit.id, params, current_user.id)
|
||
|
rescue => e
|
||
|
e
|
||
|
end
|
||
|
if e.nil?
|
||
|
flash[:notice] = "Your export was successfully initiated and you'll be emailed at #{current_user.email} as soon as it's available. Feel free to use the site in the meantime."
|
||
|
render json: {}, status: :ok
|
||
|
else
|
||
|
render json: e, status: :ok
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def show
|
||
|
@recurring_donation = current_recurring_donation
|
||
|
respond_to {|format| format.json}
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
UpdateRecurringDonations.cancel(params[:id], current_user.email)
|
||
|
json_saved current_recurring_donation
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
json_saved UpdateRecurringDonations
|
||
|
.update(current_recurring_donation, params[:recurring_donation])
|
||
|
end
|
||
|
|
||
|
# post /nonprofits/:nonprofit_id/recurring_donations
|
||
|
def create
|
||
|
if params[:recurring_donation][:token]
|
||
|
render_json{ InsertRecurringDonation.with_stripe(params[:recurring_donation]) }
|
||
|
elsif params[:recurring_donation][:direct_debit_detail_id]
|
||
|
render JsonResp.new(params[:recurring_donation]){|data|
|
||
|
requires(:amount).as_int
|
||
|
requires(:supporter_id, :nonprofit_id, :direct_debit_detail_id).as_int
|
||
|
optional(:dedication, :designation).as_string
|
||
|
optional(:campaign_id, :event_id).as_int
|
||
|
}.when_valid{|data|
|
||
|
InsertRecurringDonation.with_sepa(data)
|
||
|
}
|
||
|
else
|
||
|
render json: {}, status: 422
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def current_recurring_donation
|
||
|
@recurring_donation ||= current_nonprofit.recurring_donations.find params[:id]
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|