RawDto   A
last analyzed

Complexity

Total Complexity 28

Size/Duplication

Total Lines 385
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 28
eloc 46
c 1
b 0
f 0
dl 0
loc 385
rs 10

26 Methods

Rating   Name   Duplication   Size   Complexity  
A setExternalIdentifier() 0 3 1
A setSalaryCurrency() 0 3 1
A getSalaryCurrency() 0 3 1
A getExternalIdentifier() 0 3 1
A setSnippet() 0 3 1
A setCompanyUrl() 0 3 1
A setUrl() 0 3 1
A setSalaryFrom() 0 3 1
A getTitle() 0 3 1
A getCompanyName() 0 3 1
A getText() 0 3 1
A getPublicationDate() 0 3 1
A setCompanyName() 0 3 1
A getRegionName() 0 3 1
A setPublicationDate() 0 9 3
A getSnippet() 0 3 1
A setRegionName() 0 3 1
A setText() 0 3 1
A getSalaryFrom() 0 3 1
A setSalaryTo() 0 3 1
A getCompanyLogoUrl() 0 3 1
A setTitle() 0 3 1
A getCompanyUrl() 0 3 1
A setCompanyLogoUrl() 0 3 1
A getSalaryTo() 0 3 1
A getUrl() 0 3 1
1
<?php
2
3
/*
4
 * This file is part of the Veslo project <https://github.com/symfony-doge/veslo>.
5
 *
6
 * (C) 2019 Pavel Petrov <[email protected]>.
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 *
11
 * @license https://opensource.org/licenses/GPL-3.0 GPL-3.0
12
 */
13
14
declare(strict_types=1);
15
16
namespace Veslo\AnthillBundle\Dto\Vacancy;
17
18
use DateTime;
19
use DateTimeInterface;
20
use Exception;
21
use InvalidArgumentException;
22
23
/**
24
 * Context of raw vacancy data from website for analysis
25
 *
26
 * This is just a raw data from specific website, it is not compatible with any project schema
27
 * Decisions which data will be stored in actual schema are performed at collecting stage
28
 */
