| Current Path : /var/www/html/project/models/ |
| Current File : /var/www/html/project/models/ProjectsSearch.php |
<?php
namespace app\models;
use yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use app\models\Projects;
/**
* ProjectsSearch represents the model behind the search form of `app\models\Projects`.
*/
class ProjectsSearch extends Projects {
public $search_startdt;
public $search_enddt;
/**
* {@inheritdoc}
*/
public function rules() {
return [
[['id', 'staff_me', 'staff_gd', 'staff_wd', 'staff_cw', 'status', 'created_by', 'updated_by'], 'integer'],
[['name', 'start_dt', 'end_dt', 'progress', 'created_dt', 'updated_dt', 'search_startdt', 'search_enddt', 'cat'], 'safe'],
];
}
/**
* {@inheritdoc}
*/
public function scenarios() {
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params) {
$query = Projects::find();
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 15,]]);
$dataProvider->setSort(['defaultOrder' => ['id' => SORT_DESC]]);
$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;
}
// grid filtering conditions
$query->orFilterWhere(['like', 'name', $this->name]);
$query->andFilterWhere(['=', 'status', "1"]);
return $dataProvider;
}
public function search2($params) {
$query = Projects::find();
$dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 5,]]);
$dataProvider->setSort(['defaultOrder' => ['id' => SORT_DESC]]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
if (!empty($this->progress)) {
if ($this->progress != 'All') {
if ($this->progress == 'Overdue')
$query->andFilterWhere(['AND', ['=', 'projects.progress', 'On-going'], ['<', 'projects.end_dt', date('Y-m-d')]]);
else
$query->andFilterWhere(['=', 'projects.progress', $this->progress]);
}
}
//if (empty($this->progress))
// $query->andFilterWhere(['!=', 'projects.progress', 'Complete']);
$query->andWhere(['=', 'projects.status', "1"]);
if (!empty($this->search_startdt) && !empty($this->search_enddt)) {
$query->andFilterWhere(['OR',
['AND', ['<=', 'projects.start_dt', $this->search_startdt], ['>=', 'projects.end_dt', $this->search_startdt]],
['AND', ['<=', 'projects.start_dt', $this->search_enddt], ['>=', 'projects.end_dt', $this->search_enddt]]]);
}
$query->andFilterWhere(['=', 'projects.cat', $this->cat]);
if (Yii::$app->user->identity->role == 'CLIENT') {
$query->innerJoin('pic','projects.id=pic.project_id');
$query->andWhere(['=', 'pic.user_id', Yii::$app->user->identity->id]);
}
$query->groupBy('projects.id');
return $dataProvider;
}
}