public function search($params) { $query = Message::find()->innerJoinWith(['region' => function ($q) { /* @var \yii\db\ActiveQuery $q */ $q->onCondition([Region::tableName() . '.id' => \Yii::$app->user->identity->currentRegion]); }], false)->innerJoinWith(['payments', 'client', 'category'])->orderBy([Message::tableName() . '.create_dt' => SORT_DESC])->distinct(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 50, 'pageSizeParam' => 'inpage']]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } switch ($this->timeMark) { case self::TIME_ALL: $query->active(); break; case self::TIME_CURRENT: $query->active()->andWhere([Payment::tableName() . '.num' => Payment::currentNumber()]); break; case self::TIME_FUTURE: $query->active()->andWhere(['>', Payment::tableName() . '.num', Payment::currentNumber()]); break; case self::TIME_PREVIOUS: $query->active()->andWhere(['<', Payment::tableName() . '.num', Payment::currentNumber()]); break; case self::TIME_REMOVED: $query->deleted(); break; } if (!empty($this->subject)) { switch ($this->type) { case self::TYPE_PHONE: $query->andWhere(['LIKE', Phone::tableName() . '.number', $this->subject])->orWhere(['LIKE', Message::tableName() . '.phone', $this->subject]); break; case self::TYPE_CLIENT: $query->andWhere(['LIKE', Client::tableName() . '.name', $this->subject]); break; case self::TYPE_NUM: $query->andWhere([Payment::tableName() . '.num' => $this->subject]); break; } } return $dataProvider; }
public function actionEmptyads() { $msgs = Message::findBySql(' select tm.* from ' . Message::tableName() . ' tm where ( select count(id) as cnt from ' . Payment::tableName() . ' tp where tp.message_id = tm.id ) < 1 ')->with('category')->all(); return $this->render('emptyads', ['messages' => $msgs]); }
public function getData($validate = true) { if ($validate && !$this->validate()) { return false; } $statistic = new StatisticSet(['categorySets' => $this->endCategories]); $msgs = $this->getTargetMessages(false); $old = ArrayHelper::getColumn(Payment::find()->where(['num' => $this->number - 1, 'message_id' => ArrayHelper::getColumn($msgs, 'id')])->select(['id', 'message_id'])->asArray()->all(), 'message_id'); $set = null; $isNew = false; $pm = null; foreach ($msgs as $data) { $set = $statistic->getCategorySet($data->category_id); if (!$set) { continue; } $paid = null; $isNew = !in_array($data->id, $old); $pm = $data->payments[0]; $paid = $pm->amount != 0; //$set->incrementStat('paymentsCount'); $set->incrementStat('Принято'); switch ($pm->status) { case Payment::STATUS_PENDING: if ($paid) { $set->incrementStat('paymentsPaidWait'); } break; case Payment::STATUS_FAIL: if ($paid) { $set->incrementStat('paymentsPaidFail'); } break; case Payment::STATUS_SUCCESS: //$set->incrementStat($paid ? 'paymentsPaidAccept' : 'paymentsFreeAccept'); $set->incrementStat('Оплачено'); break; } switch ($pm->price_type) { case Price::TYPE_FRAME: //$set->incrementStat('priceInFrame'); $set->incrementStat('в рамке'); break; case Price::TYPE_BOLD: //$set->incrementStat('priceHighlighted'); $set->incrementStat('жирный шрифт'); break; case Price::TYPE_BOLDED_FRAME: //$set->incrementStat('priceHighlightedInFrame'); $set->incrementStat('выделенное в рамке'); break; case Price::TYPE_COLORED_BACKGROUND: //$set->incrementStat('priceColoredBackground'); $set->incrementStat('на цветном фоне'); break; case Price::TYPE_DIAMOND: //$set->incrementStat('priceMarkedDiamond'); $set->incrementStat('выделенное маркером'); break; case Price::TYPE_SHAPED_FRAME: //$set->incrementStat('priceShapedFrame'); $set->incrementStat('фигурная рамка'); break; case Price::TYPE_STANDART: //$set->incrementStat('priceStandart'); $set->incrementStat('обычное'); break; } if ($pm->site == 1) { $set->incrementStat('размещение на сайт'); } $set->incrementStat('Топ ' . $pm->position); $set->incrementStat($paid ? 'paymentsPaidCount' : 'paymentsFreeCount'); $set->incrementStat($isNew ? 'messageNew' : 'messageProlong'); } return $statistic; }