/** * @author Nagy Ervin <*****@*****.**> * @return string - relative path of generated QRCode img * @version 0.1 */ public function create() { $currencies = Currencies::where('active', '=', 1)->orderBy('main_currency', 'desc')->lists('name', 'id'); if (Request::isMethod('post')) { $rules = ['currency' => 'required', 'amount' => 'required']; $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { $messages = $validator->messages(); return Redirect::to('payment/create-invoice')->withErrors($messages)->withInput(); } else { //$bitcoin = new App\Libs\BitCoind\Bitcoineasy(Config::get('constants.daemonUser'), Config::get('constants.daemonPassword'), "localhost", 8332); //$addr = $bitcoin->getnewaddress(); $codeContents = '14rg72MKDpYUufXrLrZtBufxpofcTdx18e'; $relaivePath = Config::get('constants.qrcodeRelativePath'); $tempDir = Config::get('constants.qrcodeAbsolutePath'); $fileName = 'qrcode_' . md5(microtime()) . '.png'; $pngAbsoluteFilePath = $tempDir . $fileName; $urlRelativeFilePath = $relaivePath . $fileName; App\Libs\QrCode\QRcode::png($codeContents, $pngAbsoluteFilePath, QR_ECLEVEL_H, 10, 2); return view('payment.payinvoice', ['url' => $urlRelativeFilePath]); } } return view('payment.create', ['currencies' => $currencies]); }
/** * Show the application dashboard to the user. * * @return Response */ public function getRates() { if (!($xml = simplexml_load_file("http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote"))) { trigger_error('Error reading XML file', E_USER_ERROR); } $xml_file = array(); $shortcodes = array(); $i = 1; $data = Currencies::all(); foreach ($data as $key) { foreach ($xml->resources->resource as $syn) { //print_r($syn->field);exit; $explode_name = explode("/", $syn->field[0]); $explode_name2 = explode(" ", $syn->field[0]); // print_r($syn);exit; if ($explode_name2[0] == 'GOLD' && $key->shortcode == 'XAU') { $explode_name2[0] = 'XAU'; if (!in_array($explode_name2[0], $shortcodes)) { $shortcodes[] = $explode_name2[0]; } if ($key->shortcode == $explode_name2[0] && $explode_name2[0] != 'USD') { $xml_file['USD_' . $explode_name2[0]][] = array('id' => $i, 'source' => 'USD', 'target' => $explode_name2[0], 'rate' => (double) $syn->field[1], 'time' => date('Y-m-d H:i:s')); $i++; } } if ($syn->field[0] == 'SILVER 1 OZ 999 NY' && $key->shortcode == 'XAG') { $explode_name2[0] = 'XAG'; if (!in_array($explode_name2[0], $shortcodes)) { $shortcodes[] = $explode_name2[0]; } if ($key->shortcode == $explode_name2[0] && $explode_name2[0] != 'USD') { $xml_file['USD_' . $explode_name2[0]][] = array('id' => $i, 'source' => 'USD', 'target' => $explode_name2[0], 'rate' => (double) $syn->field[1], 'time' => date('Y-m-d H:i:s')); $i++; } } if ($explode_name[1] != 'BTC' && $explode_name[1] != 'LTC' && $explode_name[0] != 'BTC' && $explode_name[0] != 'LTC') { echo 'itt'; exit; if (!in_array($explode_name[1], $shortcodes) && $key->shortcode == $explode_name[1]) { $shortcodes[] = $explode_name[1]; } if ($key->shortcode == $explode_name[1] && $explode_name[1] != 'USD') { $xml_file[$explode_name[0] . '_' . $explode_name[1]][] = array('id' => $i, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => (double) $syn->field[1], 'time' => date('Y-m-d H:i:s')); $i++; } } // print_r($explode_name);exit; } } /*print_r($xml_file); exit;*/ $count = $i; $shortcodes[] = 'BTC'; $shortcodes[] = 'LTC'; print_r($shortcodes); exit; $variation = array(); for ($i = 0; $i < count($shortcodes); $i++) { for ($j = 0; $j < count($shortcodes); $j++) { if ($i != $j) { $variation[$i][$j] = $shortcodes[$i] . '_' . $shortcodes[$j]; if (array_key_exists($variation[$i][$j], $xml_file)) { //print($variation[$i][$j]." "); //print $xml_file[$variation[$i][$j]] [$i]['rate']." "; } else { if (array_key_exists($variation[$j][$i], $xml_file)) { //print($variation[$i][$j]." "); $rezult = (double) (1 / $xml_file[$variation[$j][$i]][$j]['rate'] . " "); //print($rezult); //$xml_file[$variation[$j][$i]] [$j]['rate']=$rezult; $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; } } //echo $variation[$i][$j]." "; } } /*echo"<br />";*/ } /*print_r($xml_file)." "; print_r($variation); exit;*/ for ($i = 0; $i < count($shortcodes); $i++) { for ($j = 0; $j < count($shortcodes); $j++) { $rezult = 0; switch ($variation[$i][$j]) { case 'BTC_LTC': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; case 'BTC_USD': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; case 'LTC_BTC': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; case 'LTC_USD': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; case 'USD_BTC': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; case 'USD_LTC': $rezult = $this->{$variation[$i][$j]}(); $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $rezult, 'time' => date('Y-m-d H:i:s')); $count++; break; } } } /*print(count($xml_file)." "); print_r($xml_file); exit;*/ for ($i = 0; $i < count($shortcodes); $i++) { for ($j = 0; $j < count($shortcodes); $j++) { if ($i != $j) { if (!array_key_exists($variation[$i][$j], $xml_file)) { /*print($xml_file[$variation[$i][0]] [$i]['rate']); print($xml_file[$variation[0][$j]] [$i]['rate']);*/ $result = (double) ($xml_file[$variation[$i][0]][0]['rate'] * $xml_file[$variation[0][$j]][0]['rate']); /*print($variation[$i][$j]); print($result); exit;*/ $explode_name = explode("_", $variation[$i][$j]); $xml_file[$variation[$i][$j]][] = array('id' => $count, 'source' => $explode_name[0], 'target' => $explode_name[1], 'rate' => $result, 'time' => date('Y-m-d H:i:s')); $count++; } } } } foreach ($xml_file as $key => $currenciesPairs) { foreach ($currenciesPairs as $key => $currenciesPair) { $source_currency_id = Currencies::where('shortcode', "=", $currenciesPair['source'])->first()->id; $target_currency_id = Currencies::where('shortcode', "=", $currenciesPair['target'])->first()->id; $model = ExchangeRates::where('source_currency_id', "=", $source_currency_id)->where('target_currency_id', "=", $target_currency_id)->first(); if (count($model) == 0 && isset($currenciesPair['rate']) && is_numeric($currenciesPair['rate']) && $currenciesPair['rate'] > 0) { $new_model = new ExchangeRates(); $new_model->source_currency_id = $source_currency_id; $new_model->target_currency_id = $target_currency_id; $new_model->rate = $currenciesPair['rate']; $new_model->time = date('Y-m-d H:i:s'); if ($new_model->save()) { } else { print_r($new_model->getErrors()); } } else { $theRate = 0; if (isset($currenciesPair['rate']) && is_numeric(strip_tags(trim($currenciesPair['rate']))) && $currenciesPair['rate'] > 0) { $theRate = $currenciesPair['rate']; } else { $theRate = $model->rate; } $model->rate = $theRate; $model->time = date('Y-m-d H:i:s'); $model->save(); } } } print_r($xml_file); exit; }