166 lines
5.3 KiB
Ruby
166 lines
5.3 KiB
Ruby
class ApiRecurlyController < ApiController
|
|
before_filter :api_signed_in_user
|
|
respond_to :json
|
|
|
|
# create Recurly account
|
|
def create_account
|
|
#logger.debug(params[:billing_info])
|
|
if current_user.recurly_code.nil?
|
|
@account = Recurly::Account.create(
|
|
account_code: current_user.id,
|
|
email: current_user.email,
|
|
first_name: current_user.first_name,
|
|
last_name: current_user.last_name,
|
|
address: {
|
|
city: current_user.city,
|
|
state: current_user.state,
|
|
country: current_user.country
|
|
}
|
|
)
|
|
else
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
end
|
|
|
|
if @account.errors.any?
|
|
response.status = 404
|
|
else
|
|
current_user.recurly_code = @account.account_code
|
|
current_user.save
|
|
|
|
@account.billing_info = params[:billing_info]
|
|
@account.billing_info.save
|
|
|
|
#logger.debug @account.to_json
|
|
end
|
|
render :json=>@account.to_json
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { :message => e.inspect, error: e }, :status => 404
|
|
end
|
|
|
|
def delete_account
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
if @account.present?
|
|
@account.destroy
|
|
end
|
|
render :json=>{}, :status=>200
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
# get Recurly account
|
|
def get_account
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
render :json=>@account.to_json
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
# update Recurly account
|
|
def update_account
|
|
safe_retrieve_account()
|
|
@account.first_name = current_user.first_name
|
|
@account.last_name = current_user.last_name
|
|
@account.email = current_user.email
|
|
@account.save
|
|
|
|
if @account.errors.any?
|
|
response.status = 404
|
|
else
|
|
current_user.recurly_code = @account.account_code
|
|
current_user.save
|
|
end
|
|
render :json=>@account.to_json
|
|
rescue Recurly::Error, NoMethodError => e
|
|
raise e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
# get subscription
|
|
def get_subscription
|
|
safe_retrieve_account()
|
|
render :json=>@account.subscriptions.last.to_json
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
# create subscription
|
|
def create_subscription
|
|
end
|
|
|
|
# get Billing Information
|
|
def billing_info
|
|
if current_user.recurly_code.nil?
|
|
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
|
else
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
#logger.debug @account
|
|
render json: @account.billing_info
|
|
end
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
# update Billing Information
|
|
def update_billing_info
|
|
if current_user.recurly_code.nil?
|
|
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
|
else
|
|
if params[:first_name].blank? or params[:last_name].blank? or params[:number].blank? or params[:year].blank? or params[:month].blank? or params[:verification_value].blank?
|
|
render json: { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
|
end
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
@account.billing_info = params
|
|
@account.billing_info.save
|
|
|
|
if @account.errors.any?
|
|
response.status = :unprocessable_entity
|
|
end
|
|
|
|
render json: @account
|
|
end
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
def place_order
|
|
if current_user.recurly_code.nil?
|
|
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
|
else
|
|
if params[:first_name].blank? or params[:last_name].blank? or params[:number].blank? or params[:year].blank? or params[:month].blank? or params[:verification_value].blank?
|
|
render json: { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
|
end
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
@account.billing_info = params
|
|
@account.billing_info.save
|
|
|
|
# create subscription.
|
|
|
|
if @account.errors.any?
|
|
response.status = :unprocessable_entity
|
|
end
|
|
|
|
render json: @account
|
|
end
|
|
rescue Recurly::Error, NoMethodError => e
|
|
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
|
end
|
|
|
|
private
|
|
def safe_retrieve_account
|
|
if current_user.recurly_code.nil?
|
|
@account = Recurly::Account.create(
|
|
account_code: current_user.id,
|
|
email: current_user.email,
|
|
first_name: current_user.first_name,
|
|
last_name: current_user.last_name,
|
|
address: {
|
|
city: current_user.city,
|
|
state: current_user.state,
|
|
country: current_user.country
|
|
}
|
|
)
|
|
else
|
|
@account = Recurly::Account.find(current_user.recurly_code)
|
|
end
|
|
end
|
|
end |