FeFactory   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 138
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 1
Metric Value
eloc 21
c 3
b 0
f 1
dl 0
loc 138
ccs 26
cts 26
cp 1
rs 10
wmc 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A getBuilder() 0 3 1
A getSigner() 0 3 1
A getLastXml() 0 3 1
A getSender() 0 3 1
A sendXml() 0 3 1
A setSender() 0 5 1
A setSigner() 0 5 1
A send() 0 5 1
A getXmlSigned() 0 7 1
A setBuilder() 0 5 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Administrador
5
 * Date: 20/07/2017
6
 * Time: 04:06 PM.
7
 */
8
9
namespace Greenter\Factory;
10
11
use Greenter\Builder\BuilderInterface;
12
use Greenter\Model\DocumentInterface;
13
use Greenter\Model\Response\BaseResult;
14
use Greenter\Services\SenderInterface;
15
use Greenter\XMLSecLibs\Sunat\SignedXml;
16
17
/**
18
 * Class FeFactory.
19
 */
20
class FeFactory implements FactoryInterface
21
{
22
    /**
23
     * @var SignedXml
24
     */
25
    private $signer;
26
27
    /**
28
     * Sender service.
29
     *
30
     * @var SenderInterface
31
     */
32
    private $sender;
33
34
    /**
35
     * Ultimo xml generado.
36
     *
37
     * @var string
38
     */
39
    private $lastXml;
40
41
    /**
42
     * Xml Builder.
43
     *
44
     * @var BuilderInterface
45
     */
46
    private $builder;
47
48
    /**
49
     * Get document builder.
50
     *
51
     * @return BuilderInterface
52
     */
53 1
    public function getBuilder()
54
    {
55 1
        return $this->builder;
56
    }
57
58
    /**
59
     * Get sender service.
60
     *
61
     * @return SenderInterface
62
     */
63 1
    public function getSender()
64
    {
65 1
        return $this->sender;
66
    }
67
68
    /**
69
     * Set sender service.
70
     *
71
     * @param SenderInterface $sender
72
     *
73
     * @return FeFactory
74
     */
75 32
    public function setSender($sender)
76
    {
77 32
        $this->sender = $sender;
78
79 32
        return $this;
80
    }
81
82
    /**
83
     * Set document builder.
84
     *
85
     * @param BuilderInterface $builder
86
     *
87
     * @return FeFactory
88
     */
89 39
    public function setBuilder($builder)
90
    {
91 39
        $this->builder = $builder;
92
93 39
        return $this;
94
    }
95
96
    /**
97
     * @return SignedXml
98
     */
99 1
    public function getSigner()
100
    {
101 1
        return $this->signer;
102
    }
103
104
    /**
105
     * @param SignedXml $signer
106
     *
107
     * @return FeFactory
108
     */
109 44
    public function setSigner($signer)
110
    {
111 44
        $this->signer = $signer;
112
113 44
        return $this;
114
    }
115
116
    /**
117
     * Build and send document.
118
     *
119
     * @param DocumentInterface $document
120
     *
121
     * @return BaseResult
122
     */
123 30
    public function send(DocumentInterface $document)
124
    {
125 30
        $xml = $this->getXmlSigned($document);
126
127 30
        return $this->sender->send($document->getName(), $xml);
128
    }
129
130
131 2
    public function sendXml($name, $xml)
132
    {
133 2
        return $this->sender->send($name, $xml);
134
    }
135
    
136
    /**
137
     * Get Last XML Signed.
138
     *
139
     * @return string
140
     */
141 6
    public function getLastXml()
142
    {
143 6
        return $this->lastXml;
144
    }
145
146
    /**
147
     * @param DocumentInterface $document
148
     *
149
     * @return string
150
     */
151 39
    public function getXmlSigned(DocumentInterface $document)
152
    {
153 39
        $xml = $this->builder->build($document);
154
155 39
        $this->lastXml = $this->signer->signXml($xml);
156
157 39
        return $this->lastXml;
158
    }
159
}
160