add api for project
This commit is contained in:
parent
8a1f99c707
commit
78aaef28df
@ -52,6 +52,7 @@ class Project extends \yii\db\ActiveRecord
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
['name', 'unique'],
|
||||
[['name', 'status'], 'required'],
|
||||
[['description'], 'string'],
|
||||
[['created_at', 'updated_at'], 'safe'],
|
||||
|
993
docs/api/projects_and_tasks.md
Normal file
993
docs/api/projects_and_tasks.md
Normal file
@ -0,0 +1,993 @@
|
||||
## Проекты
|
||||
|
||||
## Методы
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Метод
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project
|
||||
</td>
|
||||
<td>
|
||||
Получить проект
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project-list
|
||||
</td>
|
||||
<td>
|
||||
Получить список проектов
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status-list
|
||||
</td>
|
||||
<td>
|
||||
Получить список статусов для проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
create
|
||||
</td>
|
||||
<td>
|
||||
Создать проект
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
update
|
||||
</td>
|
||||
<td>
|
||||
Изменить проект
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Получить проект
|
||||
`https://guild.craft-group.xyz/api/project/get-project`
|
||||
<p>
|
||||
Для получения проекта необходимо отправить <b>GET</b> запрос на URL https://guild.craft-group.xyz/api/project/get-project
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
ID проекта
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/get-project?project_id=1`
|
||||
|
||||
<p>
|
||||
Возвращает объект проекта имеющий такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"id": 1,
|
||||
"name": "проект название",
|
||||
"budget": "333",
|
||||
"status": 5,
|
||||
"hh_id": {
|
||||
"id": 1,
|
||||
"hh_id": null,
|
||||
"url": "knkjsefnejkdbvjfdbv",
|
||||
"title": null,
|
||||
"dt_add": null,
|
||||
"photo": null
|
||||
},
|
||||
"company": {
|
||||
"id": 1,
|
||||
"name": "Рога и копыта",
|
||||
"description": "Живодёрня"
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/index?project_id=1"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Получить список проектов
|
||||
`https://guild.craft-group.xyz/api/project/project-list`
|
||||
<p>
|
||||
Для получения списка проектов необходимо отправить <b>GET</b> запрос на URL https://guild.craft-group.xyz/api/project/project-list
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id
|
||||
</td>
|
||||
<td>
|
||||
ID профиля пользователя (При передаче этого параметра будет возвращён список проектов в которых задействован конкретный пользователь, без него будет возвращён список всех проектов)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/project-list?card_id=1`
|
||||
|
||||
<p>
|
||||
Возвращает массив объектов проект имеющий такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"projects": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "проект название",
|
||||
"budget": "333",
|
||||
"status": 5,
|
||||
"hh_id": {
|
||||
"id": 1,
|
||||
"hh_id": null,
|
||||
"url": "knkjsefnejkdbvjfdbv",
|
||||
"title": null,
|
||||
"dt_add": null,
|
||||
"photo": null
|
||||
},
|
||||
"company": {
|
||||
"id": 1,
|
||||
"name": "Рога и копыта",
|
||||
"description": "Живодёрня"
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/index?project_id=1"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "тестовый проект",
|
||||
"budget": "333",
|
||||
"status": 5,
|
||||
"hh_id": {
|
||||
"id": 1,
|
||||
"hh_id": null,
|
||||
"url": "knkjsefnejkdbvjfdbv",
|
||||
"title": null,
|
||||
"dt_add": null,
|
||||
"photo": null
|
||||
},
|
||||
"company": null,
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/index?project_id=3"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/project-list?card_id=1&page=1"
|
||||
},
|
||||
"first": {
|
||||
"href": "http://guild.loc/api/project/project-list?card_id=1&page=1"
|
||||
},
|
||||
"last": {
|
||||
"href": "http://guild.loc/api/project/project-list?card_id=1&page=1"
|
||||
}
|
||||
},
|
||||
"_meta": {
|
||||
"totalCount": 2,
|
||||
"pageCount": 1,
|
||||
"currentPage": 1,
|
||||
"perPage": 20
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Получить список статусов для проекта
|
||||
`https://guild.craft-group.xyz/api/project/status-list`
|
||||
<p>
|
||||
Для получения списка статусов проекта необходимо отправить <b>GET</b> запрос на URL https://guild.craft-group.xyz/api/project/status-list
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры: не требуются
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/status-list`
|
||||
|
||||
<p>
|
||||
Возвращает массив объектов статус имеющий такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
[
|
||||
{
|
||||
"id": 5,
|
||||
"name": "проект"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "проект статус 2"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### Создать проект
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/create`
|
||||
|
||||
<p>
|
||||
Для создания нового проекта необходимо отправить <b>POST</b> запрос на URL https://guild.craft-group.xyz/api/project/create
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
* - обязательные параметры
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
* name
|
||||
</td>
|
||||
<td>
|
||||
название проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
* status
|
||||
</td>
|
||||
<td>
|
||||
статус проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
описание проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
budget
|
||||
</td>
|
||||
<td>
|
||||
бюджет проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
company_id
|
||||
</td>
|
||||
<td>
|
||||
ID компании
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
$hh_id
|
||||
</td>
|
||||
<td>
|
||||
ID hh
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/create`
|
||||
|
||||
<p>
|
||||
Возвращает массив объектов статус имеющий такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"id": 10,
|
||||
"name": "test",
|
||||
"budget": "333",
|
||||
"status": "5",
|
||||
"hh_id": null,
|
||||
"company": null,
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/index?project_id=10"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Обновить проект
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/update`
|
||||
|
||||
<p>
|
||||
Для создания нового проекта необходимо отправить <b>POST</b> запрос на URL https://guild.craft-group.xyz/api/project/update
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
* - обязательные параметры
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
* project_id
|
||||
</td>
|
||||
<td>
|
||||
ID проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
статус проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
name
|
||||
</td>
|
||||
<td>
|
||||
название
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
описание проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
budget
|
||||
</td>
|
||||
<td>
|
||||
бюджет проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
company_id
|
||||
</td>
|
||||
<td>
|
||||
ID компании
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
hh_id
|
||||
</td>
|
||||
<td>
|
||||
ID hh
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/project/update`
|
||||
|
||||
<p>
|
||||
Возвращает массив объектов статус имеющий такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"id": 7,
|
||||
"name": "777nnknkfg666",
|
||||
"budget": "333",
|
||||
"status": "5",
|
||||
"hh_id": {
|
||||
"id": 1,
|
||||
"hh_id": null,
|
||||
"url": "knkjsefnejkdbvjfdbv",
|
||||
"title": null,
|
||||
"dt_add": null,
|
||||
"photo": null
|
||||
},
|
||||
"company": {
|
||||
"id": 1,
|
||||
"name": "Рога и копыта",
|
||||
"description": "Живодёрня"
|
||||
},
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://guild.loc/api/project/index?project_id=7"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
# Задачи
|
||||
|
||||
## Методы
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Метод
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task-list
|
||||
</td>
|
||||
<td>
|
||||
Возвращает список задач
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task
|
||||
</td>
|
||||
<td>
|
||||
Возвращает задачу
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
create-task
|
||||
</td>
|
||||
<td>
|
||||
Создаёт задачу
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
update
|
||||
</td>
|
||||
<td>
|
||||
Обновить задачу
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Список задач
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/get-task-list?project_id=1`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Без передачи параметра возвращает массив объектов <b>Задача</b> . С параметром <b>project_id</b>,
|
||||
метод возвращает объекты <b>Задача</b> определённого проекта.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Возвращает <b>массив</b> объектов <b>Задача</b>. <br>
|
||||
Каждый объект <b>Задача</b> имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
[
|
||||
{
|
||||
"id": "6",
|
||||
"project_id": "74",
|
||||
"title": "Название задачи",
|
||||
"status": "1",
|
||||
"created_at": "2021-12-20 16:29:39",
|
||||
"updated_at": "2021-12-20 17:35:04",
|
||||
"description": "Описание задачи",
|
||||
"card_id_creator": "1",
|
||||
"card_id": "3"
|
||||
},
|
||||
'...'
|
||||
]
|
||||
```
|
||||
|
||||
## Получить документ
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/get-task?task_id=15`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
Id задачи
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Возвращает объект <b>Задача</b>. <br>
|
||||
Каждый объект <b>Задача</b> имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"id": 15,
|
||||
"project_id": 74,
|
||||
"title": "4324238888",
|
||||
"status": 1,
|
||||
"created_at": "2022-01-05 17:37:37",
|
||||
"updated_at": "2022-01-05 17:46:10",
|
||||
"description": "888",
|
||||
"card_id_creator": 1,
|
||||
"card_id": null
|
||||
}
|
||||
```
|
||||
<p>
|
||||
Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
||||
|
||||
## Создать документ
|
||||
|
||||
`https://guild.craft-group.xyz/api/document/create-document`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
title
|
||||
</td>
|
||||
<td>
|
||||
Название задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
статус задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id_creator
|
||||
</td>
|
||||
<td>
|
||||
Id профиля создателя
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id
|
||||
</td>
|
||||
<td>
|
||||
Id профиля наблюдателя(не обязательный параметр)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
Описание
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Создаёт <b>Задача</b>. Требует передачи <b>POST</b> запроса с соответствующими
|
||||
параметрами
|
||||
</p>
|
||||
|
||||
<p>
|
||||
В случае указания не верных параметров буде возвращена соответствующая ошибка. Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Internal Server Error",
|
||||
"message": "{\"project_id\":[\"\П\р\о\е\к\т is invalid.\"]}",
|
||||
"code": 0,
|
||||
"status": 500,
|
||||
"type": "yii\\web\\ServerErrorHttpException"
|
||||
}
|
||||
```
|
||||
|
||||
## Обновить задачу
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/update`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
title
|
||||
</td>
|
||||
<td>
|
||||
Название задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
статус задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id_creator
|
||||
</td>
|
||||
<td>
|
||||
Id профиля создателя
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id
|
||||
</td>
|
||||
<td>
|
||||
Id профиля наблюдателя(не обязательный параметр)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
Описание
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Обновляет объект <b>Задача</b>. Требует передачи <b>POST</b> запроса с соответствующими
|
||||
параметрами
|
||||
</p>
|
||||
|
||||
<p>
|
||||
В случае указания не верных параметров буде возвращена соответствующая ошибка. Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
||||
|
||||
## Исполнители задачи
|
||||
## Методы
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Метод
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task-users
|
||||
</td>
|
||||
<td>
|
||||
Список исплнителей задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
set-task-users
|
||||
</td>
|
||||
<td>
|
||||
Назначить исполнителя на задачу
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Список исполнителей задачи
|
||||
`https://guild.craft-group.xyz/api/task-user/get-task-users`
|
||||
<p>
|
||||
Для получения списка исполнителей необходимо отправить <b>GET</b> запрос на URL https://guild.craft-group.xyz/api/task-user/get-task-users
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/task-user/get-task-users?task_id=10`
|
||||
|
||||
<p>
|
||||
Возвращает массив сотрудников проекта закреплённых за задачей. <br>
|
||||
Каждый ответ имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
[
|
||||
{
|
||||
"id": 5,
|
||||
"task_id": 10,
|
||||
"project_user_id": 1
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"task_id": 10,
|
||||
"project_user_id": 5
|
||||
}
|
||||
]
|
||||
```
|
||||
<p>
|
||||
Параметры объекта <b>Исполнитель</b>:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
ID исполнителя задачи(int)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи(int)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_user_id
|
||||
</td>
|
||||
<td>
|
||||
ID сотрудника на проекте(int)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Если задача не найдена будет отправлено следующее сообщение:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist or there are no employees for it",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
||||
### Назначить сотрудника на задачу
|
||||
`https://guild.craft-group.xyz/api/task-user/set-task-users`
|
||||
<p>
|
||||
Для назначения исполнителя необходимо отправить <b>POST</b> запрос на URL https://guild.craft-group.xyz/api/task-user/set-task-user
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_user_id
|
||||
</td>
|
||||
<td>
|
||||
ID сотрудника на проекте
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/task-user/set-task-user`
|
||||
|
||||
<p>
|
||||
Возвращает объект <b>Исполнителя задачи</b>.<br>
|
||||
Каждый ответ имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"task_id": "10",
|
||||
"project_user_id": "5",
|
||||
"id": 8
|
||||
}
|
||||
```
|
||||
|
||||
<p>
|
||||
Если задача не найдена будет отправлено следующее сообщение:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Bad Request",
|
||||
"message": "{\"task_id\":[\"\З\а\д\а\ч\а is invalid.\"]}",
|
||||
"code": 0,
|
||||
"status": 400,
|
||||
"type": "yii\\web\\BadRequestHttpException"
|
||||
}
|
||||
```
|
@ -1,200 +0,0 @@
|
||||
## Исполнители задачи
|
||||
## Методы
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Метод
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task-users
|
||||
</td>
|
||||
<td>
|
||||
Список исплнителей задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
set-task-users
|
||||
</td>
|
||||
<td>
|
||||
Назначить исполнителя на задачу
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Список исполнителей задачи
|
||||
`https://guild.craft-group.xyz/api/task-user/get-task-users`
|
||||
<p>
|
||||
Для получения списка исполнителей необходимо отправить <b>GET</b> запрос на URL https://guild.craft-group.xyz/api/task-user/get-task-users
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/task-user/get-task-users?task_id=10`
|
||||
|
||||
<p>
|
||||
Возвращает массив сотрудников проекта закреплённых за задачей. <br>
|
||||
Каждый ответ имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
[
|
||||
{
|
||||
"id": 5,
|
||||
"task_id": 10,
|
||||
"project_user_id": 1
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"task_id": 10,
|
||||
"project_user_id": 5
|
||||
}
|
||||
]
|
||||
```
|
||||
<p>
|
||||
Параметры объекта <b>Исполнитель</b>:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
id
|
||||
</td>
|
||||
<td>
|
||||
ID исполнителя задачи(int)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи(int)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_user_id
|
||||
</td>
|
||||
<td>
|
||||
ID сотрудника на проекте(int)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Если задача не найдена будет отправлено следующее сообщение:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist or there are no employees for it",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
||||
### Назначить сотрудника на задачу
|
||||
`https://guild.craft-group.xyz/api/task-user/set-task-users`
|
||||
<p>
|
||||
Для назначения исполнителя необходимо отправить <b>POST</b> запрос на URL https://guild.craft-group.xyz/api/task-user/set-task-user
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Требуемые параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
ID задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_user_id
|
||||
</td>
|
||||
<td>
|
||||
ID сотрудника на проекте
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Пример запроса:
|
||||
</p>
|
||||
|
||||
`https://guild.craft-group.xyz/api/task-user/set-task-user`
|
||||
|
||||
<p>
|
||||
Возвращает объект <b>Исполнителя задачи</b>.<br>
|
||||
Каждый ответ имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"task_id": "10",
|
||||
"project_user_id": "5",
|
||||
"id": 8
|
||||
}
|
||||
```
|
||||
|
||||
<p>
|
||||
Если задача не найдена будет отправлено следующее сообщение:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Bad Request",
|
||||
"message": "{\"task_id\":[\"\З\а\д\а\ч\а is invalid.\"]}",
|
||||
"code": 0,
|
||||
"status": 400,
|
||||
"type": "yii\\web\\BadRequestHttpException"
|
||||
}
|
||||
```
|
321
docs/api/task.md
321
docs/api/task.md
@ -1,321 +0,0 @@
|
||||
# Задачи
|
||||
|
||||
## Методы
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Метод
|
||||
</th>
|
||||
<th>
|
||||
Описание
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task-list
|
||||
</td>
|
||||
<td>
|
||||
Возвращает список задач
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
get-task
|
||||
</td>
|
||||
<td>
|
||||
Возвращает задачу
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
create-task
|
||||
</td>
|
||||
<td>
|
||||
Создаёт задачу
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
update
|
||||
</td>
|
||||
<td>
|
||||
Обновить задачу
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Список задач
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/get-task-list?project_id=1`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Без передачи параметра возвращает массив объектов <b>Задача</b> . С параметром <b>project_id</b>,
|
||||
метод возвращает объекты <b>Задача</b> определённого проекта.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Возвращает <b>массив</b> объектов <b>Задача</b>. <br>
|
||||
Каждый объект <b>Задача</b> имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
[
|
||||
{
|
||||
"id": "6",
|
||||
"project_id": "74",
|
||||
"title": "Название задачи",
|
||||
"status": "1",
|
||||
"created_at": "2021-12-20 16:29:39",
|
||||
"updated_at": "2021-12-20 17:35:04",
|
||||
"description": "Описание задачи",
|
||||
"card_id_creator": "1",
|
||||
"card_id": "3"
|
||||
},
|
||||
'...'
|
||||
]
|
||||
```
|
||||
|
||||
## Получить документ
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/get-task?task_id=15`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
task_id
|
||||
</td>
|
||||
<td>
|
||||
Id задачи
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Возвращает объект <b>Задача</b>. <br>
|
||||
Каждый объект <b>Задача</b> имеет такой вид:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"id": 15,
|
||||
"project_id": 74,
|
||||
"title": "4324238888",
|
||||
"status": 1,
|
||||
"created_at": "2022-01-05 17:37:37",
|
||||
"updated_at": "2022-01-05 17:46:10",
|
||||
"description": "888",
|
||||
"card_id_creator": 1,
|
||||
"card_id": null
|
||||
}
|
||||
```
|
||||
<p>
|
||||
Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
||||
|
||||
## Создать документ
|
||||
|
||||
`https://guild.craft-group.xyz/api/document/create-document`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
title
|
||||
</td>
|
||||
<td>
|
||||
Название задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
статус задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id_creator
|
||||
</td>
|
||||
<td>
|
||||
Id профиля создателя
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id
|
||||
</td>
|
||||
<td>
|
||||
Id профиля наблюдателя(не обязательный параметр)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
Описание
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Создаёт <b>Задача</b>. Требует передачи <b>POST</b> запроса с соответствующими
|
||||
параметрами
|
||||
</p>
|
||||
|
||||
<p>
|
||||
В случае указания не верных параметров буде возвращена соответствующая ошибка. Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Internal Server Error",
|
||||
"message": "{\"project_id\":[\"\П\р\о\е\к\т is invalid.\"]}",
|
||||
"code": 0,
|
||||
"status": 500,
|
||||
"type": "yii\\web\\ServerErrorHttpException"
|
||||
}
|
||||
```
|
||||
|
||||
## Обновить задачу
|
||||
|
||||
`https://guild.craft-group.xyz/api/task/update`
|
||||
<p>
|
||||
Параметры:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Параметры
|
||||
</th>
|
||||
<th>
|
||||
Значение
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
title
|
||||
</td>
|
||||
<td>
|
||||
Название задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
project_id
|
||||
</td>
|
||||
<td>
|
||||
Id проекта
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
status
|
||||
</td>
|
||||
<td>
|
||||
статус задачи
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id_creator
|
||||
</td>
|
||||
<td>
|
||||
Id профиля создателя
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
card_id
|
||||
</td>
|
||||
<td>
|
||||
Id профиля наблюдателя(не обязательный параметр)
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
description
|
||||
</td>
|
||||
<td>
|
||||
Описание
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Обновляет объект <b>Задача</b>. Требует передачи <b>POST</b> запроса с соответствующими
|
||||
параметрами
|
||||
</p>
|
||||
|
||||
<p>
|
||||
В случае указания не верных параметров буде возвращена соответствующая ошибка. Пример ошибки:
|
||||
</p>
|
||||
|
||||
```json5
|
||||
{
|
||||
"name": "Not Found",
|
||||
"message": "The task does not exist",
|
||||
"code": 0,
|
||||
"status": 404,
|
||||
"type": "yii\\web\\NotFoundHttpException"
|
||||
}
|
||||
```
|
@ -18,7 +18,5 @@ class Api extends \yii\base\Module
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
|
||||
// custom initialization code goes here
|
||||
}
|
||||
}
|
||||
|
96
frontend/modules/api/controllers/ProjectController.php
Normal file
96
frontend/modules/api/controllers/ProjectController.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\controllers;
|
||||
|
||||
use common\models\ProjectUser;
|
||||
use common\models\Status;
|
||||
use common\models\UseStatus;
|
||||
use frontend\modules\api\models\Project;
|
||||
use Yii;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\web\NotFoundHttpException;
|
||||
|
||||
class ProjectController extends ApiController
|
||||
{
|
||||
public $modelClass = 'frontend\modules\api\models\Project';
|
||||
public $serializer = [
|
||||
'class' => 'yii\rest\Serializer',
|
||||
'collectionEnvelope' => 'projects',
|
||||
];
|
||||
|
||||
public function behaviors(): array
|
||||
{
|
||||
return ArrayHelper::merge(parent::behaviors(), [
|
||||
|
||||
'verbs' => [
|
||||
'class' => \yii\filters\VerbFilter::class,
|
||||
'actions' => [
|
||||
'get-project' => ['GET', 'OPTIONS'],
|
||||
'project-list' => ['GET', 'OPTIONS'],
|
||||
'status-list' => ['GET', 'OPTIONS'],
|
||||
'create' => ['POST', 'OPTIONS'],
|
||||
'update' => ['POST', 'OPTIONS']
|
||||
],
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function actionGetProject($project_id): ?Project
|
||||
{
|
||||
return Project::findOne($project_id);
|
||||
}
|
||||
|
||||
public function actionProjectList($card_id = null): ActiveDataProvider
|
||||
{
|
||||
if (!empty($card_id)) {
|
||||
$projectIdList = ProjectUser::find()->where(['card_id' => $card_id])->select('project_id')->column();
|
||||
$query = Project::find()->where([ 'IN', 'id', $projectIdList]);
|
||||
} else {
|
||||
$query = Project::find();
|
||||
}
|
||||
|
||||
return new ActiveDataProvider([
|
||||
'query' => $query,
|
||||
]);
|
||||
}
|
||||
|
||||
public function actionStatusList(): array
|
||||
{
|
||||
return Status::find()
|
||||
->joinWith('useStatuses')
|
||||
->where(['`use_status`.`use`' => UseStatus::USE_PROJECT])->all();
|
||||
}
|
||||
|
||||
public function actionCreate()
|
||||
{
|
||||
$project = new Project();
|
||||
$project->attributes = \yii::$app->request->post();
|
||||
|
||||
if($project->validate()) {
|
||||
$project->save(false);
|
||||
return $project;
|
||||
}
|
||||
return $project->errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \Throwable
|
||||
* @throws \yii\base\InvalidConfigException
|
||||
* @throws \yii\db\StaleObjectException
|
||||
* @throws NotFoundHttpException
|
||||
*/
|
||||
public function actionUpdate()
|
||||
{
|
||||
$project = Project::findOne(Yii::$app->request->post('project_id'));
|
||||
if(empty($project)) {
|
||||
throw new NotFoundHttpException('The project not found');
|
||||
}
|
||||
|
||||
$project->load(Yii::$app->request->getBodyParams(), '');
|
||||
if (!$project->update()) {
|
||||
return $project->errors;
|
||||
}
|
||||
return $project;
|
||||
}
|
||||
}
|
20
frontend/modules/api/models/Company.php
Normal file
20
frontend/modules/api/models/Company.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models;
|
||||
|
||||
class Company extends \common\models\Company
|
||||
{
|
||||
public function fields()
|
||||
{
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'description',
|
||||
];
|
||||
}
|
||||
|
||||
public function extraFields(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
44
frontend/modules/api/models/Project.php
Normal file
44
frontend/modules/api/models/Project.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models;
|
||||
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\helpers\Url;
|
||||
use yii\web\Link;
|
||||
use yii\web\Linkable;
|
||||
|
||||
class Project extends \common\models\Project implements Linkable
|
||||
{
|
||||
public function fields(): array
|
||||
{
|
||||
return [
|
||||
'id',
|
||||
'name',
|
||||
'budget',
|
||||
'status',
|
||||
'hh_id' => function() {
|
||||
return $this->hh;
|
||||
},
|
||||
'company' => function() {
|
||||
return $this->company;
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
public function extraFields(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
public function getLinks(): array
|
||||
{
|
||||
return [
|
||||
Link::REL_SELF => Url::to(['index', 'project_id' => $this->id], true),
|
||||
];
|
||||
}
|
||||
|
||||
public function getCompany(): ActiveQuery
|
||||
{
|
||||
return $this->hasOne(Company::className(), ['id' => 'company_id']);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user