Users.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace app\models\user\search;
  3. use dektrium\user\models\UserSearch as BaseUserSearch;
  4. use Yii;
  5. use yii\data\ActiveDataProvider;
  6. class Users extends BaseUserSearch
  7. {
  8. /** @var integer */
  9. public $uuid;
  10. public $fio;
  11. public $cname;
  12. public $phone;
  13. public function rules()
  14. {
  15. return [
  16. 'fieldsSafe' => [['id', 'uuid', 'fio', 'cname', 'phone', 'email', 'registration_ip', 'created_at', 'last_login_at'], 'safe'],
  17. 'createdDefault' => ['created_at', 'default', 'value' => null],
  18. 'lastloginDefault' => ['last_login_at', 'default', 'value' => null],
  19. ];
  20. }
  21. /** @inheritdoc */
  22. public function attributeLabels()
  23. {
  24. return [
  25. 'id' => Yii::t('user', '#'),
  26. 'uuid' => Yii::t('user', 'Nomer Dogovora'),
  27. 'username' => Yii::t('user', 'Username'),
  28. 'email' => Yii::t('user', 'Email'),
  29. 'created_at' => Yii::t('user', 'Registration time'),
  30. 'last_login_at' => Yii::t('user', 'Last login'),
  31. 'registration_ip' => Yii::t('user', 'Registration ip'),
  32. ];
  33. }
  34. /**
  35. * @param $params
  36. *
  37. * @return ActiveDataProvider
  38. */
  39. public function search($params)
  40. {
  41. $query = $this->finder->getUserQuery();
  42. $dataProvider = new ActiveDataProvider([
  43. 'query' => $query,
  44. 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]],
  45. ]);
  46. if (!($this->load($params) && $this->validate())) {
  47. return $dataProvider;
  48. }
  49. $modelClass = $query->modelClass;
  50. $table_name = $modelClass::tableName();
  51. if ($this->created_at !== null) {
  52. $date = strtotime($this->created_at);
  53. $query->andFilterWhere(['between', $table_name . '.created_at', $date, $date + 3600 * 24]);
  54. }
  55. $query->andFilterWhere(['like', $table_name . '.username', $this->username])
  56. ->andFilterWhere(['like', $table_name . '.phone', $this->phone])
  57. ->andFilterWhere(['like', $table_name . '.email', $this->email])
  58. ->andFilterWhere(['like', $table_name . '.fio', $this->fio])
  59. ->andFilterWhere(['like', $table_name . '.cname', $this->cname])
  60. ->andFilterWhere([$table_name . '.id' => $this->id])
  61. ->andFilterWhere([$table_name . '.uuid' => $this->uuid])
  62. ->andFilterWhere([$table_name . 'registration_ip' => $this->registration_ip]);
  63. return $dataProvider;
  64. }
  65. }