6772312ea7
The primary license of the project is changing to: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later with some specific files to be licensed under the one of two licenses: CC0-1.0 LGPL-3.0-or-later This commit is one of the many steps to relicense the entire codebase. Documentation granting permission for this relicensing (from all past contributors who hold copyrights) is on file with Software Freedom Conservancy, Inc.
94 lines
2.6 KiB
Ruby
94 lines
2.6 KiB
Ruby
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
|
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
|