Completed
Push — master ( 115023...f3ae79 )
by Daniel
02:10
created

JobWithBrazilianLocationsBuilder::fromApi()   D

Complexity

Conditions 42
Paths 42

Size

Total Lines 111
Code Lines 105

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 101
CRAP Score 42.1854

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 111
ccs 101
cts 106
cp 0.9528
rs 4.1818
cc 42
eloc 105
nc 42
nop 2
crap 42.1854

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Jobles\Careerjet\Builder;
4
5
use Jobles\Careerjet\Exception\CareerjetException;
6
7
class JobWithBrazilianLocationsBuilder
8
{
9
    /**
10
     * @param \stdClass $apiJob
11
     * @param \Jobles\Core\Job\Job $job
12
     * @return \Jobles\Core\Job\Job
13
     * @throws CareerjetException
14
     */
15 41
    public static function fromApi(\stdClass $apiJob, \Jobles\Core\Job\Job $job)
16
    {
17 41
        if (!isset($apiJob->locations)) {
18 1
            throw new CareerjetException('Invalid API job');
19
        }
20
21 40
        switch ($apiJob->locations) {
22 40
            case 'Brasil':
23 1
                break;
24 39
            case 'Acre':
25 1
                $job->setState('AC');
26 1
                break;
27 38
            case 'Alagoas':
28 1
                $job->setState('AL');
29 1
                break;
30 37
            case 'Amapá':
31 37
            case 'Amapa':
32 2
                $job->setState('AP');
33 2
                break;
34 35
            case 'Amazonas':
35 1
                $job->setState('AM');
36 1
                break;
37 34
            case 'Bahia':
38 1
                $job->setState('BA');
39 1
                break;
40 33
            case 'Ceará':
41 33
            case 'Ceara':
42 2
                $job->setState('CE');
43 2
                break;
44 31
            case 'Distrito-Federal':
45 31
            case 'Distrito Federal':
46 2
                $job->setState('DF');
47 2
                break;
48 29
            case 'Espírito Santo':
49 29
            case 'Espirito Santo':
50 2
                $job->setState('ES');
51 2
                break;
52 27
            case 'Goiás':
53 27
            case 'Goias':
54 2
                $job->setState('GO');
55 2
                break;
56 25
            case 'Maranhão':
57 25
            case 'Maranhao':
58 2
                $job->setState('MA');
59 2
                break;
60 23
            case 'Mato Grosso':
61 1
                $job->setState('MT');
62 1
                break;
63 22
            case 'Mato Grosso do Sul':
64 1
                $job->setState('MS');
65 1
                break;
66 21
            case 'Minas Gerais':
67 1
                $job->setState('MG');
68 1
                break;
69 20
            case 'Pará':
70 20
            case 'Para':
71 2
                $job->setState('PA');
72 2
                break;
73 18
            case 'Paraíba':
74 18
            case 'Paraiba':
75 2
                $job->setState('PB');
76 2
                break;
77 16
            case 'Paraná':
78 16
            case 'Parana':
79 2
                $job->setState('PR');
80 2
                break;
81 14
            case 'Pernambuco':
82 1
                $job->setState('PE');
83 1
                break;
84 13
            case 'Piauí':
85 13
            case 'Piaui':
86 2
                $job->setState('PI');
87 2
                break;
88 11
            case 'Rio de Janeiro':
89 1
                $job->setState('RJ');
90 1
                break;
91 10
            case 'Rio Grande do Norte':
92 1
                $job->setState('RN');
93 1
                break;
94 9
            case 'Rio Grande do Sul':
95 1
                $job->setState('RS');
96 1
                break;
97 8
            case 'Rondônia':
98 8
            case 'Rondonia':
99 2
                $job->setState('RO');
100 2
                break;
101 6
            case 'Roraima':
102 1
                $job->setState('RR');
103 1
                break;
104 5
            case 'Santa Catarina':
105 1
                $job->setState('SC');
106 1
                break;
107 4
            case 'São Paulo':
108 4
            case 'Sao Paulo':
109 2
                $job->setState('SP');
110 2
                break;
111 2
            case 'Sergipe':
112 1
                $job->setState('SE');
113 1
                break;
114 1
            case 'Tocantins':
115 1
                $job->setState('TO');
116 1
                break;
117
            default:
118
                list($city, $state) = explode(' - ', $apiJob->locations);
119
                $job->setState($state);
120
                $job->setCity($city);
121
                break;
122 40
        }
123
124 40
        return $job;
125
    }
126
}
127