diff --git a/common/models/ProjectTaskCategory.php b/common/models/ProjectTaskCategory.php index c2212ee..94475ef 100644 --- a/common/models/ProjectTaskCategory.php +++ b/common/models/ProjectTaskCategory.php @@ -29,6 +29,8 @@ class ProjectTaskCategory extends \yii\db\ActiveRecord public function rules() { return [ + [['project_id', 'title'], 'required'], + [['project_id', 'title'], 'unique', 'targetAttribute' => ['project_id', 'title']], [['project_id'], 'integer'], [['title'], 'string', 'max' => 255], [['project_id'], 'exist', 'skipOnError' => true, 'targetClass' => Project::className(), 'targetAttribute' => ['project_id' => 'id']], diff --git a/docs/api/projects_and_tasks.md b/docs/api/projects_and_tasks.md index 33b1108..68c353c 100644 --- a/docs/api/projects_and_tasks.md +++ b/docs/api/projects_and_tasks.md @@ -35,6 +35,30 @@ Получить список статусов для проекта + + + project task category list + + + список категорий задач проекта + + + + + create project category task + + + создать категорию задач проекта + + + + + update project category task + + + изменить категорию задач проекта + + create @@ -257,6 +281,178 @@ ] ``` +### Список категорий задач проекта +`https://guild.craft-group.xyz/api/project/project-task-category-list` +

+ Для получения списка категорий задач проекта необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/project/project-task-category-list +

+ +

+ Требуемые параметры: +

+ + + + + + + + + + +
+ Параметры + + Значение +
+ project_id + + ID проекта +
+ +

+ Пример запроса: +

+ +`https://guild.craft-group.xyz/api/project/project-task-category-list?project_id=1` + +

+ Возвращает массив категорий задач проекта имеющий такой вид: +

+ +```json5 +[ + { + "id": 1, + "title": "mlkmld", + "project_id": 1 + }, + { + "id": 2, + "title": "тест", + "project_id": 1 + } +] +``` + +### Создать категорию задач проекта +`https://guild.craft-group.xyz/api/project/create-project-task-category` +

+ Для для создания категории задач проекта необходимо отправить POST запрос на URL https://guild.craft-group.xyz/api/project/create-project-task-category +

+ +

+ Требуемые параметры: +

+ + + + + + + + + + + + + + +
+ Параметры + + Значение +
+ project_id + + ID проекта +
+ title + + название категории +
+ +

+ Пример запроса: +

+ +`https://guild.craft-group.xyz/api/project/create-project-task-category` + +

+ Возвращает категорию задач проекта имеющий такой вид: +

+ +```json5 +{ + "project_id": "1", + "title": "test333", + "id": 4 +} +``` + +### Изменить категорию задач проекта +`https://guild.craft-group.xyz/api/project/update-project-task-category` +

+ Для для создания категории задач проекта необходимо отправить POST запрос на URL https://guild.craft-group.xyz/api/project/update-project-task-category +

+ +

+ Возможные параметры: +

+ + + + + + + + + + + + + + + + + + +
+ Параметры + + Значение +
+ project_id + + ID проекта +
+ title + + название категории +
+ new_title + + новое название категории +
+ +

+ Пример запроса: +

+ +`https://guild.craft-group.xyz/api/project/update-project-task-category` + +

+ Возвращает категорию задач проекта имеющий такой вид: +

+ +```json5 +{ + "id": 1, + "title": "hfbvhdfbv3", + "project_id": 1 +} +``` + ### Создать проект `https://guild.craft-group.xyz/api/project/create` diff --git a/frontend/modules/api/controllers/ProjectController.php b/frontend/modules/api/controllers/ProjectController.php index f0fb178..73192e6 100644 --- a/frontend/modules/api/controllers/ProjectController.php +++ b/frontend/modules/api/controllers/ProjectController.php @@ -2,6 +2,7 @@ namespace frontend\modules\api\controllers; +use common\models\ProjectTaskCategory; use common\models\ProjectUser; use common\models\Status; use common\models\UseStatus; @@ -29,6 +30,7 @@ class ProjectController extends ApiController 'get-project' => ['GET', 'OPTIONS'], 'project-list' => ['GET', 'OPTIONS'], 'status-list' => ['GET', 'OPTIONS'], + 'project-task-category-list' => ['GET', 'OPTIONS'], 'create' => ['POST', 'OPTIONS'], 'update' => ['POST', 'OPTIONS'] ], @@ -62,6 +64,41 @@ class ProjectController extends ApiController ->where(['`use_status`.`use`' => UseStatus::USE_PROJECT])->all(); } + public function actionProjectTaskCategoryList($project_id): array + { + return ProjectTaskCategory::find()->where(['project_id' => $project_id])->all(); + } + + public function actionCreateProjectTaskCategory() + { + $projectTaskCategory = new ProjectTaskCategory(); + $projectTaskCategory->attributes = \yii::$app->request->post(); + + if($projectTaskCategory->validate()) { + $projectTaskCategory->save(false); + return $projectTaskCategory; + } + return $projectTaskCategory->errors; + } + + public function actionUpdateProjectTaskCategory() + { + $projectTaskCategory = ProjectTaskCategory::find() + ->where(['project_id' => Yii::$app->request->post('project_id')]) + ->andWhere(['title' => Yii::$app->request->post('title')]) + ->one(); + + if(empty($projectTaskCategory)) { + throw new NotFoundHttpException('The project not found'); + } + + $projectTaskCategory->title = Yii::$app->request->post('new_title'); + if (!$projectTaskCategory->update() && $projectTaskCategory->hasErrors()) { + return $projectTaskCategory->errors; + } + return $projectTaskCategory; + } + public function actionCreate() { $project = new Project();