jam-cloud/web/app/controllers/api_recurly_controller.rb

155 lines
4.9 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
end
respond_with @account
rescue Recurly::Error, NoMethodError => e
render :json => { :message => e.inspect }, :status => 404
end
# get Recurly account
def get_account
@account = Recurly::Account.find(current_user.reculry_code)
respond_with @account
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
end
# update Recurly account
def update_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.get(current_user.recurly_code)
end
@account.first_name = current_user.first_name
@account.last_name = current_user.last_name
@account.email = current_user.email
@account.update
if @account.errors.any?
response.status = 404
else
current_user.recurly_code = @account.account_code
current_user.save
end
respond_with @account
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
end
# get subscription
def get_subscription
@account = Recurly::Acount.find(current_user.reculry_code)
respond_with @account.subscriptions.last
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_GET_ACCOUNT_ERROR}, :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
respond_with @account.billing_info
end
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_ERROR}, :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::Acount.find(current_user.reculry_code)
@account.billing_info = params
@account.billing_info.save
if @account.erros.any?
response.status = :unprocessable_entity
end
respond_with @account
end
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_ERROR}, :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.erros.any?
response.status = :unprocessable_entity
end
respond_with @account
end
rescue Recurly::Error, NoMethodError => e
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
end
end