diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php index 6ae63f07f..b5c4f64a3 100644 --- a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php +++ b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php @@ -14,6 +14,7 @@ return [ 'ogImage', 'free_currencyconverterapi_key', 'enabled_currencies', + 'tcmb_exchange_url' ], ], 'ads' => [ @@ -48,7 +49,7 @@ return [ 'filter' => [ 'title' => 'visiosoft.module.advs::section.filter', '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' ], ], ], diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php index e24c637d5..686ef580b 100644 --- a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php +++ b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php @@ -41,6 +41,12 @@ return [ 'default_value' => 6, ], ], + 'tcmb_exchange_url' => [ + 'type' => 'anomaly.field_type.url', + 'config' => [ + 'default_value' => 'http://www.tcmb.gov.tr/kurlar', + ], + ], 'default_published_time' => [ 'type' => 'anomaly.field_type.integer', 'bind' => 'adv.default_published_time', diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/currency.php b/addons/default/visiosoft/advs-module/resources/lang/en/currency.php new file mode 100644 index 000000000..c923ea69f --- /dev/null +++ b/addons/default/visiosoft/advs-module/resources/lang/en/currency.php @@ -0,0 +1,6 @@ + 'Dolar', + 'EUR' => 'Euro', +]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php index a254559ff..5dfc18925 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php @@ -152,4 +152,7 @@ return [ 'show_lang_url' => [ 'name' => 'Show Lang Parameter For URL', ], + 'tcmb_exchange_url' => [ + 'name' => 'TCMB Exchange URL', + ], ]; diff --git a/addons/default/visiosoft/advs-module/src/Adv/Command/getExchange.php b/addons/default/visiosoft/advs-module/src/Adv/Command/getExchange.php new file mode 100644 index 000000000..bc7baf563 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Command/getExchange.php @@ -0,0 +1,72 @@ +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'; + } +} diff --git a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php index 6078ea99b..64d8e466b 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModulePlugin.php @@ -5,6 +5,7 @@ use Twig_Environment; use Visiosoft\AdvsModule\Adv\AdvModel; use Visiosoft\AdvsModule\Adv\Command\appendRequestURL; use Visiosoft\AdvsModule\Adv\Command\GetAd; +use Visiosoft\AdvsModule\Adv\Command\getExchange; use Visiosoft\AdvsModule\Adv\Command\isActive; use Visiosoft\AdvsModule\Adv\Command\LatestAds; use Visiosoft\AdvsModule\Currency\Currency; @@ -98,6 +99,16 @@ class AdvsModulePlugin extends Plugin return $fn->getCallable()(...$args); }, ['needs_environment' => true] + ), + new \Twig_SimpleFunction( + 'getExchange', + function ($currency = null) { + + if (!$exchange = $this->dispatch(new getExchange($currency))) { + return null; + } + return $exchange; + } ) ]; }