AbstractXmlLoteria::putFileName()
last analyzed

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 1
nc 1
1
<?php
2
3
namespace LoteriaApi\Provider\Reader;
4
5
use LoteriaApi\Config;
6
7
abstract class AbstractXmlLoteria implements IFinder
8
{
9
    protected $configPath;
10
    protected $configDatasource;
11
    protected $filename;
12
13
    public function __construct(Config $configPath, Config $configDatasource)
14
    {
15
        $this->configPath = $configPath;
16
        $this->configDatasource = $configDatasource;
17
        $this->putFileName();
18
    }
19
20
    abstract protected function putFileName();
21
22
    private function formatResultXpathToConcursoArray($resultXpath)
23
    {
24
        $arrayConcursos = [];
25
26
        foreach ($resultXpath as $key => $concurso) {
27
            $arrayConcursos[$key]['concurso'] = (string) $concurso->attributes()->numero;
28
29
            $children = $concurso[0]->children();
30
31
            $arrayConcursos[$key]['data'] = (string) $children->data;
32
            $arrayConcursos[$key]['dezenas'] = (array) $children->dezenas->children()->dezena;
33
            $arrayConcursos[$key]['arrecadacao'] = (string) $children->arrecadacao;
34
            $arrayConcursos[$key]['total_ganhadores'] = (string) $children->total_ganhadores;
35
            $arrayConcursos[$key]['acumulado'] = (string) $children->acumulado;
36
            $arrayConcursos[$key]['valor_acumulado'] = (string) $children->valor_acumulado;
37
        }
38
39
        return $arrayConcursos;
40
    }
41
42
    private function getSimpleXml()
43
    {
44
        return simplexml_load_file($this->filename);
45
    }
46
47
    public function findByConcurso($nrconcurso)
48
    {
49
        $concurso = $this->getSimpleXml()
50
            ->xpath("/concursos/concurso[@numero='{$nrconcurso}']");
51
52
        if (!isset($concurso[0])) {
53
             throw new \InvalidArgumentException("Concurso does not exist");
54
        }
55
        
56
        $concurso = $this->formatResultXpathToConcursoArray($concurso);
57
58
        return $concurso;
59
    }
60
61
    public function findLastConcurso()
62
    {
63
        $concurso = $this->getSimpleXml()
64
            ->xpath("(/concursos/concurso)[last()]");
65
        
66
        $concurso = $this->formatResultXpathToConcursoArray($concurso);
67
68
        return $concurso;
69
    }
70
}
71