Ejemplo n.º 1
0
 public function run($args)
 {
     $mem_start = memory_get_usage();
     $bankiRuData = new BankiRuParser('bankiRu');
     $bankiRuData->currencyType = 0;
     $bankiRuData->parse();
     $rbcDataDollar = new RbcParser('rbc');
     $rbcDataDollar->currencyType = 1;
     $rbcDataDollar->parse();
     $rbcDataEuro = new RbcParser('rbc');
     $rbcDataEuro->currencyType = 2;
     $rbcDataEuro->parse();
     ApiData::getRates(False);
     # обновим кеш, чтобы в нем были валидные данные, пока мы над базой колдуем
     ApiData::getCoordinates(False);
     ApiData::getDepartments(False);
     $connection = Yii::app()->db;
     $transaction = $connection->beginTransaction();
     try {
         BankCourses::model()->deleteAll();
         $bankiRuData->save();
         $rbcDataDollar->save();
         $rbcDataEuro->save();
         $transaction->commit();
     } catch (Exception $e) {
         print '---------------------------------------------------';
         print_r($e);
         $transaction->rollback();
     }
     ApiData::getRates(False);
     # обновим кеш, чтобы в нем были обновленные данные
     ApiData::getCoordinates(False);
     ApiData::getDepartments(False);
     echo memory_get_usage() - $mem_start;
 }
Ejemplo n.º 2
0
 public static function getCoordinates($checkCache = true)
 {
     $response = new ApiResponseModel();
     $data = array();
     if ($checkCache) {
         $data = ApiCache::get(Yii::app()->params['cache']['keys']['coordinates']);
     }
     if (!$data) {
         $availableBanks = BankCourses::model()->findAvailableBanks()->findAll();
         if (count($availableBanks) > 0) {
             $ids = array();
             foreach ($availableBanks as $bankInfo) {
                 $ids[] = $bankInfo['bank_id'];
             }
             $answer = new CoordinatesApiModel();
             $coordinates = BankBranches::model()->getDepartmentCoordinates($ids)->findAll();
             foreach ($coordinates as $coordinate) {
                 $answer->add($coordinate);
             }
             $data = $answer->getResult();
             $response->setData($data);
             $response->setHash(ApiCache::set(Yii::app()->params['cache']['keys']['coordinates'], $data, Yii::app()->params['cache']['time']));
         }
     } else {
         $response->setData($data);
         $response->setHash(ApiCache::getCheck(Yii::app()->params['cache']['keys']['coordinates']));
     }
     return $response->getApiResponse();
 }
Ejemplo n.º 3
0
 public function save()
 {
     foreach ($this->banks as $site_bank_id => $bankInfo) {
         $bank = Bank::model()->getBankByNameLike($bankInfo['name'])->find();
         if ($bank) {
             foreach ($bankInfo['rates'] as $currency => $info) {
                 $cur = new BankCourses();
                 $cur->bank_id = $bank->id;
                 $cur->buy = $info['buy'];
                 $cur->sale = $info['sell'];
                 $cur->currency = $currency;
                 $cur->save();
             }
         }
     }
 }
 public function actionView()
 {
     $bankId = Yii::app()->request->getQuery('id');
     $bank = Bank::model()->findByPk($bankId);
     $departments = BankBranches::model()->getBankDepartment($bankId)->findAll();
     $rates = BankCourses::model()->getBankRates($bankId)->findAll();
     $this->render('view', array('bank' => $bank, 'departments' => $departments, 'rates' => $rates));
 }
Ejemplo n.º 5
0
 public function save()
 {
     foreach ($this->banks as $key => $bankInfo) {
         $bank = False;
         $bankResource = BankResources::model()->getBankResource($this->sourceType, $key)->find();
         if ($bankResource) {
             $bank = Bank::model()->findByPk($bankResource->bank_id);
         }
         if (!$bank) {
             $bank = new Bank();
         }
         foreach ($bankInfo as $sum => $info) {
             if (!$bank->id) {
                 //                    $bank->phone = $info['info']['tel'];
                 $bank->address = $info['info']['address'];
                 $bank->name = $info['name'];
                 $bank->save();
                 $bankResource = new BankResources();
                 $bankResource->bank_id = $bank->id;
                 $bankResource->source_id = $this->sourceType;
                 $bankResource->source_alias = $key;
                 $bankResource->save();
                 $newBranch = new BankBranches();
                 $newBranch->address = $info['info']['address'];
                 $yandexGeoDecode = @file_get_contents('http://geocode-maps.yandex.ru/1.x/?format=json&results=1&geocode=город Москва, ' . $newBranch->address);
                 if ($yandexGeoDecode) {
                     $answer = json_decode($yandexGeoDecode, True);
                     if (!isset($answer['response']) && count($answer['response']['GeoObjectCollection']['featureMember']) == 0) {
                         continue;
                     }
                     $pos = $answer['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'];
                     $pos = explode(' ', $pos);
                     $newBranch->latitude = $pos[1];
                     $newBranch->longtitude = $pos[0];
                     $newBranch->preparePhone($info['info']['tel']);
                     $newBranch->save();
                     $newBranch->bank_id = $bank->id;
                     $newBranch->save();
                 }
             }
             if ($bank->id) {
                 $cur = new BankCourses();
                 $cur->bank_id = $bank->id;
                 $cur->buy = $info['pok'];
                 $cur->sale = $info['prod'];
                 $cur->sum = $sum;
                 $cur->currency = $this->siteCurrencyType;
                 $cur->save();
             }
         }
     }
 }