TaskFactory::entity()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 5
eloc 12
c 2
b 0
f 0
nc 4
nop 1
dl 0
loc 19
rs 9.5555
1
<?php
2
3
declare(strict_types=1);
4
/**
5
 * Created by PhpStorm.
6
 * User: polidog
7
 * Date: 14/12/24
8
 * Time: 19:05.
9
 */
10
11
namespace Polidog\Chatwork\Entity\Factory;
12
13
use Cake\Utility\Inflector;
14
use Polidog\Chatwork\Entity\Task;
15
16
class TaskFactory extends AbstractFactory
17
{
18
    /**
19
     * @param array $data
20
     *
21
     * @return Task
22
     */
23
    public function entity(array $data = [])
24
    {
25
        // @todo あとでroomオブジェクトの生成方法とかを見直す
26
        $roomFactory = new RoomFactory();
27
        $userFactory = new UserFactory();
28
29
        $task = new Task();
30
        foreach ($data as $key => $value) {
31
            $property = Inflector::variable($key);
32
            if ('room' == $property) {
33
                $task->$property = $roomFactory->entity($value);
34
            } elseif ('assignedByAccount' == $property || 'account' == $property) {
35
                $task->$property = $userFactory->entity($value);
36
            } else {
37
                $task->$property = $value;
38
            }
39
        }
40
41
        return $task;
42
    }
43
}
44