/**
  * This command pulls new messages from twitter
  */
 public function actionPulltweets()
 {
     $this->stdout("Starting Pulltweets!\n", Console::FG_CYAN);
     $CurrentDate = new \DateTime('NOW');
     $TwitterSettings = array('oauth_access_token' => Yii::$app->params["oauth_access_token"], 'oauth_access_token_secret' => Yii::$app->params["oauth_access_token_secret"], 'consumer_key' => Yii::$app->params["consumer_key"], 'consumer_secret' => Yii::$app->params["consumer_secret"]);
     $TwitterApi = new TwitterAPIExchange($TwitterSettings);
     $Contests = Contest::findAll(['active' => 1]);
     foreach ($Contests as $Contest) {
         if ($CurrentDate->format('Y-m-d') >= $Contest->parse_from && $CurrentDate->format('Y-m-d') <= $Contest->parse_to) {
             $this->stdout("Get Next Data for " . $Contest->name . "!\n", Console::FG_YELLOW);
             $GetData = '';
             if ($Contest->next_result_query != null) {
                 $GetData = urldecode($Contest->next_result_query) . '&count=100';
                 $this->stdout("Exec Query: " . $GetData . "!\n", Console::FG_YELLOW);
             } else {
                 $GetData = '?q=' . $Contest->trigger . '&result_type=mixed&count=100';
                 $this->stdout("First Query: " . $GetData . "!\n", Console::FG_YELLOW);
             }
             // pull next results
             $TwitterData = $TwitterApi->setGetfield($GetData)->buildOauth($this->TwitterUrl, 'GET')->performRequest();
             $jsonData = Json::decode($TwitterData, true);
             // only save data if we have new results from API
             if (sizeof($jsonData["statuses"]) > 0) {
                 $CrawlerData = new CrawlerData();
                 $CrawlerData->contest_id = $Contest->id;
                 $CrawlerData->data = $TwitterData;
                 if ($CrawlerData->save()) {
                     $this->stdout("Saved new Crawler Data for Contest " . $Contest->name . "!\n", Console::FG_GREEN);
                 } else {
                     $this->stdout("Error Saving Crawler Data!\n", Console::BOLD);
                     $this->stdout(print_r($CrawlerData->errors) . "\n", Console::BOLD);
                 }
             }
             $last_parse_date = new DateTime('NOW');
             $Contest->last_parse = $last_parse_date->format('Y-m-d H:i:s');
             if ($Contest->save()) {
                 $this->stdout("Last parse date for Contest " . $Contest->name . " saved!\n", Console::FG_GREEN);
             } else {
                 $this->stdout("Error last parse date for Contest " . $Contest->name . "!\n", Console::BOLD);
                 $this->stdout(print_r($Contest->errors) . "\n", Console::BOLD);
             }
         } else {
             $this->stdout("Skipping " . $Contest->name . "!\n", Console::FG_YELLOW);
         }
     }
 }