public function actionUpdate() { $mainCurrency = Currency::getMainCurrency(); if ($mainCurrency === null) { throw new \Exception("Main currency is not set"); } $currencies = Currency::find()->andWhere('currency_rate_provider_id != 0')->andWhere('id != :main_id', [':main_id' => $mainCurrency->id])->all(); $httpAdapter = new \Ivory\HttpAdapter\CurlHttpAdapter(); foreach ($currencies as $currency) { /** @var app\modules\shop\models\CurrencyRateProvider $providerModel */ $providerModel = $currency->rateProvider; if ($providerModel !== null) { try { $provider = $providerModel->getImplementationInstance($httpAdapter); if ($provider !== null) { $swap = new \Swap\Swap($provider); $rate = $swap->quote($currency->iso_code . '/' . $mainCurrency->iso_code)->getValue(); $currency->convert_rate = floatval($rate); if ($currency->additional_rate > 0) { // additional rate is in % $currency->convert_rate *= 1 + $currency->additional_rate / 100; } if ($currency->additional_nominal !== 0) { $currency->convert_rate += $currency->additional_nominal; } $currency->save(); echo $currency->iso_code . '/' . $mainCurrency->iso_code . ': ' . $rate . " == " . $currency->convert_rate . "\n"; } } catch (\Exception $e) { echo "Error updating " . $currency->name . ': ' . $e->getMessage() . "\n\n"; } } } }
/** * returns currency converted rate * @param Request $request * @return null|\Swap\Model\Rate */ public function converter(Request $request) { $httpAdapter = new \Ivory\HttpAdapter\FileGetContentsHttpAdapter(); $yahooProvider = new \Swap\Provider\YahooFinanceProvider($httpAdapter); $swap = new \Swap\Swap($yahooProvider); //simple if else statement to get reates from LKR to USD if (Input::get('cur') == 'LKR') { $rate = $swap->quote('USD/LKR'); } else { $rate = $swap->quote('LKR/USD'); } return $rate; }
public function adminCurrency() { $currency_selected = $_POST['currency_selected']; /* $keycurrency = Keywords::find(5); $original_selection = $keycurrency->keyword; */ $original_selection = Config::get('app.generic_keywords.Currency'); if ($original_selection == '$') { $original_selection = "USD"; } if ($currency_selected == '$') { $currency_selected = "USD"; } if ($currency_selected == $original_selection) { // same currency $data['success'] = false; $data['error_message'] = 'Same Currency.'; } else { $httpAdapter = new \Ivory\HttpAdapter\FileGetContentsHttpAdapter(); // Create the Yahoo Finance provider $yahooProvider = new \Swap\Provider\YahooFinanceProvider($httpAdapter); // Create Swap with the provider $swap = new \Swap\Swap($yahooProvider); $rate = $swap->quote($original_selection . "/" . $currency_selected); $rate = json_decode($rate, true); $data['success'] = true; $data['rate'] = $rate; } return $data; }
public function convert($total) { $httpAdapter = new \Ivory\HttpAdapter\FileGetContentsHttpAdapter(); $yahooProvider = new \Swap\Provider\YahooFinanceProvider($httpAdapter); // Create Swap with the provider $swap = new \Swap\Swap($yahooProvider); $rate = $swap->quote('LKR/USD')->getValue(); return $rate * $total; }
public function request_fare() { $latitude = Input::get('latitude'); $longitude = Input::get('longitude'); $d_latitude = Input::get('d_latitude'); $d_longitude = Input::get('d_longitude'); $type = Input::get('type'); $provider = Input::get('provider'); $promo_code = trim(Input::get('promo_code')); $time = 0; $distance = 0; $request_typ = ProviderType::where('id', '=', $type)->first(); $setbase_distance = $request_typ->base_distance; $setbase_price = $request_typ->base_price; $setdistance_price = $request_typ->price_per_unit_distance; $settime_price = $request_typ->price_per_unit_time; /* $json_resp = file_get_contents('http://maps.googleapis.com/maps/api/distancematrix/json?origins=' . $latitude . ',' . $longitude . '&destinations=' . $d_latitude . ',' . $d_longitude); */ /* $data = json_decode($json_resp); Log::info('data = ' . print_r($data, true)); $distance = $data->rows[0]->elements[0]->distance->value; $time = $data->rows[0]->elements[0]->duration->value; */ $settings = Settings::where('key', 'default_distance_unit')->first(); $unit = $settings->value; $distance = get_dist($latitude, $longitude, $d_latitude, $d_longitude); Log::info('data = ' . print_r($distance, true)); if ($unit == 0) { $distanceNew = $distance * 0.001; /* $setdistance_price = Settings::where('key', 'price_per_unit_distance')->first(); $price_per_unit_distance = $setdistance_price->value * $distanceNew; */ if ($distanceNew <= $setbase_distance) { $price_per_unit_distance = 0; } else { $price_per_unit_distance = $setdistance_price->value * ($distanceNew - $setbase_distance); } } else { $distanceNew = $distance * 0.000621371; /* $setdistance_price = Settings::where('key', 'price_per_unit_distance')->first(); $price_per_unit_distance = $setdistance_price->value * $distanceNew; */ if ($distanceNew <= $setbase_distance) { $price_per_unit_distance = 0; } else { $price_per_unit_distance = $setdistance_price->value * ($distanceNew - $setbase_distance); } } $timeMinutes = $time * 0.0166667; /* $settime_price = Settings::where('key', 'price_per_unit_time')->first(); $price_per_unit_time = $settime_price->value * $timeMinutes; */ $price_per_unit_time = $settime_price * $timeMinutes; $total = 0; $base_price = 0; if (Input::has('provider')) { $pt = ProviderServices::where('provider_id', $provider)->where('type', $type)->first(); $base_price = $pt->base_price; if ($distanceNew <= $setbase_distance) { $price_per_unit_distance = 0; } else { $price_per_unit_distance = $pt->price_per_unit_distance * ($distanceNew - $setbase_distance); } $total = $base_price + $price_per_unit_distance + $price_per_unit_time; } else { /* $setbase_price = Settings::where('key', 'base_price')->first(); $base_price = $setbase_price->value; */ $base_price = $setbase_price; /* $setdistance_price = Settings::where('key', 'price_per_unit_distance')->first(); $price_per_unit_distance = $setdistance_price->value * $distanceNew; */ if ($distanceNew <= $setbase_distance) { $price_per_unit_distance = 0; } else { $price_per_unit_distance = $setdistance_price->value * ($distanceNew - $setbase_distance); } $total = $base_price + $price_per_unit_distance + $price_per_unit_time; } if ($promo_code) { $promosett = Settings::where('key', 'promotional_code_activation')->first(); $promo_discount = 0; $total_amount = $total; if ($promosett->value == 1) { /* if ($request->promo_code != "") { */ $promo_code = PromoCodes::where('coupon_code', $promo_code)->first(); if (isset($promo_code->id)) { $promo_value = $promo_code->value; $promo_type = $promo_code->type; if ($promo_type == 1) { $discount = $total_amount * ($promo_value / 100); } elseif ($promo_type == 2) { $discount = $promo_value; } $promo_discount = $discount; /* } */ $total = $total_amount - $promo_discount; } } } /* $currency_selected = Keywords::find(5); if ($currency_selected->keyword == '$') { */ if (Config::get('app.generic_keywords.Currency') == '$') { $currency_sel = "USD"; } else { /* $currency_sel = $currency_selected->keyword; */ $currency_sel = Config::get('app.generic_keywords.Currency'); } if ($currency_sel != 'USD') { $httpAdapter = new \Ivory\HttpAdapter\FileGetContentsHttpAdapter(); // Create the Yahoo Finance provider $yahooProvider = new \Swap\Provider\YahooFinanceProvider($httpAdapter); // Create Swap with the provider $swap = new \Swap\Swap($yahooProvider); $rate = $swap->quote("USD/" . $currency_sel); $rate = json_decode($rate, true); Log::info($rate); $total = $total * $rate; } $status = 1; /* return Response::json(array('success' => true, 'total' => $currency_selected->keyword . " " . $total)); */ return Response::json(array('success' => true, 'total' => Config::get('app.generic_keywords.Currency') . " " . sprintf2($total, 2))); }