class Skr::Jobs::FreshBooks::Retrieve

Public Class Methods

from_request(req) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 38
def self.from_request(req)
    fb = ::FreshBooks::Client.new("#{req['domain']}.freshbooks.com", req['api_key'])
    errors = nil
    begin
        # make a test api call to validate authentication
        resp = fb.client.list(per_page: 1)
        errors = {access: resp['error']} if resp['error']
    rescue SocketError
        errors = {network: 'Unable to resolve account'}
    end
    if errors
        return {success: false, data: {}, errors: errors}
    else
        job = self.perform_later(req['domain'], req['api_key'])
        return {
            success: true, message: 'Import Validation Started', data: {
                job: Lanes::Job.status_for_id(job.job_id)
            }
        }
    end

end

Public Instance Methods

perform(account, token) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 31
def perform(account, token)
    process_each_type(account, token) do | output, index |
        save_progress(output, (index+1).to_f / STEPS.length)
    end
    self
end
process_client(rec) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 7
def process_client(rec)
    rec.slice(*%w{ client_id organization first_name last_name})
end
process_invoice(rec) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 15
def process_invoice(rec)
    rec.slice(*%w{invoice_id client_id number amount po_number notes status})
end
process_project(rec) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 11
def process_project(rec)
    rec.slice(*%w{project_id name description})
end
process_staff(r) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 27
def process_staff(r)
    r.slice(*%w{staff_id username first_name last_name email})
end
process_time_entry(rec) click to toggle source
# File lib/skr/jobs/fresh_books/retrieve.rb, line 19
def process_time_entry(rec)
    if rec['billed'] == '1'
        nil
    else
        rec.slice(*%w{ time_entry_id staff_id project_id hours date notes})
    end
end