CustomField   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 217
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 12
eloc 47
dl 0
loc 217
rs 10
c 0
b 0
f 0

9 Methods

Rating   Name   Duplication   Size   Complexity  
A getValuesInStr() 0 8 2
A setValues() 0 3 1
A getValuesInArray() 0 8 2
A getName() 0 3 1
A loadInRaw() 0 8 2
A getIsSystem() 0 3 1
A __construct() 0 6 1
A getValues() 0 3 1
A getId() 0 3 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: DrillCoder
5
 * Date: 08.09.17
6
 * Time: 16:50
7
 */
8
9
namespace DrillCoder\AmoCRM_Wrap\Helpers;
10
11
use stdClass;
12
13
/**
14
 * Class CustomField
15
 * @package DrillCoder\AmoCRM_Wrap\Helpers
16
 */
17
class CustomField
18
{
19
    /**
20
     * Обыное текстовое поле
21
     */
22
    const TYPE_TEXT = 1;
23
24
    /**
25
     * Текстовое поле с возможностью передавать только цифры
26
     */
27
    const TYPE_NUMERIC = 2;
28
29
    /**
30
     * Поле обозначающее только наличие или отсутствие свойства (например: "да"/"нет")
31
     */
32
    const TYPE_CHECKBOX = 3;
33
34
    /**
35
     * Поле типа список с возможностью выбора одного элемента
36
     */
37
    const TYPE_SELECT = 4;
38
39
    /**
40
     * Поле типа список c возможностью выбора нескольких элементов списка
41
     */
42
    const TYPE_MULTISELECT = 5;
43
44
    /**
45
     * Поле типа дата возвращает и принимает значения в формате (Y-m-d H:i:s)
46
     */
47
    const TYPE_DATE = 6;
48
49
    /**
50
     * Обычное текстовое поле предназначенное для ввода URL адресов
51
     */
52
    const TYPE_URL = 7;
53
54
    /**
55
     * Поле textarea содержащее большое количество текста
56
     */
57
    const TYPE_TEXTAREA = 9;
58
59
    /**
60
     * Поле типа переключатель
61
     */
62
    const TYPE_RADIOBUTTON = 10;
63
64
    /**
65
     * Короткое поле адрес
66
     */
67
    const TYPE_STREETADDRESS = 11;
68
69
    /**
70
     * Поле адрес (в интерфейсе является набором из нескольких полей)
71
     */
72
    const TYPE_SMART_ADDRESS = 13;
73
74
    /**
75
     * Поле типа дата поиск по которому осуществляется без учета года, значения в формате (Y-m-d H:i:s)
76
     */
77
    const TYPE_BIRTHDAY = 14;
78
79
    /**
80
     * Рабочий телефон
81
     */
82
    const PHONE_WORK = 'WORK';
83
84
    /**
85
     * Рабочий прямой телефон
86
     */
87
    const PHONE_WORKDD = 'WORKDD';
88
89
    /**
90
     * Мобильный телефон
91
     */
92
    const PHONE_MOB = 'MOB';
93
94
    /**
95
     * Факс
96
     */
97
    const PHONE_FAX = 'FAX';
98
99
    /**
100
     * Домашний телефон
101
     */
102
    const PHONE_HOME = 'HOME';
103
104
    /**
105
     * Другой телефон
106
     */
107
    const PHONE_OTHER = 'OTHER';
108
109
    /**
110
     * Рабочая почта
111
     */
112
    const EMAIL_WORK = 'WORK';
113
    /**
114
     * Личная почта
115
     */
116
    const EMAIL_PRIV = 'PRIV';
117
    /**
118
     * Другая почта
119
     */
120
    const EMAIL_OTHER = 'OTHER';
121
122
    /**
123
     * @var int
124
     */
125
    private $id;
126
    /**
127
     * @var string
128
     */
129
    private $name;
130
    /**
131
     * @var bool
132
     */
133
    private $isSystem;
134
    /**
135
     * @var Value[]
136
     */
137
    private $values;
138
139
    /**
140
     * CustomField constructor.
141
     *
142
     * @param int         $id
143
     * @param Value[]     $values
144
     * @param string|null $name
145
     * @param bool        $isSystem
146
     */
147
    public function __construct($id = 0, array $values = array(), $name = null, $isSystem = false)
148
    {
149
        $this->id = (int)$id;
150
        $this->name = $name;
151
        $this->isSystem = $isSystem;
152
        $this->values = $values;
153
    }
154
155
    /**
156
     * @param stdClass $data
157
     *
158
     * @return CustomField
159
     */
160
    public static function loadInRaw($data)
161
    {
162
        $values = array();
163
        foreach ($data->values as $valueData) {
164
            $values[] = Value::loadInRaw($valueData);
165
        }
166
167
        return new CustomField($data->id, $values, $data->name, $data->is_system);
168
    }
169
170
    /**
171
     * @return int
172
     */
173
    public function getId()
174
    {
175
        return $this->id;
176
    }
177
178
    /**
179
     * @return string
180
     */
181
    public function getName()
182
    {
183
        return $this->name;
184
    }
185
186
    /**
187
     * @return bool
188
     */
189
    public function getIsSystem()
190
    {
191
        return $this->isSystem;
192
    }
193
194
    /**
195
     * @param Value[] $values
196
     */
197
    public function setValues($values)
198
    {
199
        $this->values = $values;
200
    }
201
202
    /**
203
     * @return Value[]
204
     */
205
    public function getValues()
206
    {
207
        return $this->values;
208
    }
209
210
    /**
211
     * @return string
212
     */
213
    public function getValuesInStr()
214
    {
215
        $values = array();
216
        foreach ($this->getValues() as $value) {
217
            $values[] = $value->getValue();
218
        }
219
220
        return implode('; ', $values);
221
    }
222
223
    /**
224
     * @return string[]
225
     */
226
    public function getValuesInArray()
227
    {
228
        $values = array();
229
        foreach ($this->values as $value) {
230
            $values[] = $value->getValue();
231
        }
232
233
        return $values;
234
    }
235
}