Class: Podio::Contract

Inherits:
ActivePodio::Base show all
Includes:
ActivePodio::Updatable
Defined in:
lib/podio/models/contract.rb

Instance Attribute Summary

Attributes inherited from ActivePodio::Base

#attributes, #error_code, #error_message, #error_parameters, #error_propagate

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ActivePodio::Base

#==, #[], #[]=, #api_friendly_ref_type, #as_json, collection, delegate_to_hash, handle_api_errors_for, has_many, has_one, #hash, #initialize, list, member, #new_record?, #persisted?, property, #to_param

Constructor Details

This class inherits a constructor from ActivePodio::Base

Class Method Details

.calculate_price(contract_id, attributes) ⇒ Object



111
112
113
114
115
116
117
118
# File 'lib/podio/models/contract.rb', line 111

def calculate_price(contract_id, attributes)
  response = Podio.connection.post do |req|
    req.url "/contract/#{contract_id}/price"
    req.body = attributes
  end

  response.body
end

.create(attributes) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/podio/models/contract.rb', line 77

def create(attributes)
  response = Podio.connection.post do |req|
    req.url "/contract/"
    req.body = attributes
  end

  member response.body
end

.create_payment(contract_id, query_string) ⇒ Object



120
121
122
123
124
125
126
127
# File 'lib/podio/models/contract.rb', line 120

def create_payment(contract_id, query_string)
  response = Podio.connection.post do |req|
    req.url "/contract/#{contract_id}/payment"
    req.body = {:query_string => query_string}
  end

  response.body
end

.delete(id) ⇒ Object



107
108
109
# File 'lib/podio/models/contract.rb', line 107

def delete(id)
  Podio.connection.delete("/contract/#{id}").body
end

.end(contract_id, attributes) ⇒ Object



98
99
100
101
102
103
104
105
# File 'lib/podio/models/contract.rb', line 98

def end(contract_id, attributes)
  response = Podio.connection.post do |req|
    req.url "/contract/#{contract_id}/end"
    req.body = attributes
  end

  response.body
end

.find(contract_id) ⇒ Object



61
62
63
# File 'lib/podio/models/contract.rb', line 61

def find(contract_id)
  member Podio.connection.get("/contract/#{contract_id}").body
end

.find_all_mineObject



65
66
67
# File 'lib/podio/models/contract.rb', line 65

def find_all_mine
  list Podio.connection.get("/contract/").body
end

.find_for_org(org_id) ⇒ Object



69
70
71
# File 'lib/podio/models/contract.rb', line 69

def find_for_org(org_id)
  list Podio.connection.get("/contract/org/#{org_id}/").body
end

.find_users_for_org(org_id) ⇒ Object



73
74
75
# File 'lib/podio/models/contract.rb', line 73

def find_users_for_org(org_id)
  member Podio.connection.get("/contract/org/#{org_id}/user").body
end

.start(contract_id) ⇒ Object



94
95
96
# File 'lib/podio/models/contract.rb', line 94

def start(contract_id)
  Podio.connection.post("/contract/#{contract_id}/start").body
end

.update(contract_id, attributes) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/podio/models/contract.rb', line 86

def update(contract_id, attributes)
  response = Podio.connection.put do |req|
    req.url "/contract/#{contract_id}"
    req.body = attributes
  end
  response.status
end

Instance Method Details

#calculate_priceObject



40
41
42
43
44
# File 'lib/podio/models/contract.rb', line 40

def calculate_price
  pricing = self.class.calculate_price(self.contract_id, self.attributes.slice(:full, :premium_emp_network, :premium_space_ids))
  self.clear_price
  self["price"] = pricing
end

#create_payment(query_string) ⇒ Object



46
47
48
# File 'lib/podio/models/contract.rb', line 46

def create_payment(query_string)
  self.class.create_payment(self.contract_id, query_string)
end

#deleteObject



50
51
52
# File 'lib/podio/models/contract.rb', line 50

def delete
  self.class.delete(self.id)
end

#end(attributes) ⇒ Object



54
55
56
# File 'lib/podio/models/contract.rb', line 54

def end(attributes)
  self.class.end(self.id, attributes)
end

#premium_space_ids=(values) ⇒ Object



32
33
34
# File 'lib/podio/models/contract.rb', line 32

def premium_space_ids=(values)
  self[:premium_space_ids] = (values || []).map(&:to_i)
end

#updateObject



36
37
38
# File 'lib/podio/models/contract.rb', line 36

def update
  self.class.update(self.contract_id, self.attributes.except(:premium_spaces))
end