Moving Fat from the controller to the Customer Model

This commit is contained in:
2016-01-07 14:59:51 -05:00
parent 515e7fb691
commit 1a6c4c1981
4 changed files with 34 additions and 24 deletions

View File

@@ -11,17 +11,6 @@
class QboController < ApplicationController
unloadable
# Load OAuth Token
QB_KEY = Setting.plugin_redmine_qbo['settingsOAuthConsumerKey']
QB_SECRET = Setting.plugin_redmine_qbo['settingsOAuthConsumerSecret']
$qb_oauth_consumer = OAuth::Consumer.new(QB_KEY, QB_SECRET, {
:site => "https://oauth.intuit.com",
:request_token_path => "/oauth/v1/get_request_token",
:authorize_url => "https://appcenter.intuit.com/Connect/Begin",
:access_token_path => "/oauth/v1/get_access_token"
})
#
# Called when the QBO Top Menu us shown
#
@@ -34,7 +23,7 @@ class QboController < ApplicationController
#
def authenticate
callback = request.base_url + qbo_oauth_callback_path
token = $qb_oauth_consumer.get_request_token(:oauth_callback => callback)
token = Qbo.get_oauth_consumer.get_request_token(:oauth_callback => callback)
session[:qb_request_token] = token
redirect_to("https://appcenter.intuit.com/Connect/Begin?oauth_token=#{token.token}") and return
end
@@ -71,18 +60,7 @@ class QboController < ApplicationController
#
def sync
if Qbo.exists? then
qbo = Qbo.first
oauth_client = OAuth::AccessToken.new($qb_oauth_consumer, qbo.token, qbo.secret)
service = Quickbooks::Service::Customer.new(:company_id => qbo.realmId, :access_token => oauth_client)
customers = service.all
#update the customer table
customers.each { |customer|
qbo_customer = QboCustomers.find_or_create_by(id: customer.id)
qbo_customer.name = customer.display_name
qbo_customer.save!
}
QboCustomers.update_all
end
redirect_to qbo_path(:redmine_qbo), :flash => { :notice => "Successfully synced to Quickbooks" }

View File

@@ -11,4 +11,23 @@
class Qbo < ActiveRecord::Base
unloadable
validates_presence_of :token, :secret, :realmId, :token_expires_at, :reconnect_token_at
QB_KEY = Setting.plugin_redmine_qbo['settingsOAuthConsumerKey']
QB_SECRET = Setting.plugin_redmine_qbo['settingsOAuthConsumerSecret']
$qb_oauth_consumer = OAuth::Consumer.new(QB_KEY, QB_SECRET, {
:site => "https://oauth.intuit.com",
:request_token_path => "/oauth/v1/get_request_token",
:authorize_url => "https://appcenter.intuit.com/Connect/Begin",
:access_token_path => "/oauth/v1/get_access_token"
})
def self.get_auth_token
qbo = first
return OAuth::AccessToken.new($qb_oauth_consumer, qbo.token, qbo.secret)
end
def self.get_oauth_consumer
return $qb_oauth_consumer
end
end

View File

@@ -12,4 +12,16 @@ class QboCustomers < ActiveRecord::Base
unloadable
has_many :issues
attr_accessible :name
def self.update_all
qbo = Qbo.first
service = Quickbooks::Service::Customer.new(:company_id => qbo.realmId, :access_token => Qbo.get_auth_token)
# Update the customer table
service.all.each { |customer|
qbo_customer = QboCustomers.find_or_create_by(id: customer.id)
qbo_customer.name = customer.display_name
qbo_customer.save!
}
end
end

View File

@@ -28,4 +28,5 @@ Redmine::Plugin.register :redmine_qbo do
# Register QBO top menu item
menu :top_menu, :qbo, { :controller => 'qbo', :action => 'index' }, :caption => 'Quickbooks'
end