public function getData()
 {
     /**
      * Get all information and return
      */
     $finalArr = array();
     $asteriskData = AsteriskCarriers::getData();
     $voipInfoRetriever = new BestVOIPInformationRetriever();
     foreach ($asteriskData as $key => $currentAsteriskData) {
         $remoteVoipResult = $voipInfoRetriever->getInfo($currentAsteriskData['main_user'], $currentAsteriskData['main_pass'], $currentAsteriskData['sub_user'], $currentAsteriskData['sub_pass']);
         $currentAsteriskData['id'] = $key;
         $currentAsteriskData['balance'] = doubleval($remoteVoipResult->getBalance());
         $currentAsteriskData['exact_balance'] = doubleval($remoteVoipResult->getSpecificBalance());
         $finalArr[] = $currentAsteriskData;
     }
     return $finalArr;
 }
 public function actionIndex()
 {
     /*get all ids*/
     $remoteDataCacheIds = array();
     // retrieve all records from database
     $remoteDataCacheModels = RemoteDataCache::model()->findAll();
     //retrieve all records from remote
     $allAsteriskModels = AsteriskCarriers::getData();
     //collect the id
     foreach ($remoteDataCacheModels as $key => $value) {
         $remoteDataCacheIds[] = $value->id;
     }
     $remoteDataCacheModels = null;
     foreach ($remoteDataCacheIds as $currentRemoteDataCacheId) {
         $curRemoteDataCacheModel = RemoteDataCache::model()->findByPk($currentRemoteDataCacheId);
         $currentRemoteDataCacheExists = false;
         Yii::log("Checking :  {$curRemoteDataCacheModel->sub_user} | {$curRemoteDataCacheModel->sub_pass}", CLogger::LEVEL_INFO, 'sync_remove');
         /**
          * @var RemoteDataCache $currentRemoteDataCache
          */
         foreach ($allAsteriskModels as $currentAsteriskModel) {
             //check if matched
             if ($currentAsteriskModel['main_user'] === $curRemoteDataCacheModel->main_user && $currentAsteriskModel['main_pass'] === $curRemoteDataCacheModel->main_pass && $currentAsteriskModel['sub_user'] === $curRemoteDataCacheModel->sub_user && $currentAsteriskModel['sub_pass'] === $curRemoteDataCacheModel->sub_pass) {
                 Yii::log("RemoteDataCache exists! {$curRemoteDataCacheModel->sub_user} | {$curRemoteDataCacheModel->sub_pass}", CLogger::LEVEL_INFO, 'sync_remove');
                 $currentRemoteDataCacheExists = true;
                 continue;
             }
         }
         //end of loop allasteriskmodels
         if (!$currentRemoteDataCacheExists) {
             $logMessage = sprintf("Deleting record : %s | %s | %s | %s", $curRemoteDataCacheModel->main_user, $curRemoteDataCacheModel->main_pass, $curRemoteDataCacheModel->sub_user, $curRemoteDataCacheModel->sub_pass);
             Yii::log($logMessage, CLogger::LEVEL_INFO, "sync_remove");
             $curRemoteDataCacheModel->delete();
         }
     }
     //end of remotedatacache loop
 }
 public function actionRemoteAsteriskInfo()
 {
     header("Content-Type: application/json");
     echo json_encode(AsteriskCarriers::getData());
 }