Completed
Push — master ( f3ae79...9c48b0 )
by Daniel
02:18
created

JobBuilder::validateJob()   B

Complexity

Conditions 6
Paths 2

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 9
cts 9
cp 1
rs 8.8571
cc 6
eloc 7
nc 2
nop 1
crap 6
1
<?php
2
3
namespace Jobles\Careerjet\Builder;
4
5
use Jobles\Careerjet\Exception\CareerjetException;
6
use Jobles\Core\Job\Job;
7
8
class JobBuilder
9
{
10
    /**
11
     * @param \stdClass $apiJob
12
     * @param $country
13
     * @return Job
14
     * @throws CareerjetException
15
     */
16 3
    public static function fromApi(\stdClass $apiJob, $country)
17
    {
18 3
        self::validateJob($apiJob);
19
20 2
        $job = new Job;
21 2
        $job->setTitle($apiJob->title);
22 2
        $job->setDate(new \DateTime($apiJob->date));
23 2
        $job->setSnippet($apiJob->description);
24 2
        $job->setViewUrl($apiJob->url);
25 2
        if (isset($apiJob->salary_currency_code)) {
26
            $job->setSalaryCurrencyCode($apiJob->salary_currency_code);
27
        }
28 2
        if (isset($apiJob->salary_min)) {
29
            $job->setSalaryMin($apiJob->salary_min);
30
        }
31 2
        if (isset($apiJob->salary_max)) {
32
            $job->setSalaryMax($apiJob->salary_max);
33
        }
34 2
        $job->setCountry($country);
35
        switch ($country) {
36 2
            case 'Brazil':
37 2
                $job = JobWithBrazilianLocationsBuilder::fromApi($apiJob, $job);
38 2
                break;
39
            default:
40
                break;
41
        }
42 2
        $job->setSource($apiJob->site);
43 2
        if (!empty($apiJob->company)) {
44 1
            $job->setCompany($apiJob->company);
45 1
        }
46
47 2
        return $job;
48
    }
49
50
    /**
51
     * @param \stdClass $apiJob
52
     * @throws CareerjetException
53
     */
54 3
    private static function validateJob(\stdClass $apiJob)
55
    {
56 3
        if (!isset($apiJob->title)
57 3
            || !isset($apiJob->date)
58 2
            || !isset($apiJob->description)
59 2
            || !isset($apiJob->url)
60 2
            || !isset($apiJob->site)
61 3
        ) {
62 1
            throw new CareerjetException('Invalid API job');
63
        }
64 2
    }
65
}
66