Completed
Push — master ( bdc52c...616bc8 )
by Konstantin
03:41
created

Task::set()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace linkprofit\AmoCRM\entities;
4
5
use linkprofit\AmoCRM\traits\FieldsTrait;
6
7
/**
8
 * Class Task
9
 * @package linkprofit\AmoCRM\entities
10
 */
11
class Task implements EntityInterface
12
{
13
    const CONTACT_ELEMENT_TYPE = 1;
14
    const LEAD_ELEMENT_TYPE = 2;
15
    const COMPANY_ELEMENT_TYPE = 3;
16
    const CUSTOMER_ELEMENT_TYPE = 12;
17
18
    const CALL_TASK_TYPE = 1;
19
    const MEETING_TASK_TYPE = 2;
20
    const MAIL_TASK_TYPE = 3;
21
22
23
    /**
24
     * @var int Уникальный идентификатор обновляемой задачи
25
     */
26
    public $id;
27
28
    /**
29
     * @var int Уникальный идентификатор контакта или сделки (сделка или контакт указывается в element_type)
30
     */
31
    public $element_id;
32
33
    /**
34
     * @var int Тип привязываемого элемента (1 - контакт, 2- сделка, 3 - компания, 12 - покупатель)
35
     */
36
    public $element_type;
37
38
    /**
39
     * @var string Дата, до которой необходимо завершить задачу. Если указано время 23:59, то в интерфейсах системы вместо времени будет отображаться "Весь день".
40
     */
41
    public $complete_till_at;
42
43
    /**
44
     * @var int Тип задачи
45
     */
46
    public $task_type;
47
48
    /**
49
     * @var string Текст задачи
50
     */
51
    public $text;
52
53
    /**
54
     * @var string Дата создания данной задачи (необязательный параметр)
55
     */
56
    public $created_at;
57
58
    /**
59
     * @var string Дата последнего изменения данной задачи (обязательный параметр при обновлении)
60
     */
61
    public $updated_at;
62
63
    /**
64
     * @var int Уникальный идентификатор ответственного пользователя
65
     */
66
    public $responsible_user_id;
67
68
    /**
69
     * @var bool Задача завершена или нет
70
     */
71
    public $is_completed;
72
73
    /**
74
     * @var array
75
     */
76
    protected $fieldList = [
77
        'id', 'element_id', 'element_type', 'complete_till_at', 'task_type',
78
        'text', 'created_at', 'updated_at', 'responsible_user_id', 'is_completed'
79
    ];
80
81
    use FieldsTrait;
82
83
    /**
84
     * @return array
85
     */
86 6
    public function get()
87
    {
88 6
        $fields = $this->getExistedValues($this->fieldList);
89
90 6
        return $fields;
91
    }
92
93
    /**
94
     * @param $array
95
     */
96 2
    public function set($array)
97
    {
98 2
        $this->setFromArray($this->fieldList, $array);
99 2
    }
100
101
    /**
102
     * @param EntityInterface $element
103
     * @return bool
104
     */
105 4
    public function linkElement(EntityInterface $element)
106
    {
107 4
        if (empty($element->id)) {
1 ignored issue
show
Bug introduced by
Accessing id on the interface linkprofit\AmoCRM\entities\EntityInterface suggest that you code against a concrete implementation. How about adding an instanceof check?

If you access a property on an interface, you most likely code against a concrete implementation of the interface.

Available Fixes

  1. Adding an additional type check:

    interface SomeInterface { }
    class SomeClass implements SomeInterface {
        public $a;
    }
    
    function someFunction(SomeInterface $object) {
        if ($object instanceof SomeClass) {
            $a = $object->a;
        }
    }
    
  2. Changing the type hint:

    interface SomeInterface { }
    class SomeClass implements SomeInterface {
        public $a;
    }
    
    function someFunction(SomeClass $object) {
        $a = $object->a;
    }
    
Loading history...
108 1
            return false;
109
        }
110
111 3
        if ($element instanceof Contact) {
112 1
            $this->element_type = self::CONTACT_ELEMENT_TYPE;
113 3
        } elseif ($element instanceof Lead) {
114 1
            $this->element_type = self::LEAD_ELEMENT_TYPE;
115 1
        } else {
116 1
            return false;
117
        }
118
119 2
        $this->element_id = $element->id;
120
121 2
        return true;
122
    }
123
}