JobBuilder   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 12
c 1
b 0
f 0
lcom 0
cbo 3
dl 0
loc 61
ccs 30
cts 30
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B fromApi() 0 33 6
B validateJob() 0 11 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
    /**
12
     * @param \stdClass $apiJob
13
     * @param           $country
14
     *
15
     * @return Job
16
     * @throws CareerjetException
17
     */
18 3
    public static function fromApi(\stdClass $apiJob, string $country) : Job
19
    {
20 3
        self::validateJob($apiJob);
21
22 2
        $job = new Job;
23 2
        $job->setTitle($apiJob->title);
24 2
        $job->setDate(new \DateTime($apiJob->date));
25 2
        $job->setSnippet($apiJob->description);
26 2
        $job->setViewUrl($apiJob->url);
27 2
        if (isset($apiJob->salary_currency_code)) {
28 1
            $job->setSalaryCurrencyCode($apiJob->salary_currency_code);
29
        }
30 2
        if (isset($apiJob->salary_min)) {
31 1
            $job->setSalaryMin($apiJob->salary_min);
32
        }
33 2
        if (isset($apiJob->salary_max)) {
34 1
            $job->setSalaryMax($apiJob->salary_max);
35
        }
36 2
        $job->setCountry($country);
37
        switch ($country) {
38 2
            case 'Brazil':
39 2
                $job = JobWithBrazilianLocationsBuilder::fromApi($apiJob, $job);
40 2
                break;
41
            default:
42 1
                break;
43
        }
44 2
        $job->setSource($apiJob->site);
45 2
        if (!empty($apiJob->company)) {
46 1
            $job->setCompany($apiJob->company);
47
        }
48
49 2
        return $job;
50
    }
51
52
    /**
53
     * @param \stdClass $apiJob
54
     *
55
     * @throws CareerjetException
56
     */
57 3
    private static function validateJob(\stdClass $apiJob)
58
    {
59 3
        if (!isset($apiJob->title)
60 2
            || !isset($apiJob->date)
61 2
            || !isset($apiJob->description)
62 2
            || !isset($apiJob->url)
63 3
            || !isset($apiJob->site)
64
        ) {
65 1
            throw new CareerjetException('Invalid API job');
66
        }
67 2
    }
68
}
69