Field   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
eloc 16
dl 0
loc 42
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getTypeByCode() 0 14 2
A __construct() 0 5 3
1
<?php
2
3
namespace BitrixToolkit\BitrixEntityMapper\Annotation\Property;
4
5
use Doctrine\Common\Annotations\Annotation\Enum;
6
7
/**
8
 * @Annotation
9
 * @Target("PROPERTY")
10
 */
11
final class Field extends AbstractPropertyAnnotation implements PropertyAnnotationInterface
12
{
13
    /**
14
     * @var string
15
     * @Required
16
     * @Enum({
17
     *     "ID", "ACTIVE", "NAME", "CODE", "XML_ID", "SORT", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO",
18
     *     "PREVIEW_TEXT", "PREVIEW_PICTURE", "DETAIL_TEXT", "DETAIL_PICTURE", "SECTION_ID"
19
     * })
20
     */
21
    protected $code;
22
23
    /**
24
     * @var bool
25
     */
26
    protected $primaryKey;
27
28 26
    public function __construct(array $values)
29
    {
30 26
        $this->code = isset($values['code']) ? $values['code'] : null;
31 26
        $this->primaryKey = isset($values['primaryKey']) ? (bool)$values['primaryKey'] : false;
32 26
        $this->type = self::getTypeByCode($this->code);
33
    }
34
35
    /**
36
     * @param string $code
37
     * @return string
38
     */
39 27
    private static function getTypeByCode($code)
40
    {
41 27
        $map = [
42 27
            'ID' => self::TYPE_INTEGER,
43 27
            'SORT' => self::TYPE_INTEGER,
44 27
            'ACTIVE' => self::TYPE_BOOLEAN,
45 27
            'DATE_ACTIVE_FROM' => self::TYPE_DATETIME,
46 27
            'DATE_ACTIVE_TO' => self::TYPE_DATETIME,
47 27
            'PREVIEW_PICTURE' => self::TYPE_FILE,
48 27
            'DETAIL_PICTURE' => self::TYPE_FILE,
49 27
            'SECTION_ID' => self::TYPE_INTEGER,
50 27
        ];
51
52 27
        return array_key_exists($code, $map) ? $map[$code] : self::TYPE_STRING;
53
    }
54
}