summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Api/Task.php11
-rw-r--r--docs/api-json-rpc.markdown65
-rw-r--r--tests/functionals/ApiTest.php25
3 files changed, 98 insertions, 3 deletions
diff --git a/app/Api/Task.php b/app/Api/Task.php
index c98b24a6..d7a9e91b 100644
--- a/app/Api/Task.php
+++ b/app/Api/Task.php
@@ -17,6 +17,11 @@ class Task extends Base
return $this->taskFinder->getById($task_id);
}
+ public function getTaskByReference($project_id, $reference)
+ {
+ return $this->taskFinder->getByReference($project_id, $reference);
+ }
+
public function getAllTasks($project_id, $status_id = TaskModel::STATUS_OPEN)
{
return $this->taskFinder->getAll($project_id, $status_id);
@@ -50,7 +55,7 @@ class Task extends Base
public function createTask($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0,
$date_due = '', $description = '', $category_id = 0, $score = 0, $swimlane_id = 0,
$recurrence_status = 0, $recurrence_trigger = 0, $recurrence_factor = 0, $recurrence_timeframe = 0,
- $recurrence_basedate = 0)
+ $recurrence_basedate = 0, $reference = '')
{
$values = array(
'title' => $title,
@@ -69,6 +74,7 @@ class Task extends Base
'recurrence_factor' => $recurrence_factor,
'recurrence_timeframe' => $recurrence_timeframe,
'recurrence_basedate' => $recurrence_basedate,
+ 'reference' => $reference,
);
list($valid,) = $this->taskValidator->validateCreation($values);
@@ -79,7 +85,7 @@ class Task extends Base
public function updateTask($id, $title = null, $project_id = null, $color_id = null, $column_id = null, $owner_id = null,
$creator_id = null, $date_due = null, $description = null, $category_id = null, $score = null,
$swimlane_id = null, $recurrence_status = null, $recurrence_trigger = null, $recurrence_factor = null,
- $recurrence_timeframe = null, $recurrence_basedate = null)
+ $recurrence_timeframe = null, $recurrence_basedate = null, $reference = null)
{
$values = array(
'id' => $id,
@@ -99,6 +105,7 @@ class Task extends Base
'recurrence_factor' => $recurrence_factor,
'recurrence_timeframe' => $recurrence_timeframe,
'recurrence_basedate' => $recurrence_basedate,
+ 'reference' => $reference,
);
foreach ($values as $key => $value) {
diff --git a/docs/api-json-rpc.markdown b/docs/api-json-rpc.markdown
index a0aec457..3e5d76a6 100644
--- a/docs/api-json-rpc.markdown
+++ b/docs/api-json-rpc.markdown
@@ -1916,7 +1916,7 @@ Response example:
### getTask
-- Purpose: **Get task information**
+- Purpose: **Get task by the unique id**
- Parameters:
- **task_id** (integer, required)
- Result on success: **task properties**
@@ -1975,6 +1975,69 @@ Response example:
}
```
+### getTaskByReference
+
+- Purpose: **Get task by the external reference**
+- Parameters:
+ - **project_id** (integer, required)
+ - **reference** (string, required)
+- Result on success: **task properties**
+- Result on failure: **null**
+
+Request example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "method": "getTaskByReference",
+ "id": 1992081213,
+ "params": {
+ "project_id": 1,
+ "reference": "TICKET-1234"
+ }
+}
+```
+
+Response example:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1992081213,
+ "result": {
+ "id": "5",
+ "title": "Task with external ticket number",
+ "description": "[Link to my ticket](http:\/\/my-ticketing-system\/1234)",
+ "date_creation": "1434227446",
+ "color_id": "yellow",
+ "project_id": "1",
+ "column_id": "1",
+ "owner_id": "0",
+ "position": "4",
+ "is_active": "1",
+ "date_completed": null,
+ "score": "0",
+ "date_due": "0",
+ "category_id": "0",
+ "creator_id": "0",
+ "date_modification": "1434227446",
+ "reference": "TICKET-1234",
+ "date_started": null,
+ "time_spent": "0",
+ "time_estimated": "0",
+ "swimlane_id": "0",
+ "date_moved": "1434227446",
+ "recurrence_status": "0",
+ "recurrence_trigger": "0",
+ "recurrence_factor": "0",
+ "recurrence_timeframe": "0",
+ "recurrence_basedate": "0",
+ "recurrence_parent": null,
+ "recurrence_child": null
+ }
+}
+```
+
### getAllTasks
- Purpose: **Get all available tasks**
diff --git a/tests/functionals/ApiTest.php b/tests/functionals/ApiTest.php
index ab64b6d0..92c752bb 100644
--- a/tests/functionals/ApiTest.php
+++ b/tests/functionals/ApiTest.php
@@ -977,4 +977,29 @@ class Api extends PHPUnit_Framework_TestCase
$files = $this->client->getAllFiles(array('task_id' => 1));
$this->assertEmpty($files);
}
+
+ public function testCreateTaskWithReference()
+ {
+ $task = array(
+ 'title' => 'Task with external ticket number',
+ 'reference' => 'TICKET-1234',
+ 'project_id' => 1,
+ 'description' => '[Link to my ticket](http://my-ticketing-system/1234)',
+ );
+
+ $task_id = $this->client->createTask($task);
+
+ $this->assertNotFalse($task_id);
+ $this->assertInternalType('int', $task_id);
+ $this->assertTrue($task_id > 0);
+ }
+
+ public function testGetTaskByReference()
+ {
+ $task = $this->client->getTaskByReference(array('project_id' => 1, 'reference' => 'TICKET-1234'));
+
+ $this->assertNotEmpty($task);
+ $this->assertEquals('Task with external ticket number', $task['title']);
+ $this->assertEquals('TICKET-1234', $task['reference']);
+ }
} \ No newline at end of file