Passed
Push — master ( 28effa...a0de38 )
by Giancarlos
04:32
created

FeFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 0
crap 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\Model\DocumentInterface;
12
use Greenter\Model\Response\BaseResult;
13
use Greenter\Security\SignedXml;
14
use Greenter\Ws\Services\SenderInterface;
15
use Greenter\Xml\Builder\BuilderInterface;
16
use Greenter\Zip\ZipFactory;
17
18
/**
19
 * Class FeFactory
20
 * @package Greenter\Factory
21
 */
22
class FeFactory implements FactoryInterface
23
{
24
    /**
25
     * @var SignedXml
26
     */
27
    protected $signer;
28
29
    /**
30
     * @var ZipFactory
31
     */
32
    protected $zipper;
33
34
    /**
35
     * @var SenderInterface
36
     */
37
    protected $sender;
38
39
    /**
40
     * Ultimo xml generado.
41
     *
42
     * @var string
43
     */
44
    protected $lastXml;
45
46
    /**
47
     * @var BuilderInterface
48
     */
49
    private $builder;
50
51
    /**
52
     * BaseFactory constructor.
53
     */
54 60
    public function __construct()
55
    {
56 60
        $this->signer = new SignedXml();
57 60
        $this->zipper = new ZipFactory();
58 60
    }
59
60
    /**
61
     * @return BuilderInterface
62
     */
63
    public function getBuilder()
64
    {
65
        return $this->builder;
66
    }
67
68
    /**
69
     * @return SenderInterface
70
     */
71
    public function getSender()
72
    {
73
        return $this->sender;
74
    }
75
76
    /**
77
     * @param SenderInterface $sender
78
     * @return FeFactory
79
     */
80 54
    public function setSender($sender)
81
    {
82 54
        $this->sender = $sender;
83 54
        return $this;
84
    }
85
86
    /**
87
     * @param BuilderInterface $builder
88
     * @return FeFactory
89
     */
90 54
    public function setBuilder($builder)
91
    {
92 54
        $this->builder = $builder;
93 54
        return $this;
94
    }
95
96
    /**
97
     * @param DocumentInterface $document
98
     * @return BaseResult
99
     */
100 54
    public function send(DocumentInterface $document)
101
    {
102 54
        $xml = $this->builder->build($document);
103 36
        $this->lastXml = $this->getXmmlSigned($xml);
104 36
        $filename = $document->getName();
105
106 36
        $zip = $this->zipper->compress("$filename.xml", $this->lastXml);
107 36
        return $this->sender->send("$filename.zip", $zip);
108
    }
109
110
    /**
111
     * Set Certicated content
112
     * @param string $cert
113
     */
114 56
    public function setCertificate($cert)
115
    {
116 56
        $this->signer->setCertificate($cert);
117 56
    }
118
119
    /**
120
     * Get Last XML Signed.
121
     *
122
     * @return string
123
     */
124 10
    public function getLastXml()
125
    {
126 10
        return $this->lastXml;
127
    }
128
129
    /**
130
     * @param string $xml
131
     * @return string
132
     */
133 36
    private function getXmmlSigned($xml)
134
    {
135 36
        return $this->signer->sign($xml);
136
    }
137
}