Commit 658a5f37537813f0f9b3d3243ccebee7fc468698

Authored by Yarik
1 parent 3c470529

test

common/models/CustomerSearch.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace common\models;
  4 +
  5 + use Yii;
  6 + use yii\base\Model;
  7 + use yii\data\ActiveDataProvider;
  8 + use common\models\User;
  9 +
  10 + /**
  11 + * CustomerSearch represents the model behind the search form about `common\models\UserInfo`.
  12 + */
  13 + class CustomerSearch extends User
  14 + {
  15 +
  16 + public $type;
  17 +
  18 + public $rating;
  19 +
  20 + public $online;
  21 +
  22 + public $city;
  23 +
  24 + public $info;
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function rules()
  30 + {
  31 + return [
  32 + [
  33 + [
  34 + 'type',
  35 + 'rating',
  36 + 'online',
  37 + ],
  38 + 'integer',
  39 + ],
  40 + [
  41 + [
  42 + 'city',
  43 + 'info',
  44 + ],
  45 + 'safe',
  46 + ],
  47 + ];
  48 + }
  49 +
  50 + /**
  51 + * @inheritdoc
  52 + */
  53 + public function scenarios()
  54 + {
  55 + // bypass scenarios() implementation in the parent class
  56 + return Model::scenarios();
  57 + }
  58 +
  59 + /**
  60 + * Creates data provider instance with search query applied
  61 + *
  62 + * @param array $params
  63 + *
  64 + * @return ActiveDataProvider
  65 + */
  66 + public function search($params)
  67 + {
  68 + $query = User::find()
  69 + ->joinWith('userInfo')
  70 + ->joinWith('companyInfo');
  71 +
  72 + $dataProvider = new ActiveDataProvider([
  73 + 'query' => $query,
  74 + ]);
  75 +
  76 + $this->load($params);
  77 +
  78 + if(!$this->validate()) {
  79 + // uncomment the following line if you do not want to return any records when validation fails
  80 + // $query->where('0=1');
  81 + return $dataProvider;
  82 + }
  83 +
  84 + $query->andWhere([
  85 + 'is_customer' => 1,
  86 + ]);
  87 +
  88 + if($this->type == 2) {
  89 + $query->andWhere([
  90 + 'not',
  91 + [ 'company_info.company_info_id' => NULL ],
  92 + ]);
  93 +
  94 + $query->andWhere([
  95 + 'type' => 2,
  96 + ]);
  97 + } else {
  98 + $query->andWhere([
  99 + 'type',
  100 + ]);
  101 + }
  102 +
  103 + if($this->online == 1) {
  104 + $query->andWhere([
  105 + '>=',
  106 + 'user_info.date_visit',
  107 + date('Y-m-d H:i:s.u', time() - 1800),
  108 + ]);
  109 + }
  110 +
  111 + $query->andFilterWhere([
  112 + 'like',
  113 + 'user_info.city',
  114 + $this->city,
  115 + ]);
  116 +
  117 + return $dataProvider;
  118 + }
  119 + }
... ...
common/models/User.php
... ... @@ -97,6 +97,11 @@
97 97 ],
98 98 'safe',
99 99 ],
  100 + [
  101 + 'type',
  102 + 'default',
  103 + 'value' => 1,
  104 + ]
100 105 ];
101 106 }
102 107  
... ...
frontend/controllers/SearchController.php
... ... @@ -68,6 +68,7 @@ class SearchController extends Controller
68 68  
69 69  
70 70 public function actionCustomer(){
  71 +
71 72 return $this->render('customer',[
72 73 ]);
73 74 }
... ...
frontend/views/search/customer.php
1 1 <?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: vitaliy
5   - * Date: 09.03.16
6   - * Time: 10:21
7   - */
  2 + use common\models\CustomerSearch;
  3 +
  4 + $model = (new CustomerSearch())->search(\Yii::$app->request->queryParams);
  5 + var_dump($model->totalCount);
  6 +
8 7 ?>
9 8 <div class="section-box-22 section-box-customer">
10 9 <div class="box-wr">
... ...