Class: Basecamp3::Todo

Inherits:
Model
  • Object
show all
Includes:
Concerns::Bucketable, Concerns::Commentable, Concerns::Creatorable, Concerns::Parentable, Concerns::Recordingable
Defined in:
lib/basecamp3/models/todo.rb

Overview

Constant Summary

REQUIRED_FIELDS =
%w(content)

Instance Attribute Summary collapse

Attributes included from Concerns::Commentable

#comments_count

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Concerns::Commentable

#comments

Methods included from Concerns::Recordingable

included

Methods included from Concerns::Parentable

#parent

Methods included from Concerns::Bucketable

#bucket

Methods included from Concerns::Creatorable

#creator

Methods inherited from Model

#initialize

Constructor Details

This class inherits a constructor from Basecamp3::Model

Instance Attribute Details

#contentObject

Returns the value of attribute content



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def content
  @content
end

#created_atObject

Returns the value of attribute created_at



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def created_at
  @created_at
end

#descriptionObject

Returns the value of attribute description



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def description
  @description
end

#due_onObject

Returns the value of attribute due_on



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def due_on
  @due_on
end

#idObject

Returns the value of attribute id



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def id
  @id
end

#starts_onObject

Returns the value of attribute starts_on



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def starts_on
  @starts_on
end

#statusObject

Returns the value of attribute status



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def status
  @status
end

#updated_atObject

Returns the value of attribute updated_at



11
12
13
# File 'lib/basecamp3/models/todo.rb', line 11

def updated_at
  @updated_at
end

Class Method Details

.all(bucket_id, parent_id, params = {}) ⇒ Array<Basecamp3::Todo>

Returns a paginated list of active TODOs.

Parameters:

  • params (Hash) (defaults to: {})

    additional parameters

Options Hash (params):

  • :status (String) — default: optional

    when set to archived or trashed, will return archived or trashed to-dos that are in this list

  • :completed (Boolean) — default: optional

    when set to true, will only return to-dos that are completed

  • :page (Integer) — default: optional

    to paginate results

Returns:



37
38
39
# File 'lib/basecamp3/models/todo.rb', line 37

def self.all(bucket_id, parent_id, params = {})
  Basecamp3.request.get("/buckets/#{bucket_id}/todolists/#{parent_id}/todos", params, Basecamp3::Todo)
end

.complete(bucket_id, id) ⇒ Boolean

Completes the TODO.

Parameters:

  • bucket_id (Integer)

    the id of the bucket

  • id (Integer)

    the id of the TODO

Returns:

  • (Boolean)


95
96
97
# File 'lib/basecamp3/models/todo.rb', line 95

def self.complete(bucket_id, id)
  Basecamp3.request.post("/buckets/#{bucket_id}/todos/#{id}/completion")
end

.create(bucket_id, parent_id, data) ⇒ Basecamp3::Todo

Creates a TODO.

Parameters:

  • bucket_id (Integer)

    the id of the bucket

  • parent_id (Integer)

    the id of the TODO list

  • data (Hash)

    the data to create a TODO with

  • params (Hash)

    a customizable set of options

Returns:



64
65
66
67
# File 'lib/basecamp3/models/todo.rb', line 64

def self.create(bucket_id, parent_id, data)
  self.validate_required(data)
  Basecamp3.request.post("/buckets/#{bucket_id}/todolists/#{parent_id}/todos", data, Basecamp3::Todo)
end

.find(bucket_id, id) ⇒ Basecamp3::Todo

Returns the TODO.

Parameters:

  • bucket_id (Integer)

    the id of the bucket

  • id (Integer)

    the id of the TODO

Returns:



47
48
49
# File 'lib/basecamp3/models/todo.rb', line 47

def self.find(bucket_id, id)
  Basecamp3.request.get("/buckets/#{bucket_id}/todos/#{id}", {}, Basecamp3::Todo)
end

.incomplete(bucket_id, id) ⇒ Boolean

Incompletes the TODO.

Parameters:

  • bucket_id (Integer)

    the id of the bucket

  • id (Integer)

    the id of the TODO

Returns:

  • (Boolean)


105
106
107
# File 'lib/basecamp3/models/todo.rb', line 105

def self.incomplete(bucket_id, id)
  Basecamp3.request.delete("/buckets/#{bucket_id}/todos/#{id}/completion")
end

.update(bucket_id, id, data) ⇒ Basecamp3::Todo

Updates the TODO.

REMEMBER: Pass all existing parameters in addition to those being updated!

Parameters:

  • bucket_id (Integer)

    the id of the bucket

  • id (Integer)

    the id of the TODO

  • data (Hash)

    the data to update the TODO with

  • params (Hash)

    a customizable set of options

Returns:



84
85
86
87
# File 'lib/basecamp3/models/todo.rb', line 84

def self.update(bucket_id, id, data)
  self.validate_required(data)
  Basecamp3.request.put("/buckets/#{bucket_id}/todos/#{id}", data, Basecamp3::Todo)
end

Instance Method Details

#assigneesArray<Basecamp3::Person>

Returns a list of related assignees.

Returns:



25
26
27
# File 'lib/basecamp3/models/todo.rb', line 25

def assignees
  @mapped_assignees ||= @assignees.map{ |a| Basecamp3::Person.new(a) }
end