AbstractReaderHtmlLoteria::setDOMDocument()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
1
<?php
2
3
namespace LoteriaApi\Consumer\Reader;
4
5
use \DOMDocument;
6
use \DOMNodeList;
7
8
abstract class AbstractReaderHtmlLoteria implements IReaderHtml
9
{
10
    protected $domdocument;
11
    protected $numbersNode;
12
    protected $data = [];
13
14
    abstract public function getData();
15
16
    public function setDOMDocument(DOMDocument $domdocument)
17
    {
18
        $this->domdocument = $domdocument;
19
        return $this;
20
    }
21
22
    public function setNumbersNode(LoteriaNumbersNode $numbersNode)
23
    {
24
        $this->numbersNode = $numbersNode;
25
        return $this;
26
    }
27
28
    protected function loadData(LoteriaNumbersNode $numbersNode)
29
    {
30
        $table = $this->domdocument->getElementsByTagName('table')->item(0);
31
        $trs = $table->getElementsByTagName('tr');
32
33
        for ($concursoHtml = 1; $concursoHtml < $trs->length; $concursoHtml++) {
34
            $tds = $trs->item($concursoHtml)->getElementsByTagName('td');
35
            
36
            $nrconcurso = $tds->item($numbersNode->getNumberConcurso())->nodeValue;
37
38
            $data = $tds->item($numbersNode->getDataConcurso())->nodeValue;
39
            $dezenas = $this->loadDezenas($numbersNode, $tds);
40
            $arrecadacao = $tds->item($numbersNode->getArrecadacaoConcurso())->nodeValue;
41
            $totalGanhadores = $tds->item($numbersNode->getTotalGanhadoresConcurso())->nodeValue;
42
            $acumulado = $tds->item($numbersNode->getTotalGanhadoresConcurso())->nodeValue === '0' ? 'SIM' : 'NÃO';
43
            $valorAcumulado = $tds->item($numbersNode->getValorAcumuladoConcurso())->nodeValue;
44
45
            $this->data[$nrconcurso] = [
46
                'data' => $data,
47
                'dezenas' => $dezenas,
48
                'arrecadacao' => $arrecadacao,
49
                'total_ganhadores' => $totalGanhadores,
50
                'acumulado' => $acumulado,
51
                'valor_acumulado' => $valorAcumulado,
52
            ];
53
        }
54
    }
55
56
    private function loadDezenas(LoteriaNumbersNode $numbersNode, DOMNodeList $tds)
57
    {
58
        $dezenas = [];
59
60
        foreach ($numbersNode->getDezenasConcurso() as $dezenaConcurso) {
61
            $dezenas[] = $tds->item($dezenaConcurso)->nodeValue;
62
        }
63
64
        return $dezenas;
65
    }
66
}
67