class Harvest::ResourceFactory

Public Instance Methods

client(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 100
def client(data)
  data ||= {}
  convert_dates(Struct::ResourceClient.new(data)) unless data.nil?
end
company(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 22
def company(data)
  data ||= {}
  Struct::Company.new(data)
end
estimate(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 27
def estimate(data)
  data ||= {}
  convert_estimate_line_items(convert_client(Struct::Estimate.new(data)))
end
estimate_item_category(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 42
def estimate_item_category(data)
  data ||= {}
  Struct::EstimateItemCategory.new(data)
end
estimate_line_item(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 32
def estimate_line_item(data)
  data ||= {}
  Struct::EstimateLineItem.new(data)
end
estimate_message(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 37
def estimate_message(data)
  data ||= {}
  Struct::EstimateMessage.new(data)
end
expense(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 52
def expense(data)
  data ||= {}
  Struct::Expense.new(data)
end
expense_category(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 47
def expense_category(data)
  data ||= {}
  Struct::ExpenseCategory.new(data)
end
invoice(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 57
def invoice(data)
  data ||= {}
  Struct::Invoice.new(data)
end
invoice_item_category(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 77
def invoice_item_category(data)
  data ||= {}
  Struct::InvoiceItemCategory.new(data)
end
invoice_line_item(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 62
def invoice_line_item(data)
  data ||= {}
  Struct::InvoiceLineItem.new(data)
end
invoice_message(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 67
def invoice_message(data)
  data ||= {}
  Struct::InvoiceMessage.new(data)
end
invoice_payment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 72
def invoice_payment(data)
  data ||= {}
  Struct::InvoicePayment.new(data)
end
message_recipient(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 17
def message_recipient(data)
  data ||= {}
  Struct::MessageRecipient.new(data)
end
project(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 95
def project(data)
  data ||= {}
  convert_dates(Struct::Project.new(data)) unless data.nil?
end
project_assignment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 82
def project_assignment(data)
  data ||= {}
  unless data.nil?
    convert_dates(
      convert_project_client(
        convert_task_assignments(
          Struct::ProjectAssignment.new(data)
        )
      )
    )
  end
end
resource(klass, data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 12
def resource(klass, data)
  data ||= {}
  send(klass.to_sym, data)
end
task(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 110
def task(data)
  data ||= {}
  convert_dates(Struct::Task.new(data)) unless data.nil?
end
task_assignment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 105
def task_assignment(data)
  data ||= {}
  convert_dates(convert_task(Struct::TaskAssignment.new(data))) unless data.nil?
end
time_entry(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 130
def time_entry(data)
  data ||= {}
  convert_dates(
    convert_project_client(
      convert_task_assignment(
        convert_task(
          convert_user_assignment(
            convert_user(
              convert_external_reference(
                Struct::TimeEntry.new(data)
              )
            )
          )
        )
      )
    )
  )
end
time_entry_external_reference(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 125
def time_entry_external_reference(data)
  data ||= {}
  Struct::TimeEntryExternalReference.new(data)
end
user(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 115
def user(data)
  data ||= {}
  convert_dates(Struct::User.new(data)) unless data.nil?
end
user_assignment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 120
def user_assignment(data)
  data ||= {}
  convert_dates(Struct::UserAssignment.new(data)) unless data.nil?
end

Private Instance Methods

convert_client(data) click to toggle source

@param data [Struct] passed a struct which contains an attribute client

# File lib/harvest/resourcefactory.rb, line 196
def convert_client(data)
  data.client = client(data.client)
  data
end
convert_dates(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 210
def convert_dates(data)
  %i[created_at updated_at sent_at accepted_at declined_at].each do |key|
    if data.members.include?(key) && !data.method(key).call.nil?
      data.method("#{key}=").call(DateTime.strptime(data.method(key).call))
    end
  end
  %i[spent_date].each do |key|
    if data.members.include?(key) && !data.method(key).call.nil?
      data.method("#{key}=").call(Date.strptime(data.method(key).call))
    end
  end
  data
end
convert_estimate_line_items(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 151
def convert_estimate_line_items(data)
  unless data.line_items.nil?
    data.line_items = data.line_items.map { |ta| estimate_line_item(ta) }
  end
  data
end
convert_external_reference(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 158
def convert_external_reference(data)
  data.external_reference = time_entry_external_reference(data.external_reference)
  data
end
convert_project(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 201
def convert_project(data)
  data.project = project(data.project)
  data
end
convert_project_client(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 206
def convert_project_client(data)
  convert_project(convert_client(data))
end
convert_task(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 189
def convert_task(data)
  data.task ||= {}
  data.task = task(data.task) unless data.task.nil?
  data
end
convert_task_assignment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 175
def convert_task_assignment(data)
  data.task_assignment ||= {}

  data.task_assignment = task_assignment(data.task_assignment) unless data.task_assignment.nil?
  data
end
convert_task_assignments(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 182
def convert_task_assignments(data)
  unless data.task_assignments.nil?
    data.task_assignments = data.task_assignments.map { |ta| task_assignment(ta) }
  end
  data
end
convert_user(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 163
def convert_user(data)
  data.user ||= {}
  data.user = user(data.user) unless data.nil?
  data
end
convert_user_assignment(data) click to toggle source
# File lib/harvest/resourcefactory.rb, line 169
def convert_user_assignment(data)
  data.user_assignment ||= {}
  data.user_assignment = user_assignment(data.user_assignment) unless data.nil?
  data
end