diff --git a/src/api/models/Activity.php b/src/api/models/Activity.php index 6973f8d..9302e61 100644 --- a/src/api/models/Activity.php +++ b/src/api/models/Activity.php @@ -23,10 +23,10 @@ class Activity extends BaseModel { public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $obj) { } } diff --git a/src/api/models/Attachment.php b/src/api/models/Attachment.php index 0c65101..cef987b 100644 --- a/src/api/models/Attachment.php +++ b/src/api/models/Attachment.php @@ -10,10 +10,10 @@ class Attachment extends BaseModel { public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $obj) { } } diff --git a/src/api/models/AutoAction.php b/src/api/models/AutoAction.php index bf5ec57..39cdbd9 100644 --- a/src/api/models/AutoAction.php +++ b/src/api/models/AutoAction.php @@ -10,10 +10,10 @@ class AutoAction extends BaseModel { public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $obj) { } } diff --git a/src/api/models/Board.php b/src/api/models/Board.php index 8b1759e..e59131d 100644 --- a/src/api/models/Board.php +++ b/src/api/models/Board.php @@ -8,8 +8,11 @@ class Board extends BaseModel { public $auto_actions = []; public $users = []; + private $container; + public function __construct($container, $id = 0, $internal = false) { parent::__construct('board', $id, $container); + $this->container = $container; if ($internal) { return; @@ -54,6 +57,34 @@ class Board extends BaseModel { $this->loadPropertiesFrom($obj); + if (isset($obj->columns)) { + foreach($obj->columns as $item) { + $this->columns[] = Column::fromJson($this->container, + json_encode($item)); + } + } + + if (isset($obj->categories)) { + foreach($obj->categories as $item) { + $this->categories[] = Category::fromJson($this->container, + json_encode($item)); + } + } + + if (isset($obj->auto_actions)) { + foreach($obj->auto_actions as $item) { + $this->auto_actions[] = AutoAction::fromJson($this->container, + json_encode($item)); + } + } + + if (isset($obj->users)) { + foreach($obj->users as $item) { + $this->users[] = User::fromJson($this->container, + json_encode($item)); + } + } + $this->updateBean(); } @@ -62,11 +93,5 @@ class Board extends BaseModel { $this->name = $obj->name; $this->is_active = $obj->is_active; } - - private function loadColumnsFrom($cols) { - foreach($cols as $col) { - $this->columns[] = Column::fromObject($col); - } - } } diff --git a/src/api/models/Column.php b/src/api/models/Column.php index 2cbbbce..6c612da 100644 --- a/src/api/models/Column.php +++ b/src/api/models/Column.php @@ -1,19 +1,30 @@ loadFromBean($this->bean); } + public static function fromJson($container, $json) { + $instance = new self($container, 0, true); + $instance->loadFromJson($container, $json); + + return $instance; + } + public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $json) { } } diff --git a/src/api/models/Comment.php b/src/api/models/Comment.php index 17c8f17..6e75b5a 100644 --- a/src/api/models/Comment.php +++ b/src/api/models/Comment.php @@ -10,10 +10,10 @@ class Comment extends BaseModel { public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $obj) { } } diff --git a/src/api/models/User.php b/src/api/models/User.php index 74d6923..fd2a723 100644 --- a/src/api/models/User.php +++ b/src/api/models/User.php @@ -10,10 +10,10 @@ class User extends BaseModel { public function updateBean() { } - public abstract function loadFromBean($container, $bean) { + public function loadFromBean($container, $bean) { } - public abstract function loadFromJson($container, $obj) { + public function loadFromJson($container, $obj) { } } diff --git a/test/api/BoardTest.php b/test/api/BoardTest.php index 850c1b6..409817e 100644 --- a/test/api/BoardTest.php +++ b/test/api/BoardTest.php @@ -2,6 +2,7 @@ require_once 'Mocks.php'; class BoardTest extends PHPUnit_Framework_TestCase { + private $json = '{ "id": 1, "name": "test", "is_active": true }'; public static function setupBeforeClass() { try { @@ -33,5 +34,20 @@ class BoardTest extends PHPUnit_Framework_TestCase { $this->assertArraySubset($board->columns, []); } + public function testCreateFromJson() { + $board = Board::fromJson(new ContainerMock(), null); + + $this->assertTrue($board->id === 0); + $this->assertTrue($board->name === ''); + $this->assertTrue($board->is_active === true); + $this->assertArraySubset($board->columns, []); + + $board = Board::fromJson(new ContainerMock(), $this->json); + + $this->assertTrue($board->id === 1); + $this->assertTrue($board->name === 'test'); + $this->assertTrue($board->is_active === true); + } + }