Removed achievements from profile search form filters. Added doc for api/profile

This commit is contained in:
Korzinkayablok 2021-09-15 16:14:08 +03:00
parent ad947826a0
commit 6c14d4c7e1
2 changed files with 78 additions and 19 deletions

View File

@ -54,14 +54,77 @@
Пример запроса: Пример запроса:
</p> </p>
`https://guild.craft-group.xyz/api/profile?limit=5&offset=5&skills=1` `https://guild.craft-group.xyz/api/profile?limit=5&offset=5&skills=1,2`
<p>
Возвращает <b>массив</b> объектов <b>Профилей</b>. <br>
Каждый объект <b>Профиля</b> имеет такой вид:
</p>
```json5
{
"id": "1",
"fio": "f23f",
"passport": "f23",
"photo": "''",
"email": "f",
"gender": "1",
"dob": "2021-09-17",
"status": "2",
"created_at": "2021-09-08 16:30:34",
"updated_at": "2021-09-09 08:41:02",
"resume": "",
"salary": "",
"position_id": "1",
"deleted_at": null,
"id_user": "1",
"city": "",
"link_vk": "",
"link_telegram": "",
"vc_text": "",
"level": "2", //
"vc_text_short": "",
"years_of_exp": "0",
"specification": "",
"skillValues": [ //Массив навыков привязанных к этому профилю
{
"id": "1",
"card_id": "1", //card_id из таблицы card_skill
"skill_id": "1",//skill_id из таблицы card_skill
"skill": {
"id": "1", //id из таблицы skill
"name": "SQL",
"category_id": "1"
}
},
//...
],
"achievements": [ //Массив достижений привязанных к этому профилю
{
"id": "7",
"user_card_id": "1",//user_card_id из таблицы achievement_user_card
"achievement_id": "1",//achievement_id из таблицы achievement_user_card
"achievement": {
"id": "1", //id из таблицы achievement
"slug": "newguy",
"title": "Новичок",
"img": "",
"description": "Ты начал у нас работу",
"status": "1" // 1 - Активно, 2 - Неактивно
}
},
//...
]
}
```
### Одна запись ### Одна запись
`https://guild.craft-group.xyz/api/profile/{id}` `https://guild.craft-group.xyz/api/profile/{id}`
<p> <p>
Для того, чтобы получить данные одной записи необходимо отправить <b>GET</b> запрос Для того, чтобы получить данные одной записи необходимо отправить <b>GET</b> запрос
на URL https://guild.craft-group.xyz/api/profile/{id} , где <b>id</b> это идинтификатор на URL https://guild.craft-group.xyz/api/profile/{id} , где <b>id</b> это идентификатор
профиля. профиля.
</p> </p>
<p> <p>
@ -70,6 +133,12 @@
`https://guild.craft-group.xyz/api/profile/6` `https://guild.craft-group.xyz/api/profile/6`
<p>
Возвращает объект <b>Профиля</b>. <br>
Как выглядит можно посмотреть выше.
</p>
### Пригласить на собеседование ### Пригласить на собеседование
`https://guild.craft-group.xyz/api/profile/add-to-interview` `https://guild.craft-group.xyz/api/profile/add-to-interview`

View File

@ -20,7 +20,6 @@ class ProfileSearchForm extends Model
public $limit = 10; public $limit = 10;
public $offset = 0; public $offset = 0;
public $skills; public $skills;
public $achievements;
public $position_id; public $position_id;
public $id; public $id;
@ -30,7 +29,6 @@ class ProfileSearchForm extends Model
return [ return [
[['id', 'limit', 'offset', 'position_id'], 'safe'], [['id', 'limit', 'offset', 'position_id'], 'safe'],
[['skills'], 'checkIsArray'], [['skills'], 'checkIsArray'],
[['achievements'], 'checkIsArray'],
]; ];
} }
@ -71,20 +69,12 @@ class ProfileSearchForm extends Model
$model->joinWith('skillValues'); $model->joinWith('skillValues');
} }
if($this->achievements){
$model->joinWith(['achievements']);
$this->achievements = explode(',', $this->achievements);
$model->where(['achievement_user_card.achievement_id' => $this->achievements]);
$model->having('COUNT(DISTINCT achievement_id) = ' . count($this->achievements));
}
else{
$model->joinWith('achievements'); $model->joinWith('achievements');
}
$model->andFilterWhere(['position_id' => $this->position_id]); // $model->andFilterWhere(['position_id' => $this->position_id]);
//
$model->andWhere(['status' => [4, 12]]); // $model->andWhere(['status' => [4, 12]]);
$model->andWhere(['deleted_at' => null]); // $model->andWhere(['deleted_at' => null]);
$model->groupBy('card_skill.card_id'); $model->groupBy('card_skill.card_id');