Module: Teamwork::Client::Project

Included in:
Teamwork::Client
Defined in:
lib/teamwork/client/project.rb

Instance Method Summary collapse

Instance Method Details

#create_project(options = {}) ⇒ Object

POST a new project Return Teamwork::Thing



92
93
94
# File 'lib/teamwork/client/project.rb', line 92

def create_project(options = {})
  object_from_response(:post, "projects", "project", project: options)
end

#delete_project(id) ⇒ Object

DELETE a current project Return Boolean



104
105
106
# File 'lib/teamwork/client/project.rb', line 104

def delete_project(id)
  send(:delete, "projects/#{id}")
end

#project(id) ⇒ Object

GET a single project Return Teamwork::Thing



78
79
80
# File 'lib/teamwork/client/project.rb', line 78

def project(id)
  object_from_response(:get, "project/#{id}", "project")
end

#project_activity(project_id, options = {}) ⇒ Object

GET the recent activity stream for a given project Return [Teamwork::Thing]



8
9
10
# File 'lib/teamwork/client/project.rb', line 8

def project_activity(project_id, options = {})
  objects_from_response(:get, "projects/#{project_id}/latestActivity", "activity", options.merge({maxItems: 50}))
end

#project_companies(project_id) ⇒ Object

GET companies on a project params:

project_id: UnsignedInt

Return [Teamwork::Thing]



55
56
57
# File 'lib/teamwork/client/project.rb', line 55

def project_companies(project_id)
  objects_from_response(:get, "projects/#{project_id}/companies", "people")
end

#project_files(project_id) ⇒ Object

GET files on a project Unfortunately the API returns a project with the associated files as a key in the hash. So lets get the files out after. params:

project_id: UnsignedInt

Return [Teamwork::Thing]



39
40
41
# File 'lib/teamwork/client/project.rb', line 39

def project_files(project_id)
  object_from_response(:get, "projects/#{project_id}/files", "project").files.map { |file| Teamwork::Thing.new(file) }
end

#project_messages(project_id) ⇒ Object

GET messages on a project params:

project_id: UnsignedInt

Return [Teamwork::Thing]



47
48
49
# File 'lib/teamwork/client/project.rb', line 47

def project_messages(project_id)
  objects_from_response(:get, "projects/#{project_id}/posts", "posts")
end

#project_people(project_id) ⇒ Object

GET people on a project params:

project_id: UnsignedInt

Return [Teamwork::Thing]



29
30
31
# File 'lib/teamwork/client/project.rb', line 29

def project_people(project_id)
  objects_from_response(:get, "projects/#{project_id}/people", "people")
end

#project_timers(project_id, options = {}) ⇒ Object

GET time entries for the project options:

page: UnsignedInt
fromdate: YYYYMMDD
fromtime: HH:MM
todate: YYYYMMDD
totime: HH:MM
sortorder: (ASC, DESC) (defaults to ascending order by date (oldest to newest))

Return [Teamwork::Thing]



21
22
23
# File 'lib/teamwork/client/project.rb', line 21

def project_timers(project_id, options = {})
  objects_from_response(:get, "projects/#{project_id}/time_entries", "time-entries", options)
end

#projects(options = {}) ⇒ Object

GET a list of projects Options:

status: (ALL, ACTIVE, ARCHIVED)
updatedAfterDate: YYYYMMDD
updatedAfterTime: HH:MM
createdAfterDate: YYYYMMDD
createdAfterTime: HH:MM
includePeople: boolean
orderby: (name, companyName, lastActivityDate)
starred: true
page: UnsignedInt

Return [Teamwork::Thing]



71
72
73
74
# File 'lib/teamwork/client/project.rb', line 71

def projects(options = {})
  url = options[:starred].nil? ? "projects" : "projects/starred"
  objects_from_response(:get, url, "projects", options)
end

#toggle_project_star(id, star: true) ⇒ Object

PUT a start to a project Return Boolean



84
85
86
87
# File 'lib/teamwork/client/project.rb', line 84

def toggle_project_star(id, star: true)
  url = star ? "projects/#{id}/star" : "projects/#{id}/unstar"
  object_from_response(:put, url, "project", project: options)
end

#update_project(id, options = {}) ⇒ Object

PUT a current project Return Teamwork::Thing



98
99
100
# File 'lib/teamwork/client/project.rb', line 98

def update_project(id, options = {})
  object_from_response(:put, "projects/#{id}", "project", project: options)
end