Note   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 148
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 1
dl 0
loc 148
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A linkElement() 0 26 5
1
<?php
2
3
namespace linkprofit\AmoCRM\entities;
4
5
/**
6
 * Class Note
7
 * @package linkprofit\AmoCRM\entities
8
 */
9
class Note extends BaseEntity
10
{
11
    /**
12
     * Контакт
13
     */
14
    const CONTACT_ELEMENT_TYPE = 1;
15
16
    /**
17
     * Сделка
18
     */
19
    const LEAD_ELEMENT_TYPE = 2;
20
21
    /**
22
     * Компания
23
     */
24
    const COMPANY_ELEMENT_TYPE = 3;
25
26
    /**
27
     * Задача. Для задачи доступен только тип события TASK_RESULT
28
     */
29
    const TASK_ELEMENT_TYPE = 4;
30
31
    /**
32
     * Покупатель
33
     */
34
    const CUSTOMER_ELEMENT_TYPE = 12;
35
36
37
    /**
38
     * Сделка создана
39
     */
40
    const DEAL_CREATED = 1;
41
42
    /**
43
     * Контакт создан
44
     */
45
    const CONTACT_CREATED = 2;
46
47
    /**
48
     * Статус сделки изменен
49
     */
50
    const DEAL_STATUS_CHANGED = 3;
51
52
    /**
53
     * Обычное примечание
54
     */
55
    const COMMON = 4;
56
57
    /**
58
     * Входящий звонок
59
     */
60
    const CALL_IN = 10;
61
62
    /**
63
     * Исходящий звонок
64
     */
65
    const CALL_OUT = 11;
66
67
    /**
68
     * Компания создана
69
     */
70
    const COMPANY_CREATED = 12;
71
72
    /**
73
     * Результат по задаче
74
     */
75
    const TASK_RESULT = 13;
76
77
    /**
78
     * Системное сообщение
79
     */
80
    const SYSTEM = 25;
81
82
    /**
83
     * Входящее смс
84
     */
85
    const SMS_IN = 102;
86
87
    /**
88
     * Исходящее смс
89
     */
90
    const SMS_OUT = 103;
91
92
    /**
93
     * @var int id элемента, в карточку которого будет добавлено событие
94
     */
95
    public $element_id;
96
97
    /**
98
     * @var int Тип сущности элемента, в карточку которого будет добавлено событие.
99
     */
100
    public $element_type;
101
102
    /**
103
     * @var string Текст события
104
     */
105
    public $text;
106
107
    /**
108
     * @var integer Тип добавляемого события
109
     */
110
    public $note_type;
111
112
    /**
113
     * @var int Массив с передаваемой информацией для определённых типов событий
114
     */
115
    public $params;
116
117
    /**
118
     * @var array
119
     */
120
    protected $fieldList = [
121
        'id', 'element_id', 'element_type', 'note_type',
122
        'text', 'created_at', 'updated_at', 'responsible_user_id',
123
        'params'
124
    ];
125
126
    /**
127
     * @param BaseEntity $element
128
     * @return bool
129
     */
130 5
    public function linkElement(BaseEntity $element)
131
    {
132 5
        if (empty($element->id)) {
133 1
            return false;
134
        }
135
136 4
        $className = get_class($element);
137
        switch ($className) {
138 4
            case Contact::class:
139 1
                $this->element_type = self::CONTACT_ELEMENT_TYPE;
140 1
                break;
141 3
            case Lead::class:
142 1
                $this->element_type = self::LEAD_ELEMENT_TYPE;
143 1
                break;
144 2
            case Task::class:
145 1
                $this->element_type = self::TASK_ELEMENT_TYPE;
146 1
                $this->note_type = self::TASK_RESULT;
147 1
                break;
148 1
            default:
149 1
                return false;
150 1
        }
151
152 3
        $this->element_id = $element->id;
153
154 3
        return true;
155
    }
156
}
157