<?php

use Core\Config;
use Core\Db;

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'autoload.php';

/**
 * Обновление данных о курсах валют из Центробанка РФ.
 * Раз в день в час ночи.
 */

// Обнуление(?!) передач раз в сутки
Db::sql('update stats set transfers = 100 where transfers < 200');

function getCurs()
{
    // создаем объект для работы с XML
    $xml = new DOMDocument();
    // ссылка на сайт банка
    $url = 'https://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d.m.Y');
    // получаем xml с курсами всех валют
    if (!$xml->load($url)) {
        // если не получили xml возвращаем false
        return false;
    }
    // массив для хранения курсов валют
    $result = [];
    // разбираем xml
    $root = $xml->documentElement;
    // берем все теги 'Valute' и их содержимое
    $items = $root->getElementsByTagName('Valute');
    // переберем теги 'Valute' по одному
    foreach ($items as $item) {
        // получаем код валюты
        $code = $item->getElementsByTagName('CharCode')->item(0)->nodeValue;
        // получаем значение курса валюты, относительно рубля
        $value = $item->getElementsByTagName('Value')->item(0)->nodeValue;
        // номинал
        $nominal = $item->getElementsByTagName('Nominal')->item(0)->nodeValue;
        // записываем в массив, предварительно заменив запятую на точку
        $result[$code] = round(str_replace(',', '.', $value), 5) / $nominal;
    }// возвращаем значение курса, для запрошенной валюты
    return $result;
}

$get = getCurs();
if (Config::get('curency_name') === 'RUB') {
    $curency = Config::get('curency_value');
} else {
    $curency = round($get[Config::get('curency_name')] * Config::get('curency_value'), 4);
}

if ($get['USD'] > 0) {
    $price = [
        'AUD',
        'AZN',
        'AMD',
        'BYR',
        'BGN',
        'BRL',
        'HUF',
        'KRW',
        'DKK',
        'USD',
        'EUR',
        'INR',
        'KZT',
        'CAD',
        'KGS',
        'CNY',
        'LVL',
        'LTL',
        'MDL',
        'RON',
        'TMT',
        'NOK',
        'PLN',
        'XDR',
        'SGD',
        'TJS',
        'TRY',
        'UZS',
        'UAH',
        'GBP',
        'CZK',
        'SEK',
        'CHF',
        'ZAR',
        'JPY',
    ];
    $r = '';
    foreach ($price as $value) {
        if (!$get[$value]) {
            continue;
        }
        $r .= ',`' . $value . '`="' . $get[$value] . '"';
    }

    Db::sql('insert into bank_table set time = unix_timestamp(), cur = ?, data = ?', [$curency, date('d.m.Y') . $r]);
}