Test Failed
Push — master ( 0741dd...48ec12 )
by Esteban De La Fuente
08:16 queued 02:11
created

Comuna   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Test Coverage

Coverage 76.19%

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 80
ccs 16
cts 21
cp 0.7619
rs 10
c 0
b 0
f 0
wmc 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getCiudad() 0 7 2
A getDireccionRegional() 0 17 4
A getCodigo() 0 3 1
A __toString() 0 3 1
A getNombre() 0 7 2
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * LibreDTE: Biblioteca PHP (Núcleo).
7
 * Copyright (C) LibreDTE <https://www.libredte.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de
20
 * GNU junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace libredte\lib\Core\Package\Billing\Component\Document\Entity;
26
27
use Derafu\Lib\Core\Package\Prime\Component\Entity\Entity\Entity;
28
use Derafu\Lib\Core\Package\Prime\Component\Entity\Mapping as DEM;
29
use libredte\lib\Core\Package\Billing\Component\Document\Repository\ComunaRepository;
30
31
/**
32
 * Entidad de comuna.
33
 */
34
#[DEM\Entity(repositoryClass: ComunaRepository::class)]
35
class Comuna extends Entity
36
{
37
    /**
38
     * {@inheritDoc}
39
     */
40
    public function __toString(): string
41
    {
42
        return $this->getAttribute('nombre');
43
    }
44
45
    /**
46
     * Obtiene el código de la comuna.
47
     *
48
     * @return string
49
     */
50
    public function getCodigo(): string
51
    {
52
        return (string) $this->getAttribute('codigo');
53
    }
54
55
    /**
56
     * Entrega el nombre de la comuna.
57
     *
58
     * @return string
59
     */
60 54
    public function getNombre(): string
61
    {
62 54
        if ($this->hasAttribute('nombre')) {
63 54
            return $this->getAttribute('nombre');
64
        }
65
66
        return '';
67
    }
68
69
    /**
70
     * Obtiene la ciudad asociada a la comuna.
71
     *
72
     * @return string|false Nombre de la ciudad asociada o `false` si no se
73
     * encuentra.
74
     */
75 1
    public function getCiudad(): string|false
76
    {
77 1
        if ($this->hasAttribute('ciudad')) {
78 1
            return $this->getAttribute('ciudad');
79
        }
80
81 1
        return false;
82
    }
83
84
    /**
85
     * Obtiene la dirección regional del SII asociada a la comuna.
86
     *
87
     * Si el argumento es una cadena no numérica, intenta encontrar una dirección
88
     * regional correspondiente en el arreglo de direcciones. Si no se encuentra,
89
     * devuelve la cadena original en mayúsculas. Si el argumento es numérico,
90
     * asume que es un código de sucursal y devuelve un formato de sucursal. Si
91
     * el argumento es falso o vacío, devuelve 'N.N.' como valor por defecto.
92
     *
93
     * @return string La dirección regional correspondiente, un formato de
94
     * sucursal para códigos numéricos, la misma entrada en mayúsculas si no se
95
     * encuentra en el arreglo, o 'N.N.' si la entrada es falsa o vacía.
96
     */
97 54
    public function getDireccionRegional(): string
98
    {
99 54
        $comuna = $this->getNombre();
100
101 54
        if (!$comuna) {
102 1
            return 'N.N.';
103
        }
104
105 54
        if (!is_numeric($comuna)) {
106 54
            if ($this->hasAttribute('direccion_regional')) {
107 53
                return $this->getAttribute('direccion_regional');
108
            }
109
110 2
            return $comuna;
111
        }
112
113 1
        return 'SUC ' . $comuna;
114
    }
115
}
116