Passed
Push — master ( 1a00b5...984447 )
by y
03:02
created

TaskList::_getMap()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 4
rs 10
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A TaskList::__toString() 0 2 1
1
<?php
2
3
namespace Helix\Asana\User;
4
5
use ArrayIterator;
6
use Helix\Asana\Base\AbstractEntity;
7
use Helix\Asana\Task;
8
use Helix\Asana\User;
9
use Helix\Asana\Workspace;
10
use IteratorAggregate;
11
12
/**
13
 * A user's task list in a given workspace.
14
 *
15
 * @see https://developers.asana.com/docs/asana-user-task-lists
16
 * @see https://developers.asana.com/docs/user-task-list
17
 *
18
 * @immutable User task lists are read-only through the API.
19
 *
20
 * @method string       getName         ()
21
 * @method User         getOwner        ()
22
 * @method Workspace    getWorkspace    ()
23
 */
24
class TaskList extends AbstractEntity implements IteratorAggregate {
25
26
    const TYPE = 'user_task_list';
27
28
    protected static $map = [
29
        'owner' => User::class,
30
        'workspace' => Workspace::class
31
    ];
32
33
    final public function __toString (): string {
34
        return "user_task_lists/{$this->getGid()}";
35
    }
36
37
    /**
38
     * @return Task[]
39
     */
40
    public function getIncompleteTasks () {
41
        return $this->loadAll(Task::class, "{$this}/tasks", ['completed_since' => 'now']);
42
    }
43
44
    /**
45
     * Returns an iterator for all tasks.
46
     *
47
     * @return ArrayIterator|Task[]
48
     */
49
    public function getIterator () {
50
        return new ArrayIterator($this->getTasks());
51
    }
52
53
    /**
54
     * @return Task[]
55
     */
56
    public function getTasks () {
57
        return $this->loadAll(Task::class, "{$this}/tasks");
58
    }
59
}