Passed
Push — master ( e35fd1...265125 )
by Joachim
11:08
created

Manufacturer::populateFromApiResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 1
eloc 6
nc 1
nop 1
1
<?php
2
3
namespace Loevgaard\DandomainFoundation\Entity;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use Doctrine\ORM\Mapping as ORM;
7
use Loevgaard\DandomainFoundation\Entity\Generated\ManufacturerInterface;
8
use Loevgaard\DandomainFoundation\Entity\Generated\ManufacturerTrait;
9
use Loevgaard\DandomainFoundation;
10
11
/**
12
 * @ORM\Entity()
13
 * @ORM\Table(name="loevgaard_dandomain_manufacturers")
14
 */
15
class Manufacturer implements ManufacturerInterface
16
{
17
    use ManufacturerTrait;
18
19
    /**
20
     * @var int
21
     *
22
     * @ORM\Id
23
     * @ORM\GeneratedValue
24
     * @ORM\Column(type="integer")
25
     **/
26
    protected $id;
27
28
    /**
29
     * @var string
30
     *
31
     * @ORM\Column(type="string", unique=true)
32
     */
33
    protected $externalId;
34
35
    /**
36
     * @var string|null
37
     *
38
     * @ORM\Column(nullable=true, type="string")
39
     */
40
    protected $link;
41
42
    /**
43
     * @var string|null
44
     *
45
     * @ORM\Column(nullable=true, type="text")
46
     */
47
    protected $linkText;
48
49
    /**
50
     * @var string|null
51
     *
52
     * @ORM\Column(nullable=true, type="string")
53
     */
54
    protected $name;
55
56
    /**
57
     * @var Product[]|ArrayCollection
58
     *
59
     * @ORM\ManyToMany(mappedBy="manufacturers", targetEntity="Product")
60
     */
61
    protected $products;
62
63
    public function __construct()
64
    {
65
        $this->products = new ArrayCollection();
66
    }
67
68
    /**
69
     * Populates a product based on the response from the Dandomain API
70
     *
71
     * See the properties here:
72
     * http://4221117.shop53.dandomain.dk/admin/webapi/endpoints/v1_0/ProductDataService/help/operations/GetDataProduct
73
     *
74
     * @param \stdClass|array $data
75
     */
76
    public function populateFromApiResponse($data)
77
    {
78
        $data = DandomainFoundation\objectToArray($data);
79
80
        $this
81
            ->setExternalId($data['id'])
82
            ->setLink($data['link'])
83
            ->setLinkText($data['linkText'])
84
            ->setName($data['name'])
85
        ;
86
    }
87
88
    /**
89
     * @return int
90
     */
91
    public function getId(): int
92
    {
93
        return (int)$this->id;
94
    }
95
96
    /**
97
     * @param int $id
98
     * @return Manufacturer
99
     */
100
    public function setId(int $id)
101
    {
102
        $this->id = $id;
103
        return $this;
104
    }
105
106
    /**
107
     * @return string
108
     */
109
    public function getExternalId(): string
110
    {
111
        return (string)$this->externalId;
112
    }
113
114
    /**
115
     * @param string $externalId
116
     * @return Manufacturer
117
     */
118
    public function setExternalId(string $externalId)
119
    {
120
        $this->externalId = $externalId;
121
        return $this;
122
    }
123
124
    /**
125
     * @return null|string
126
     */
127
    public function getLink()
128
    {
129
        return $this->link;
130
    }
131
132
    /**
133
     * @param null|string $link
134
     * @return Manufacturer
135
     */
136
    public function setLink($link)
137
    {
138
        $this->link = $link;
139
        return $this;
140
    }
141
142
    /**
143
     * @return null|string
144
     */
145
    public function getLinkText()
146
    {
147
        return $this->linkText;
148
    }
149
150
    /**
151
     * @param null|string $linkText
152
     * @return Manufacturer
153
     */
154
    public function setLinkText($linkText)
155
    {
156
        $this->linkText = $linkText;
157
        return $this;
158
    }
159
160
    /**
161
     * @return null|string
162
     */
163
    public function getName()
164
    {
165
        return $this->name;
166
    }
167
168
    /**
169
     * @param null|string $name
170
     * @return Manufacturer
171
     */
172
    public function setName($name)
173
    {
174
        $this->name = $name;
175
        return $this;
176
    }
177
178
    /**
179
     * @return ArrayCollection|Product[]
180
     */
181
    public function getProducts()
182
    {
183
        return $this->products;
184
    }
185
186
    /**
187
     * @param ArrayCollection|Product[] $products
188
     * @return Manufacturer
189
     */
190
    public function setProducts($products)
191
    {
192
        $this->products = $products;
193
        return $this;
194
    }
195
}
196