<?php
/**
 * trida vyuziva knihovnu pro praci s databazi
 * 
 */  
require_once 'Db_lib.php';

/**
 * Trida pro ukladani stazenych kurzovnich listku ze stranek bank
 *
 * @date 26-02-2008
 * @version 1.0
 *
 */
class ExchangeRatesStorage
{
	/**
	 * ukazatel na objekt se stazenym kurzovnim listkem
	 * 
	 * @var object ExchangeRatesFetcher
	 */
	private $exchange_rates_fetcher;	
	
	/**
	 * konstruktor - nastaveni vychozich hodnot
	 * 
	 * @param  object ExchangeRatesFetcher  objekt, ktery stahl listek ze stranek banky	 	 
	 */
	public function __construct(ExchangeRatesFetcher $exchange_rates_fetcher)
	{		
		$this->exchange_rates_fetcher = $exchange_rates_fetcher;
	}
	
	/**
	 * Funkce pro ulozeni stazeneho kurzovniho listku do databaze
	 * 	 	
	 * Funkce prevezme kurzovni listek z objektu ExchangeRatesFetcher a ulozi ho do databaze
	 *  
	 * @throws  object  Exception
	 */	 	  	 	
	public function store()
	{
		if ($exchange_rates = $this->exchange_rates_fetcher->getExchangeRates()) {
			$bank_code = $this->exchange_rates_fetcher->getBankCode();
			
			$dbh = DbMysqlFactory::createDbObject(DB_TYPE);	// vytvorime link do DB s pristupy na test ci ostry server
			
			$fetched = date('Y-m-d H:i:s');
			
			foreach ($exchange_rates as $exchange_rate) {
				$currency = $exchange_rate->currency;
				$purchase = $exchange_rate->purchase;
				$sale     = $exchange_rate->sale;
				$query = 'INSERT INTO bank_rates SET
			              bank_info_code = :1,
				          currency_code  = :2,
				          rate_purchase  = :3,
				          rate_sale      = :4,
				          fetched        = :5
						  ';
			
				$went_ok = $dbh->prepare($query)->execute($bank_code, $currency, $purchase, $sale, $fetched);
				if(!$went_ok) {
					echo $query.'<br />';
					throw new Exception('Kurz banky '.$bank_code.' se nepodarilo ulozit');
				}

			}
		}
		else {
			echo 'Neni co ukladat<br />';
		}
	}
	
}