AcceptRejectSigner   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 16
c 1
b 0
f 0
dl 0
loc 60
ccs 16
cts 16
cp 1
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 2
A answer() 0 3 1
A pacRfc() 0 3 1
A uuid() 0 3 1
A dateTime() 0 3 1
A sign() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\Finkok\Helpers;
6
7
use DateTimeImmutable;
8
use PhpCfdi\Credentials\Credential;
9
use PhpCfdi\Finkok\Definitions\CancelAnswer;
10
use PhpCfdi\XmlCancelacion\Credentials as XmlCancelacionCredentials;
11
use PhpCfdi\XmlCancelacion\XmlCancelacionHelper;
12
13
class AcceptRejectSigner
14
{
15
    public const DEFAULT_PACRFC = 'CVD110412TF6';
16
17
    /** @var string */
18
    private $uuid;
19
20
    /** @var CancelAnswer */
21
    private $answer;
22
23
    /** @var string */
24
    private $pacRfc;
25
26
    /** @var DateTimeImmutable */
27
    private $dateTime;
28
29
    /**
30
     * GetRelatedSigner constructor.
31
     *
32
     * @param string $uuid
33
     * @param CancelAnswer $answer
34
     * @param DateTimeImmutable|null $dateTime If null or ommited then use current time and time zone
35
     * @param string $pacRfc If empty or ommited then uses DEFAULT_PACRFC
36
     */
37 2
    public function __construct(
38
        string $uuid,
39
        CancelAnswer $answer,
40
        ?DateTimeImmutable $dateTime = null,
41
        string $pacRfc = self::DEFAULT_PACRFC
42
    ) {
43 2
        $this->uuid = $uuid;
44 2
        $this->answer = $answer;
45 2
        $this->dateTime = $dateTime ?? new DateTimeImmutable();
46 2
        $this->pacRfc = $pacRfc ?: static::DEFAULT_PACRFC;
47
    }
48
49 2
    public function uuid(): string
50
    {
51 2
        return $this->uuid;
52
    }
53
54 2
    public function answer(): CancelAnswer
55
    {
56 2
        return $this->answer;
57
    }
58
59 2
    public function pacRfc(): string
60
    {
61 2
        return $this->pacRfc;
62
    }
63
64 2
    public function dateTime(): DateTimeImmutable
65
    {
66 2
        return $this->dateTime;
67
    }
68
69 2
    public function sign(Credential $credential): string
70
    {
71 2
        $helper = new XmlCancelacionHelper(XmlCancelacionCredentials::createWithPhpCfdiCredential($credential));
72 2
        return $helper->signCancellationAnswer($this->uuid(), $this->answer(), $this->pacRfc(), $this->dateTime());
73
    }
74
}
75