0
1
Fork 0

merge exchange-rate

This commit is contained in:
Javi Gallego 2018-06-11 08:35:24 +02:00
parent d19438bad1
commit 96758a3abb
1 changed files with 41 additions and 41 deletions

View File

@ -1,41 +1,41 @@
<?php <?php
/** /**
* Ejemplo: * Ejemplo:
* <Cube><Cube time="2010-12-10"><Cube currency="USD" rate="1.3244"/> * <Cube><Cube time="2010-12-10"><Cube currency="USD" rate="1.3244"/>
*/ */
class ExchangeRate extends Vn\Lib\Method { class ExchangeRate extends Vn\Lib\Method {
function run($db) { function run($db) {
$db->selectDb('vn2008'); $db->selectDb('vn2008');
// Indica la URL del archivo // Indica la URL del archivo
$xml = new SimpleXMLElement( $xml = new SimpleXMLElement(
'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml', 0, TRUE); 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml', 0, TRUE);
$date = $db->getValue("SELECT MAX(date) fecha FROM reference_rate"); $date = $db->getValue("SELECT MAX(date) fecha FROM reference_rate");
$maxDate = $date ? DateTime::createFromFormat('Y-m-d', $date) : NULL; $maxDate = $date ? DateTime::createFromFormat('Y-m-d', $date) : NULL;
foreach($xml->Cube[0]->Cube as $cube) { foreach($xml->Cube[0]->Cube as $cube) {
$xmlDate = new DateTime($cube['time']); $xmlDate = new DateTime($cube['time']);
// Si existen datos más recientes de la máxima fecha los añade // Si existen datos más recientes de la máxima fecha los añade
if ($maxDate <= $xmlDate) if ($maxDate <= $xmlDate)
foreach($cube->Cube as $subCube) foreach($cube->Cube as $subCube)
if ($subCube['currency'] == 'USD') { if ($subCube['currency'] == 'USD') {
$params = [ $params = [
'date' => $xmlDate, 'date' => $xmlDate,
'rate' => $subCube['rate'] 'rate' => $subCube['rate']
]; ];
$db->query( $db->query(
'REPLACE INTO reference_rate(moneda_id, date, rate) 'REPLACE INTO reference_rate(moneda_id, date, rate)
VALUES(2, #date, #rate)', VALUES(2, #date, #rate)',
$params $params
); );
} }
} }
$db->queryFromFile(__DIR__.'/exrate-add'); $db->queryFromFile(__DIR__.'/exrate-add');
} }
} }