PersonaNatural::getEmail()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 1
b 0
f 0
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\TradingParties\Entity;
26
27
use Derafu\Lib\Core\Helper\Rut;
28
use libredte\lib\Core\Package\Billing\Component\TradingParties\Contract\PersonaNaturalInterface;
29
30
/**
31
 * Clase para representar una persona natural de Chile.
32
 *
33
 * Proporciona información básica de una persona natural. Principalmente, los
34
 * datos básicos necesarios para los certificados digitales.
35
 */
36
class PersonaNatural implements PersonaNaturalInterface
37
{
38
    /**
39
     * RUN de la persona natural.
40
     *
41
     * @var int
42
     */
43
    protected int $run;
44
45
    /**
46
     * Dígito verificador (DV) del RUT.
47
     *
48
     * @var string
49
     */
50
    protected string $dv;
51
52
    /**
53
     * Nombre de la persona.
54
     *
55
     * @var string|null
56
     */
57
    protected ?string $nombre;
58
59
    /**
60
     * Dirección de correo electrónico de la persona.
61
     *
62
     * @var string|null
63
     */
64
    protected ?string $email;
65
66
    /**
67
     * Constructor de la clase PersonaNatural.
68
     *
69
     * @param string|int $run RUN del contribuyente.
70
     * @param string $nombre Nombre de la persona natural.
71
     * @param string $email Correo electrónico de la persona natural.
72
     */
73
    public function __construct(
74
        string|int $run,
75
        ?string $nombre = null,
76
        ?string $email = null
77
    ) {
78
        $run = Rut::format($run);
79
        [$this->run, $this->dv] = Rut::toArray($run);
80
81
        $this->nombre = $nombre;
82
        $this->email = $email;
83
84
        // Validar el RUN asignado (independiente del origen).
85
        Rut::validate($this->getRun());
86
    }
87
88
    /**
89
     * {@inheritDoc}
90
     */
91
    public function getRun(): string
92
    {
93
        return $this->run . '-' . $this->dv;
94
    }
95
96
    /**
97
     * {@inheritDoc}
98
     */
99
    public function getNombre(): string
100
    {
101
        return $this->nombre ?? $this->getRun();
102
    }
103
104
    /**
105
     * {@inheritDoc}
106
     */
107
    public function getEmail(): ?string
108
    {
109
        return $this->email;
110
    }
111
}
112