public function search($type, $limit = 500)
{
list($criteria, $sort) = $this->getCriteriaRatingByType($type);
$exp = new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => $limit,
),
'sort' => array(
'defaultOrder' => $sort,
),
));
return $exp;
}
public function getCriteriaRatingByType($type)
{
$criteria = new CDbCriteria;
if ($type == 6) {
$criteria->select = '*, case
when t.`rating_workday` >= 10 THEN t.rating_value*1000
else rating_value
end as rating_value_test';
} else {
$criteria->select = '*, rating_value as rating_value_test';
}
$criteria->join = 'LEFT OUTER JOIN `admin_user` `rxUser` ON (`t`.`rx_user` = `rxUser`.`uid`)';
$criteria->compare('rx_ratingtype', $type);
$criteria->compare('rating_value', $this->rating_value);
$sort = 'rating_value_test DESC';
if (isset($_POST['rating_date'])) {
$this->resetScope();
$criteria->addCondition("rating_date='" . $_POST['rating_date'] . "'");
if ($_POST['rating_date'] >= '1506') {
$sort .= ', rating_workday DESC, rx_user ASC';
}
}
$criteria->addCondition('t.rx_user in (select uid from admin_user WHERE admin_user.role = "USER" and admin_user.role_status = 3)');
// исключение из рейтинга определенных пользователей
$criteria->addNotInCondition('t.rx_user', array('896'));
if (isset($_POST['rx_area']) and (Yii::app()->user->role == User::ROLE_ADMIN or Yii::app()->user->role == User::ROLE_MODERATOR)) {
$criteria->addCondition("rx_area=" . $_POST['rx_area']);
return array($criteria, $sort);
} else {
if (Yii::app()->user->rx_area) {
$criteria->addCondition("rx_area=" . Yii::app()->user->rx_area);
return array($criteria, $sort);
} else {
$criteria->addCondition("rx_area=1");
return array($criteria, $sort);
}
}
}