added Exchange function

This commit is contained in:
vedatakd 2020-09-16 13:00:03 +03:00
parent 680ca11f77
commit 6b6ddbb5f3
6 changed files with 100 additions and 1 deletions

View File

@ -14,6 +14,7 @@ return [
'ogImage', 'ogImage',
'free_currencyconverterapi_key', 'free_currencyconverterapi_key',
'enabled_currencies', 'enabled_currencies',
'tcmb_exchange_url'
], ],
], ],
'ads' => [ 'ads' => [
@ -48,7 +49,7 @@ return [
'filter' => [ 'filter' => [
'title' => 'visiosoft.module.advs::section.filter', 'title' => 'visiosoft.module.advs::section.filter',
'fields' => [ 'fields' => [
'hide_price_filter','hide_date_filter','hide_photo_filter','hide_map_filter' 'hide_price_filter', 'hide_date_filter', 'hide_photo_filter', 'hide_map_filter'
], ],
], ],
], ],

View File

@ -41,6 +41,12 @@ return [
'default_value' => 6, 'default_value' => 6,
], ],
], ],
'tcmb_exchange_url' => [
'type' => 'anomaly.field_type.url',
'config' => [
'default_value' => 'http://www.tcmb.gov.tr/kurlar',
],
],
'default_published_time' => [ 'default_published_time' => [
'type' => 'anomaly.field_type.integer', 'type' => 'anomaly.field_type.integer',
'bind' => 'adv.default_published_time', 'bind' => 'adv.default_published_time',

View File

@ -0,0 +1,6 @@
<?php
return [
'USD' => 'Dolar',
'EUR' => 'Euro',
];

View File

@ -152,4 +152,7 @@ return [
'show_lang_url' => [ 'show_lang_url' => [
'name' => 'Show Lang Parameter For URL', 'name' => 'Show Lang Parameter For URL',
], ],
'tcmb_exchange_url' => [
'name' => 'TCMB Exchange URL',
],
]; ];

View File

@ -0,0 +1,72 @@
<?php namespace Visiosoft\AdvsModule\Adv\Command;
class getExchange
{
public $currency;
public function __construct($currency = null)
{
$this->currency = $currency;
}
public function handle($currency = null)
{
$exchange_xml = simplexml_load_file(setting_value('visiosoft.module.advs::tcmb_exchange_url') . '/today.xml');
$exchange_xml = json_decode(json_encode($exchange_xml), TRUE);
$exchange = [
'USD' => 0,
'EUR' => 3,
];
foreach ($exchange as $key => $exchange_key) {
$buy = $exchange_xml['Currency'][$exchange_key]['BanknoteSelling'];
$exchange[$key] = [
'sell' => $exchange_xml['Currency'][$exchange_key]['BanknoteBuying'],
'buy' => $buy,
'status' => $this->getStatus($buy, $exchange_key)
];
}
if ($this->currency) {
if (array_key_exists($this->currency, $exchange)) {
return $exchange[$this->currency];
}
return null;
}
return $exchange;
}
public function getStatus($today_buy, $exchange_key)
{
$today = now();
$number_of_days_to_be_reduced = 1;
if ($today->format('D') == 'Mon') {
$number_of_days_to_be_reduced = 3;
} else if ($today->format('D') == 'Sun') {
$number_of_days_to_be_reduced = 2;
}
$date = $today->addDays('-' . $number_of_days_to_be_reduced);
$year_and_month = $date->format('Ym');
$date = $date->format('dmY');
$exchange_xml = simplexml_load_file(setting_value('visiosoft.module.advs::tcmb_exchange_url') . '/' . $year_and_month . '/' . $date . '.xml');
$exchange_xml = json_decode(json_encode($exchange_xml), TRUE);
$old_buy = $exchange_xml['Currency'][$exchange_key]['BanknoteSelling'];
$difference = ($today_buy * 10000) - ($old_buy * 10000);
if ($difference > 0) {
return 'increased';
} elseif ($difference < 0) {
return 'decreased';
}
return 'equal';
}
}

View File

@ -5,6 +5,7 @@ use Twig_Environment;
use Visiosoft\AdvsModule\Adv\AdvModel; use Visiosoft\AdvsModule\Adv\AdvModel;
use Visiosoft\AdvsModule\Adv\Command\appendRequestURL; use Visiosoft\AdvsModule\Adv\Command\appendRequestURL;
use Visiosoft\AdvsModule\Adv\Command\GetAd; use Visiosoft\AdvsModule\Adv\Command\GetAd;
use Visiosoft\AdvsModule\Adv\Command\getExchange;
use Visiosoft\AdvsModule\Adv\Command\isActive; use Visiosoft\AdvsModule\Adv\Command\isActive;
use Visiosoft\AdvsModule\Adv\Command\LatestAds; use Visiosoft\AdvsModule\Adv\Command\LatestAds;
use Visiosoft\AdvsModule\Currency\Currency; use Visiosoft\AdvsModule\Currency\Currency;
@ -98,6 +99,16 @@ class AdvsModulePlugin extends Plugin
return $fn->getCallable()(...$args); return $fn->getCallable()(...$args);
}, ['needs_environment' => true] }, ['needs_environment' => true]
),
new \Twig_SimpleFunction(
'getExchange',
function ($currency = null) {
if (!$exchange = $this->dispatch(new getExchange($currency))) {
return null;
}
return $exchange;
}
) )
]; ];
} }