29
class RawDto
30
{
31
    /**
32
     * Vacancy URL
33
     *
34
     * @var string
35
     */
36
    private $url;
37
38
    /**
39
     * Unique vacancy identifier on provider's website
40
     *
41
     * @var string
42
     */
43
    private $externalIdentifier;
44
45
    /**
46
     * Vacancy region name
47
     *
48
     * @var string
49
     */
50
    private $regionName;
51
52
    /**
53
     * Vacancy company name
54
     *
55
     * @var string
56
     */
57
    private $companyName;
58
59
    /**
60
     * Vacancy company website url
61
     *
62
     * @var string|null
63
     */
64
    private $companyUrl;
65
66
    /**
67
     * Vacancy company logo url
68
     *
69
     * @var string|null
70
     */
71
    private $companyLogoUrl;
72
73
    /**
74
     * Vacancy title
75
     *
76
     * @var string
77
     */
78
    private $title;
79
80
    /**
81
     * Vacancy preview text
82
     *
83
     * @var string|null
84
     */
85
    private $snippet;
86
87
    /**
88
     * Vacancy text
89
     *
90
     * @var string
91
     */
92
    private $text;
93
94
    /**
95
     * Vacancy salary amount from
96
     *
97
     * @var int|null
98
     */
99
    private $salaryFrom;
100
101
    /**
102
     * Vacancy salary amount to
103
     *
104
     * @var int|null
105
     */
106
    private $salaryTo;
107
108
    /**
109
     * Vacancy salary currency
110
     *
111
     * @var string|null
112
     */
113
    private $salaryCurrency;
114
115
    /**
116
     * Vacancy publication date
117
     *
118
     * @var DateTimeInterface
119
     */
120
    private $publicationDate;
121
122
    /**
123
     * Returns vacancy URL
124
     *
125
     * @return string
126
     */
127
    public function getUrl(): string
128
    {
129
        return $this->url;
130
    }
131
132
    /**
133
     * Sets vacancy URL
134
     *
135
     * @param string $url Vacancy URL
136
     *
137
     * @return void
138
     */
139
    public function setUrl(string $url): void
140
    {
141
        $this->url = $url;
142
    }
143
144
    /**
145
     * Returns unique vacancy identifier on provider's website
146
     *
147
     * @return string
148
     */
149
    public function getExternalIdentifier(): string
150
    {
151
        return $this->externalIdentifier;
152
    }
153
154
    /**
155
     * Sets unique vacancy identifier on provider's website
156
     *
157
     * @param string $externalIdentifier Unique vacancy identifier on provider's website
158
     *
159
     * @return void
160
     */
161
    public function setExternalIdentifier(string $externalIdentifier): void
162
    {
163
        $this->externalIdentifier = $externalIdentifier;
164
    }
165
166
    /**
167
     * Returns vacancy region name
168
     *
169
     * @return string
170
     */
171
    public function getRegionName(): string
172
    {
173
        return $this->regionName;
174
    }
175
176
    /**
177
     * Sets vacancy region name
178
     *
179
     * @param string $regionName Vacancy region name
180
     *
181
     * @return void
182
     */
183
    public function setRegionName(string $regionName): void
184
    {
185
        $this->regionName = $regionName;
186
    }
187
188
    /**
189
     * Returns vacancy company name
190
     *
191
     * @return string
192
     */
193
    public function getCompanyName(): string
194
    {
195
        return $this->companyName;
196
    }
197
198
    /**
199
     * Sets vacancy company name
200
     *
201
     * @param string $companyName Vacancy company name
202
     *
203
     * @return void
204
     */
205
    public function setCompanyName(string $companyName): void
206
    {
207
        $this->companyName = $companyName;
208
    }
209
210
    /**
211
     * Returns vacancy company logo URL
212
     *
213
     * @return string|null
214
     */
215
    public function getCompanyLogoUrl(): ?string
216
    {
217
        return $this->companyLogoUrl;
218
    }
219
220
    /**
221
     * Sets vacancy company logo URL
222
     *
223
     * @param string|null $companyLogoUrl Vacancy company logo URL
224
     *
225
     * @return void
226
     */
227
    public function setCompanyLogoUrl(?string $companyLogoUrl): void
228
    {
229
        $this->companyLogoUrl = $companyLogoUrl;
230
    }
231
232
    /**
233
     * Returns vacancy company URL
234
     *
235
     * @return string|null
236
     */
237
    public function getCompanyUrl(): ?string
238
    {
239
        return $this->companyUrl;
240
    }
241
242
    /**
243
     * Sets vacancy company URL
244
     *
245
     * @param string|null $companyUrl Vacancy company URL
246
     *
247
     * @return void
248
     */
249
    public function setCompanyUrl(?string $companyUrl): void
250
    {
251
        $this->companyUrl = $companyUrl;
252
    }
253
254
    /**
255
     * Returns vacancy title
256
     *
257
     * @return string
258
     */
259
    public function getTitle(): string
260
    {
261
        return $this->title;
262
    }
263
264
    /**
265
     * Sets vacancy title
266
     *
267
     * @param string $title Vacancy title
268
     *
269
     * @return void
270
     */
271
    public function setTitle(string $title): void
272
    {
273
        $this->title = $title;
274
    }
275
276
    /**
277
     * Returns vacancy preview text
278
     *
279
     * @return string|null
280
     */
281
    public function getSnippet(): ?string
282
    {
283
        return $this->snippet;
284
    }
285
286
    /**
287
     * Sets vacancy preview text
288
     *
289
     * @param string|null $snippet Vacancy preview text
290
     *
291
     * @return void
292
     */
293
    public function setSnippet(?string $snippet): void
294
    {
295
        $this->snippet = $snippet;
296
    }
297
298
    /**
299
     * Returns vacancy text
300
     *
301
     * @return string
302
     */
303
    public function getText(): string
304
    {
305
        return $this->text;
306
    }
307
308
    /**
309
     * Sets vacancy text
310
     *
311
     * @param string $text Vacancy text
312
     *
313
     * @return void
314
     */
315
    public function setText(string $text): void
316
    {
317
        $this->text = $text;
318
    }
319
320
    /**
321
     * Returns vacancy salary amount from
322
     *
323
     * @return int|null
324
     */
325
    public function getSalaryFrom(): ?int
326
    {
327
        return $this->salaryFrom;
328
    }
329
330
    /**
331
     * Sets vacancy salary amount from
332
     *
333
     * @param int|null $salaryFrom Vacancy salary amount from
334
     *
335
     * @return void
336
     */
337
    public function setSalaryFrom(?int $salaryFrom): void
338
    {
339
        $this->salaryFrom = $salaryFrom;
340
    }
341
342
    /**
343
     * Returns vacancy salary amount to
344
     *
345
     * @return int|null
346
     */
347
    public function getSalaryTo(): ?int
348
    {
349
        return $this->salaryTo;
350
    }
351
352
    /**
353
     * Sets vacancy salary amount to
354
     *
355
     * @param int|null $salaryTo Vacancy salary amount to
356
     *
357
     * @return void
358
     */
359
    public function setSalaryTo(?int $salaryTo): void
360
    {
361
        $this->salaryTo = $salaryTo;
362
    }
363
364
    /**
365
     * Returns vacancy salary currency
366
     *
367
     * @return string|null
368
     */
369
    public function getSalaryCurrency(): ?string
370
    {
371
        return $this->salaryCurrency;
372
    }
373
374
    /**
375
     * Sets vacancy salary currency
376
     *
377
     * @param string|null $salaryCurrency Vacancy salary currency
378
     *
379
     * @return void
380
     */
381
    public function setSalaryCurrency(?string $salaryCurrency): void
382
    {
383
        $this->salaryCurrency = $salaryCurrency;
384
    }
385
386
    /**
387
     * Returns vacancy publication date
388
     *
389
     * @return DateTimeInterface
390
     */
391
    public function getPublicationDate(): DateTimeInterface
392
    {
393
        return $this->publicationDate;
394
    }
395
396
    /**
397
     * Sets vacancy publication date
398
     *
399
     * @param DateTimeInterface|string $publicationDate Vacancy publication date
400
     *
401
     * @return void
402
     *
403
     * @throws Exception
404
     */
405
    public function setPublicationDate($publicationDate): void
406
    {
407
        if ($publicationDate instanceof DateTimeInterface) {
408
            $this->publicationDate = $publicationDate;
409
        } elseif (is_string($publicationDate)) {
0 ignored issues
show
introduced by
The condition is_string($publicationDate) is always true.
Loading history...
410
            $this->publicationDate = new DateTime($publicationDate);
411
        } else {
412
            throw new InvalidArgumentException(
413
                'Publication date should be either instanceof DateTimeInterface or string'
414
            );
415
        }
416
    }
417
}
418