public function actionVote()
 {
     if (Yii::$app->request->isAjax) {
         Yii::$app->response->format = Response::FORMAT_JSON;
     }
     $id = Yii::$app->request->getQueryParam('id');
     $vote = Yii::$app->request->getQueryParam('vote');
     switch ($vote) {
         case 'up':
             $v = 1;
             break;
         case 'down':
             $v = -1;
             break;
         default:
             throw new InvalidParamException('Vote must be up or down!');
     }
     $vote = new Vote(['vote' => $v, 'ip' => ip2long(Yii::$app->request->userIP), 'fingerprint' => md5(Yii::$app->request->userAgent), 'snippet_id' => $id]);
     if ($vote->validate()) {
         $vote->save();
         $paste = Code::findOne($vote->snippet_id);
         $message = Yii::t('happycode', 'Voted!');
         if (Yii::$app->request->isAjax) {
             return ['id' => $id, 'message' => $message, 'score' => $paste->score];
         } else {
             AlertHelper::appendAlert('success', $message);
             return $this->goBack();
         }
     } else {
         Yii::$app->response->statusCode = 403;
         $message = Yii::t('happycode', 'Already voted on this paste.');
         if (Yii::$app->request->isAjax) {
             return ['id' => $id, 'message' => $message];
         } else {
             AlertHelper::appendAlert('warning', $message);
             return $this->goBack();
         }
     }
 }