cambiarTodosDeNumeroATexto()   A
last analyzed

Complexity

Conditions 5
Paths 3

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 7
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 17
rs 9.6111
1
<?php
2
namespace src;
3
4
use Exception;
5
use stdClass;
6
7
use src\Trabajador;
8
9
class ValoresParaBaseDeDatosTrabajador
10
{
11
    public $atributos = 
12
    array(
13
        'sexo',
14
        'edad',
15
        'rangoDeEdad',
16
        'estadoCivil',
17
        'nivelDeEstudios',
18
        'ocupacion',
19
        'departamento',
20
        'tipoDePuesto',
21
        'tipoDeContratacion',
22
        'tipoDePersonal',
23
        'tipoDeJornada',
24
        'realizaRotacion',
25
        'rangoTiempoEnPuesto',
26
        'rangoExperienciaLaboral',
27
    );
28
29
    public $sexo = 
30
    array(
31
        'Hombre' => 1,
32
        'Mujer' => 2
33
    );
34
35
    public $rangoDeEdad = 
36
    array(
37
        '15-19' => 1,
38
        '20-24' => 2,
39
        '25-29' => 3,
40
        '30-34' => 4,
41
        '35-39' => 5,
42
        '40-44' => 6,
43
        '45-49' => 7,
44
        '50-54' => 8,
45
        '55-59' => 9,
46
        '60-64' => 10,
47
        '65-69' => 11,
48
        '70-99' => 12
49
    );
50
    
51
    public $estadoCivil = 
52
    array(
53
        'Casado' => 1,
54
        'Soltero' => 2,
55
        'Unión libre' => 3,
56
        'Divorciado' => 4,
57
        'Viudo' => 5
58
    );
59
60
    public $nivelDeEstudios = 
61
    array(
62
        'Sin información' => 1,
63
        'Primaria' => 2,
64
        'Secundaria' => 3,
65
        'Bachillerato' => 4,
66
        'Técnico superior' => 5,
67
        'Licenciatura' => 6,
68
        'Maestría' => 7,
69
        'Doctorado' => 8
70
    );
71
    
72
    public $tipoDePuesto =
73
    array(
74
        'Operativo' => 1, 
75
        'Profesional o técnico' => 2,
76
        'Supervisor' => 3, 
77
        'Gerente' => 4
78
    );
79
80
    public $tipoDeContratacion =
81
    array(
82
        'Por obra o proyecto' => 1,
83
        'Por tiempo determinado (temporal)' => 2,
84
        'Tiempo indeterminado' => 3,
85
        'Honorarios' => 4
86
    );
87
    
88
    public $tipoDePersonal = 
89
    array(
90
        'Sindicalizado' => 1, 
91
        'Confianza' => 2,
92
        'Ninguno' => 3
93
    );
94
    
95
    public $tipoDeJornada = 
96
    array(
97
        'Fijo nocturno (entre las 20:00 y 6:00 hrs)' => 1,
98
        'Fijo diurno (entre las 6:00 y 20:00 hrs' => 2,
99
        'Fijo mixto (combinación de nocturno y diurno)' => 3
100
    );
101
    
102
    public $realizaRotacion =
103
    array(
104
        'Sí' => 1,
105
        'No' => 2
106
    );
107
108
    public $rangoTiempoEnPuesto = 
109
    array(
110
        'Menos de 6 meses' => 1,
111
        'Entre 6 meses y 1 año' => 2,
112
        'Entre 1 a 4 años' => 3,
113
        'Entre 5 a 9 años' => 4,
114
        'Entre 10 a 14 años' => 5,
115
        'Entre 15 a 19 años' => 6,
116
        'Entre 20 a 24 años' => 7,
117
        '25 años o más' => 8
118
    ); 
119
120
    public $rangoExperienciaLaboral = 
121
    array(
122
        'Menos de 6 meses' => 1,
123
        'Entre 6 meses y 1 año' => 2,
124
        'Entre 1 a 4 años' => 3,
125
        'Entre 5 a 9 años' => 4,
126
        'Entre 10 a 14 años' => 5,
127
        'Entre 15 a 19 años' => 6,
128
        'Entre 20 a 24 años' => 7,
129
        '25 años o más' => 8
130
    );
131
    
132
    public function cambiarTodosDeTextoANumero(Trabajador $Trabajador): object
133
    {
134
        $datos = new stdClass;
135
136
        foreach ($this->atributos as $atributo)
137
        {
138
            if($atributo == 'ocupacion' || $atributo == 'departamento' || $atributo == 'edad')
139
            {
140
                $datos->{$atributo} = $Trabajador->{$atributo}();
141
            }
142
            else
143
            {
144
                $datos->{$atributo} = $this->textoANumero($atributo, $Trabajador->{$atributo}());
145
            }
146
            
147
        }
148
149
        return $datos;
150
    }
151
152
    public function cambiarTodosDeNumeroATexto(object $datosDeTrabajador): object
153
    {
154
        $datos = new stdClass;
155
156
        foreach ($datosDeTrabajador as $key => $valor)
157
        {
158
            if($key == 'ocupacion' || $key == 'departamento' || $key == 'edad')
159
            {
160
                $datos->{$key} = $valor;
161
            }
162
            else
163
            {
164
                $datos->{$key} = $this->numeroATexto($key, $valor);
165
            }
166
        }
167
168
        return $datos;
169
    }
170
    
171
    public function textoANumero(string $atributo, string $valor): int
172
    {
173
        foreach ($this->{$atributo} as $key => $value)
174
        {
175
            if($key == $valor)
176
            {
177
                return $value;
178
            }
179
        }
180
181
        throw new Exception("Error procesando el cambio de texto a número en datos de ".$atributo, 1);
182
        
183
    }
184
185
    public function numeroATexto(string $atributo, int $valor): string
186
    {
187
        foreach ($this->{$atributo} as $key => $value)
188
        {
189
            if($value == $valor)
190
            {
191
                return $key;
192
            }
193
        }
194
195
        throw new Exception("Error procesando el cambio de número a texto en datos de ".$atributo, 1);
196
    }
197
}