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)));
 }