edit request, skills list, position list
This commit is contained in:
parent
8bc601aa6a
commit
7f46dc1346
@ -4,6 +4,7 @@ namespace common\services;
|
||||
|
||||
use common\models\Manager;
|
||||
use common\models\ManagerEmployee;
|
||||
use common\models\Position;
|
||||
use common\models\UserCard;
|
||||
use common\models\UserCardPortfolioProjects;
|
||||
use frontend\modules\api\models\ProfileSearchForm;
|
||||
@ -84,6 +85,14 @@ class ProfileService
|
||||
throw new ServerErrorHttpException('There is no user with this id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|\yii\db\ActiveRecord[]
|
||||
*/
|
||||
public static function getPositionsList()
|
||||
{
|
||||
return Position::find()->all();
|
||||
}
|
||||
|
||||
private static function addPermission(&$profile, $user_card_id)
|
||||
{
|
||||
$searcherCardID = self::getSearcherCardID(Yii::$app->user->getId());
|
||||
|
@ -146,7 +146,7 @@ class RequestService
|
||||
*/
|
||||
public function getByUserId($user_id)
|
||||
{
|
||||
return $this->model->find()->where(['user_id' => $user_id])->all();
|
||||
return $this->model->find()->where(['user_id' => $user_id, 'status' => 1])->all();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -160,6 +160,19 @@ class RequestService
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $userId
|
||||
* @return bool
|
||||
*/
|
||||
public function validateUser(int $userId): bool
|
||||
{
|
||||
if ($this->model->user_id == $userId){
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|int
|
||||
*/
|
||||
|
@ -20,7 +20,8 @@ class ProfileController extends ApiController
|
||||
'actions' => [
|
||||
'' => ['GET', 'HEAD', 'OPTIONS'],
|
||||
'profile-with-report-permission' => ['post', 'patch'],
|
||||
'get-main-data' => ['get']
|
||||
'get-main-data' => ['get'],
|
||||
'positions-list' => ['get'],
|
||||
],
|
||||
]
|
||||
]);
|
||||
@ -54,4 +55,31 @@ class ProfileController extends ApiController
|
||||
{
|
||||
return ProfileService::getPortfolioProjects($card_id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Get(path="/profile/positions-list",
|
||||
* summary="Список позиций",
|
||||
* description="Получить список всех возможных позиций",
|
||||
* tags={"Profile"},
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает массив позиций",
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/json",
|
||||
* @OA\Schema(ref="#/components/schemas/PositionsExample"),
|
||||
* ),
|
||||
*
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function actionPositionsList(): array
|
||||
{
|
||||
return ProfileService::getPositionsList();
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ namespace frontend\modules\api\controllers;
|
||||
use common\classes\Debug;
|
||||
use common\models\Request;
|
||||
use common\services\RequestService;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\web\BadRequestHttpException;
|
||||
use yii\web\NotFoundHttpException;
|
||||
|
||||
@ -18,7 +19,7 @@ class RequestController extends ApiController
|
||||
'get-request' => ['get'],
|
||||
'get-request-list' => ['get'],
|
||||
'create-request' => ['post'],
|
||||
// 'update-task' => ['put', 'patch'],
|
||||
'update-request' => ['put', 'patch'],
|
||||
];
|
||||
}
|
||||
|
||||
@ -115,7 +116,7 @@ class RequestController extends ApiController
|
||||
* @param int|null $user_id
|
||||
* @return array|\yii\db\ActiveRecord[]
|
||||
*/
|
||||
public function actionGetList(int $user_id = null, int $search_depth = 3): array
|
||||
public function actionGetRequestList(int $user_id = null, int $search_depth = 3): array
|
||||
{
|
||||
if (!$user_id) {
|
||||
$user_id = \Yii::$app->user->id;
|
||||
@ -133,8 +134,8 @@ class RequestController extends ApiController
|
||||
/**
|
||||
*
|
||||
* @OA\Post(path="/request/create-request",
|
||||
* summary="Получить список запросов",
|
||||
* description="Метод для оздания запроса, если не передан параметр <b>user_id</b>, то будет получен список текущего пользователя",
|
||||
* summary="Добавить запрос",
|
||||
* description="Метод для создания запроса, если не передан параметр <b>user_id</b>, то будет получен список текущего пользователя",
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
@ -204,7 +205,7 @@ class RequestController extends ApiController
|
||||
* @return Request
|
||||
* @throws BadRequestHttpException
|
||||
*/
|
||||
public function actionCreateRequest()
|
||||
public function actionCreateRequest(): Request
|
||||
{
|
||||
$user_id = \Yii::$app->user->id;
|
||||
if (!$user_id) {
|
||||
@ -223,4 +224,115 @@ class RequestController extends ApiController
|
||||
return $requestService->getModel();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Put(path="/request/update-request",
|
||||
* summary="Редактировать запрос",
|
||||
* description="Метод для редактирования запроса, если не передан параметр <b>user_id</b>, то будет получен список текущего пользователя",
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* tags={"Requests"},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/x-www-form-urlencoded",
|
||||
* @OA\Schema(
|
||||
* required={"request_id"},
|
||||
* @OA\Property(
|
||||
* property="user_id",
|
||||
* type="integer",
|
||||
* description="Идентификатор пользователя",
|
||||
* nullable=false,
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="request_id",
|
||||
* type="integer",
|
||||
* description="Идентификатор запросв",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="title",
|
||||
* type="string",
|
||||
* description="Заголовок запроса",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="position_id",
|
||||
* type="integer",
|
||||
* description="Позиция",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="knowledge_level_id",
|
||||
* type="integer",
|
||||
* description="Уровень",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="specialist_count",
|
||||
* type="integer",
|
||||
* description="Количество специалистов",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="status",
|
||||
* type="integer",
|
||||
* description="Статус запроса",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="descr",
|
||||
* type="string",
|
||||
* description="Описание запроса",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="skill_ids",
|
||||
* type="array",
|
||||
* description="Навыки",
|
||||
* @OA\Items(
|
||||
* type="integer",
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает объект Запроса",
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/json",
|
||||
* @OA\Schema(ref="#/components/schemas/Request"),
|
||||
* ),
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @return Request|null
|
||||
* @throws BadRequestHttpException
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function actionUpdateRequest(): Request
|
||||
{
|
||||
$user_id = \Yii::$app->user->id;
|
||||
if (!$user_id) {
|
||||
throw new BadRequestHttpException(json_encode(['User not found']));
|
||||
}
|
||||
|
||||
$request_id = \Yii::$app->request->getBodyParam('request_id');
|
||||
if (!$request_id) {
|
||||
throw new BadRequestHttpException(json_encode(['Request not found']));
|
||||
}
|
||||
|
||||
$requestService = RequestService::run($request_id);
|
||||
|
||||
if (!$requestService->validateUser($user_id)){
|
||||
throw new BadRequestHttpException(json_encode(['The user does not have the right to edit the request'], true));
|
||||
}
|
||||
|
||||
$put = array_diff(\Yii::$app->request->getBodyParams(), [null, '']);
|
||||
|
||||
$requestService->load($put, '')
|
||||
->save();
|
||||
|
||||
if (!$requestService->isSave) {
|
||||
throw new BadRequestHttpException(json_encode($requestService->errors));
|
||||
}
|
||||
|
||||
return $requestService->getModel();
|
||||
}
|
||||
|
||||
}
|
@ -4,6 +4,7 @@ namespace frontend\modules\api\controllers;
|
||||
|
||||
use common\behaviors\GsCors;
|
||||
use common\models\Options;
|
||||
use common\models\Skill;
|
||||
use yii\filters\AccessControl;
|
||||
use yii\filters\auth\CompositeAuth;
|
||||
use yii\filters\auth\HttpBearerAuth;
|
||||
@ -34,11 +35,40 @@ class SkillsController extends ApiController
|
||||
return array_merge($parent, $b);
|
||||
}
|
||||
|
||||
public function verbs(): array
|
||||
{
|
||||
return [
|
||||
'skills-on-main-page' => ['get'],
|
||||
'get-skills-list' => ['get'],
|
||||
];
|
||||
}
|
||||
|
||||
public function actionIndex()
|
||||
{
|
||||
return ['some' => 'rrr'];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Get(path="/skills/skills-on-main-page",
|
||||
* summary="Получить список навыков для отображения на главной",
|
||||
* description="Получить список навыков на главной странице",
|
||||
* tags={"Skills"},
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает массив навыков",
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/json",
|
||||
* ),
|
||||
*
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @return array|mixed
|
||||
*/
|
||||
public function actionSkillsOnMainPage()
|
||||
{
|
||||
$data = \common\models\Options::getValue('skills_on_main_page_to_front');
|
||||
@ -48,4 +78,31 @@ class SkillsController extends ApiController
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Get(path="/skills/get-skills-list",
|
||||
* summary="Получить список навыков",
|
||||
* description="Получить список навыков",
|
||||
* tags={"Skills"},
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает массив навыков",
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/json",
|
||||
* @OA\Schema(ref="#/components/schemas/SkillsExample"),
|
||||
* ),
|
||||
*
|
||||
* ),
|
||||
* )
|
||||
*
|
||||
* @return array|\yii\db\ActiveRecord[]
|
||||
*/
|
||||
public function actionGetSkillsList(): array
|
||||
{
|
||||
return Skill::find()->all();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,6 +18,23 @@ namespace frontend\modules\api\models;
|
||||
* description="Название позиции"
|
||||
* ),
|
||||
*)
|
||||
*
|
||||
* @OA\Schema(
|
||||
* schema="PositionsExample",
|
||||
* type="array",
|
||||
* example={{"id": 1, "name": "Back end - разработчик"}, {"id": 2, "name": "Front end - разработчик"}},
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
* @OA\Property(
|
||||
* property="id",
|
||||
* type="integer",
|
||||
* ),
|
||||
* @OA\Property(
|
||||
* property="name",
|
||||
* type="string",
|
||||
* ),
|
||||
* ),
|
||||
*)
|
||||
*/
|
||||
class Position extends \common\models\Position
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user