Passed
Push — master ( 4eb1d1...395c86 )
by Giancarlos
04:22
created

FeFactory   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 132
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 9
c 1
b 0
f 1
lcom 1
cbo 4
dl 0
loc 132
ccs 23
cts 23
cp 1
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A getBuilder() 0 4 1
A getSender() 0 4 1
A setSender() 0 6 1
A setBuilder() 0 6 1
A getSigner() 0 4 1
A setSigner() 0 6 1
A send() 0 6 1
A getLastXml() 0 4 1
A getXmlSigned() 0 6 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 2
    public function getBuilder()
54
    {
55 2
        return $this->builder;
56
    }
57
58
    /**
59
     * Get sender service.
60
     *
61
     * @return SenderInterface
62
     */
63 2
    public function getSender()
64
    {
65 2
        return $this->sender;
66
    }
67
68
    /**
69
     * Set sender service.
70
     *
71
     * @param SenderInterface $sender
72
     *
73
     * @return FeFactory
74
     */
75 54
    public function setSender($sender)
76
    {
77 54
        $this->sender = $sender;
78
79 54
        return $this;
80
    }
81
82
    /**
83
     * Set document builder.
84
     *
85
     * @param BuilderInterface $builder
86
     *
87
     * @return FeFactory
88
     */
89 68
    public function setBuilder($builder)
90
    {
91 68
        $this->builder = $builder;
92
93 68
        return $this;
94
    }
95
96
    /**
97
     * @return SignedXml
98
     */
99 2
    public function getSigner()
100
    {
101 2
        return $this->signer;
102
    }
103
104
    /**
105
     * @param SignedXml $signer
106
     *
107
     * @return FeFactory
108
     */
109 78
    public function setSigner($signer)
110
    {
111 78
        $this->signer = $signer;
112
113 78
        return $this;
114
    }
115
116
    /**
117
     * Build and send document.
118
     *
119
     * @param DocumentInterface $document
120
     *
121
     * @return BaseResult
122
     */
123 54
    public function send(DocumentInterface $document)
124
    {
125 54
        $this->lastXml = $this->getXmlSigned($document);
126
127 54
        return $this->sender->send($document->getName(), $this->lastXml);
128
    }
129
130
    /**
131
     * Get Last XML Signed.
132
     *
133
     * @return string
134
     */
135 12
    public function getLastXml()
136
    {
137 12
        return $this->lastXml;
138
    }
139
140
    /**
141
     * @param DocumentInterface $document
142
     *
143
     * @return string
144
     */
145 68
    public function getXmlSigned(DocumentInterface $document)
146
    {
147 68
        $xml = $this->builder->build($document);
148
149 68
        return $this->signer->signXml($xml);
150
    }
151
}
152