guild/frontend/modules/api/models/ProfileSearchForm.php

72 lines
1.4 KiB
PHP
Raw Normal View History

2021-06-25 18:11:30 +03:00
<?php
namespace frontend\modules\api\models;
use backend\modules\card\models\UserCard;
2021-06-25 18:19:02 +03:00
use common\classes\Debug;
2021-06-25 18:11:30 +03:00
use yii\base\Model;
/**
* Class ProfileSearchForm
* @property integer $limit
* @property integer $offset
* @property integer $id
* @package frontend\modules\api\models
*/
class ProfileSearchForm extends Model
{
public $limit = 10;
public $offset = 0;
public $skills;
public $id;
public function rules()
{
return [
[['id', 'limit', 'offset'], 'safe'],
[['skills'], 'checkIsArray'],
];
}
public function checkIsArray()
{
if (!is_array($this->_task)) {
$this->addError('_task', 'X is not array!');
}
}
public function byId()
{
if ($this->id) {
return UserCard::find()
->where(['id' => $this->id])
->with(['skillValues'])
->asArray()
->one();
}
return null;
}
public function byParams()
{
2021-06-25 18:19:02 +03:00
$model = UserCard::find();
2021-06-25 18:11:30 +03:00
if($this->skills){
2021-06-25 18:19:02 +03:00
$model->joinWith(['skillValues']);
2021-06-25 18:11:30 +03:00
$this->skills = explode(',', $this->skills);
$model->where(['card_skill.skill_id' => $this->skills]);
}
2021-06-25 18:19:02 +03:00
else{
$model->with('skillValues');
}
2021-06-25 18:11:30 +03:00
return $model->limit($this->limit)
->offset($this->offset)->asArray()->all();
}
}