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 @@ Получить список статусов для проекта +
+ Для получения списка категорий задач проекта необходимо отправить 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();