public function autoTopUpCheck(RemoteDataCache $dataCache)
 {
     /**
      * @var AutoTopupConfiguration $autoTopUpConfiguration
      */
     /*get autoconfiguration */
     Yii::trace('searching auto topup configuration', 'disable_trace');
     $autoTopUpCriteria = new CDbCriteria();
     $autoTopUpCriteria->compare("remote_data_cache", $dataCache->id);
     $autoTopUpConfiguration = AutoTopupConfiguration::model()->find($autoTopUpCriteria);
     /*check if active */
     if ($autoTopUpConfiguration && $autoTopUpConfiguration->activated && $autoTopUpConfiguration->budget > 0) {
         Yii::trace("auto configuration found configuration id : {$autoTopUpConfiguration->id} under {$dataCache->id}", 'disable_trace');
         /*topup using topup value*/
         $formModel = new TopupForm();
         $formModel->accounts = $dataCache->sub_user;
         //load the single account
         $formModel->topupvalue = $autoTopUpConfiguration->topUpValue;
         if ($autoTopUpConfiguration->topUpValue > $autoTopUpConfiguration->budget) {
             Yii::trace('Budget worned out', 'disable_trace');
             $formModel->topupvalue = $autoTopUpConfiguration->budget;
             //no more budget
             $autoTopUpConfiguration->budget = 0;
         } else {
             Yii::trace('Decreasing budget', 'disable_trace');
             //decrease the allotted budget
             $autoTopUpConfiguration->budget -= $autoTopUpConfiguration->topUpValue;
         }
         Yii::trace('Saving budget', 'disable_trace');
         $autoTopUpConfiguration->save();
         //update the allotted budget
         Yii::trace('Budget saved', 'disable_trace');
         $formModel->andActivate = true;
         /*activate account*/
         Yii::trace('About to topup', 'disable_trace');
         $formModel->topupAccounts();
         Yii::trace('Topup done', 'disable_trace');
     } else {
         if ($autoTopUpConfiguration) {
             Yii::trace('auto config found', 'disable_trace');
             if ($autoTopUpConfiguration->activated) {
                 Yii::trace('auto config activated', 'disable_trace');
             } else {
                 Yii::trace('auto config disabled', 'disable_trace');
             }
             if ($autoTopUpConfiguration->budget > 0) {
                 Yii::trace('auto config budget is greater than zero', 'disable_trace');
             } else {
                 Yii::trace('auto config is zero', 'disable_trace');
             }
             Yii::trace('budget is ' . $autoTopUpConfiguration->budget, 'disable_trace');
         } else {
             Yii::trace('no auto config found', 'disable_trace');
         }
     }
 }
 public function actionTopUpSelected()
 {
     $formModel = new TopupForm();
     $numberOfAccounts = RemoteDataCache::model()->count();
     $topupLogsTotalToday = 0;
     $datasources = $this->loadDataSources();
     $chartInitialData = $datasources['iniChartData'];
     $sipAccountTempContainer = $datasources['sipAccountStr'];
     //append the current campaign
     foreach ($sipAccountTempContainer as $key => $currentAccount) {
         $campaignInformationRetriever = Yii::app()->campaignInformationRetriever;
         $sipAccountTempContainer[$key] = $key + 1 . " - " . $campaignInformationRetriever->getInformation($currentAccount) . " - " . $sipAccountTempContainer[$key];
     }
     $sipAccountsStr = json_encode($datasources['sipAccountStr']);
     $chartLabels = json_encode($sipAccountTempContainer);
     $seriesDataStr = json_encode($datasources['chartSeriesData']);
     $allSipAccounts = array();
     /*retrieve all accounts to be topped up*/
     /*get all subsip logs from Vicilogs*/
     $criteria = new CDbCriteria();
     $criteria->compare("date(logDate)", date("Y-m-d"));
     $criteria->compare("action_type", 'SUB_ACCOUNT_TOPUP');
     $criteria->order = "logDate DESC";
     $logRecsTodayDataProvider = new CActiveDataProvider('ViciLogAction', array('criteria' => $criteria, 'pagination' => array('pageSize' => 20)));
     /**
      * Topup implementation
      */
     if (isset($_POST['TopupForm'])) {
         $formModel->attributes = $_POST['TopupForm'];
         if ($formModel->validate()) {
             $numberOfAffectedAccounts = $formModel->topupAccounts();
             Yii::app()->user->setFlash("success", "Success! All {$numberOfAffectedAccounts} account(s) are topped up.");
             $this->redirect(array('/subSipAccount/topUpSelected'));
         }
     }
     foreach ($logRecsTodayDataProvider->data as $key => $value) {
         $topupLogsTotalToday += $value->topUpValue;
     }
     $allSipAccounts = $this->getRemoteDataCacheAccounts();
     //append current campaign
     //List of force agent options
     $forceAgentModelAll = ForceAgentTable::model()->findAll();
     $listForceAgentCollection = CHtml::listData($forceAgentModelAll, 'force_agent_value', 'force_agent_lbl');
     $this->render('topUpSelected', compact('chartLabels', 'formModel', 'allSipAccounts', 'topupLogsTotalToday', 'logRecsTodayDataProvider', 'numberOfAccounts', 'sipAccountsStr', 'sipAccountsStr', 'seriesDataStr', 'listForceAgentCollection'));
 }