Esempio n. 1
0
 protected function findModel($id)
 {
     if (($model = Promotion::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Esempio n. 2
0
File: VK.php Progetto: apuc/api
 public function save()
 {
     if (!$this->validate()) {
         return false;
     }
     $db = \Yii::$app->db;
     $transaction = $db->beginTransaction();
     try {
         $promotion = new Promotion();
         $promotion->user_id = \Yii::$app->user->getId();
         $promotion->url = $this->url;
         $promotion->page_id = VKApi::getGroupIdByUrl($this->url);
         $promotion->status = Promotion::NOT_MODERATED;
         $promotion->save();
         if ($this->hasLikeQuery()) {
             $likeTask = new Task();
             $likeTask->service_id = Service::LIKE_VK;
             $likeTask->promotion_id = $promotion->id;
             $likeTask->task = json_encode($this->getLikeQuery());
             $likeTask->save();
         }
         if ($this->hasRepostQuery()) {
             $likeTask = new Task();
             $likeTask->service_id = Service::REPOST_VK;
             $likeTask->promotion_id = $promotion->id;
             $likeTask->task = json_encode($this->getRepostQuery());
             $likeTask->save();
         }
         if ($this->hasCommentQuery()) {
             $likeTask = new Task();
             $likeTask->service_id = Service::COMMENT_VK;
             $likeTask->promotion_id = $promotion->id;
             $likeTask->task = json_encode($this->getCommentQuery());
             $likeTask->save();
         }
         $transaction->commit();
     } catch (Exception $e) {
         $transaction->rollBack();
         return false;
     }
     return true;
 }
Esempio n. 3
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Promotion::find()->where(['status' => [Promotion::NOT_MODERATED]]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['id' => SORT_DESC]], 'pagination' => ['pageSize' => 20]]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'user_id' => $this->user_id, 'page_id' => $this->page_id, 'status' => $this->status]);
     $query->andFilterWhere(['like', 'url', $this->url]);
     return $dataProvider;
 }
Esempio n. 4
0
 public function actionGo()
 {
     $groups = Promotion::findAll(['status' => Promotion::MODERATED]);
     foreach ($groups as $group) {
         $wall = VKApi::getWallPosts($group->page_id);
         if ($wall) {
             $parsingPeriod = mktime(strftime('-1 hour', time()));
             foreach ($wall as $post) {
                 //если пост подходит по времени
                 if ($post['date'] > $parsingPeriod) {
                     //формирум урл поста https://vk.com/feed?w=wall-57424472_71791
                     $dbPost = new Post();
                     $dbPost->post_id = $post['id'];
                     $dbPost->promotion_id = $group->page_id;
                     $dbPost->save();
                     $postUrl = 'https://vk.com/feed?w=wall' . $group->page_id . '_' . $post['id'];
                     //получаем таски
                     $tasks = Task::findAll(['promotion_id' => $group->id]);
                     foreach ($tasks as $task) {
                         $taskArr = json_decode($task->task);
                         //дописываем в урл и цену лайков
                         $taskArr['task']['url'] = $postUrl;
                         $taskArr['task']['cost'] = $task->service->minimum_likes_per_task;
                         //получаем цену таска
                         $pricePerOne = $task->service->price_per_one_task;
                         $priceAll = $pricePerOne * $taskArr['task']['members_count'];
                         //списываем деньги с пользователя к которому он относится
                         $user = $group->user;
                         if ($user->money - $priceAll >= 0) {
                             $user->money -= $priceAll;
                             $user->save();
                             //если хватило то отсылаем таск
                             $this->setTask($taskArr);
                         }
                     }
                 }
             }
         }
         usleep(335000);
     }
 }
Esempio n. 5
0
File: Task.php Progetto: apuc/api
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getPromotion()
 {
     return $this->hasOne(Promotion::className(), ['id' => 'promotion_id']);
 }
Esempio n. 6
0
File: index.php Progetto: apuc/api
$this->title = 'Orders';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="order-index">

    <h1><?php 
echo Html::encode($this->title);
?>
</h1>
    <?php 
// echo $this->render('_search', ['model' => $searchModel]);
?>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['attribute' => 'status', 'format' => 'text', 'filter' => \backend\modules\task\models\db\Order::getStatuses(), 'value' => function ($model) {
    return \common\models\db\Promotion::getStatuses()[$model->status];
}], ['attribute' => 'url', 'format' => 'raw', 'value' => function ($model) {
    return '<a href="' . $model->url . '" target=_blank>' . $model->url . '</a>';
}], ['class' => \yii\grid\DataColumn::className(), 'header' => 'Действия', 'format' => 'html', 'value' => function ($model, $index, $widget) {
    $apply = Html::a("<span class='glyphicon glyphicon-plus'></span>", Yii::$app->urlManager->createUrl(['autopromotion/order/apply', 'id' => $model->id]), ['class' => 'btn btn-default', 'title' => 'Принять']);
    $rejected = Html::a("<span class='glyphicon glyphicon-minus'></span>", Yii::$app->urlManager->createUrl(['autopromotion/ajax/rejected', 'id' => $model->id]), ['class' => 'btn btn-default view-rejected-modal', 'title' => 'Отклонить']);
    $buttons = '';
    if ($model->status == \common\models\db\Promotion::NOT_MODERATED) {
        $buttons = $apply . $rejected;
    }
    return $buttons;
}]]]);
?>
    <div id="modal-window-rejected" class="well modal-window-rejected">
        <div class="content">
            <a class="close-modal-rejected btn btn-default pull-right" href="#">x</a>
Esempio n. 7
0
 public function actionViewAll()
 {
     $userId = \Yii::$app->user->getId();
     $provider = new ActiveDataProvider(['query' => Promotion::find()->where(['user_id' => $userId]), 'sort' => ['defaultOrder' => ['id' => SORT_DESC]], 'pagination' => ['pageSize' => 20]]);
     return $this->render('index', ['provider' => $provider]);
 }