add resume update method
This commit is contained in:
parent
75329a8835
commit
835147af37
@ -2,11 +2,26 @@
|
||||
|
||||
namespace frontend\modules\api\controllers;
|
||||
|
||||
use frontend\modules\api\models\resume\forms\ChangeResumeForm;
|
||||
use frontend\modules\api\models\resume\Resume;
|
||||
use frontend\modules\api\services\ResumeService;
|
||||
use Yii;
|
||||
use yii\web\BadRequestHttpException;
|
||||
|
||||
class ResumeController extends ApiController
|
||||
{
|
||||
public ResumeService $resumeService;
|
||||
|
||||
public function __construct(
|
||||
$id,
|
||||
$module,
|
||||
ResumeService $resumeService,
|
||||
$config = []
|
||||
)
|
||||
{
|
||||
$this->resumeService = $resumeService;
|
||||
parent::__construct($id, $module, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @OA\Get(path="/resume",
|
||||
@ -42,4 +57,87 @@ class ResumeController extends ApiController
|
||||
{
|
||||
return Resume::findOne($userId ?? Yii::$app->user->identity->id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Put(path="/resume/edit-skills",
|
||||
* summary="Изменить скилы",
|
||||
* description="Метод полностью удалит старые скилы и используя переданые id скилов запишет новые",
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* tags={"Resume"},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* @OA\MediaType(
|
||||
* mediaType="json",
|
||||
* @OA\Schema(
|
||||
* required={"UserCard"},
|
||||
* @OA\Property(
|
||||
* property="UserCard",
|
||||
* type="object",
|
||||
* @OA\Property(
|
||||
* property="skill",
|
||||
* type="array",
|
||||
* @OA\Items(
|
||||
* type="integer",
|
||||
* example={1,2,3,4}
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает сообщение об успехе",
|
||||
* ),
|
||||
* )
|
||||
* )
|
||||
*
|
||||
* @return array|ChangeResumeForm
|
||||
* @throws BadRequestHttpException
|
||||
*/
|
||||
public function actionEditSkills()
|
||||
{
|
||||
return $this->resumeService->editSkills(Yii::$app->request->post(), Yii::$app->user->identity->getId());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @OA\Put(path="/resume/edit-text",
|
||||
* summary="Изменить резюме",
|
||||
* description="Метод для изменения текста резюме",
|
||||
* security={
|
||||
* {"bearerAuth": {}}
|
||||
* },
|
||||
* tags={"Resume"},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* @OA\MediaType(
|
||||
* mediaType="application/x-www-form-urlencoded",
|
||||
* @OA\Schema(
|
||||
* required={"resume"},
|
||||
* @OA\Property(
|
||||
* property="resume",
|
||||
* type="string",
|
||||
* description="Текст резюме",
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* ),
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="Возвращает сообщение об успехе",
|
||||
* ),
|
||||
* )
|
||||
* )
|
||||
*
|
||||
* @return array|ChangeResumeForm
|
||||
* @throws BadRequestHttpException
|
||||
*/
|
||||
public function actionEditText(): ChangeResumeForm|array
|
||||
{
|
||||
return $this->resumeService->editText(Yii::$app->request->post(), Yii::$app->user->identity->getId());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models\resume\forms;
|
||||
use yii\base\Model;
|
||||
|
||||
class ChangeResumeForm extends Model
|
||||
{
|
||||
public $resume;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['resume'], 'string'],
|
||||
[['resume'], 'required'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function formName(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\models\resume\forms;
|
||||
use frontend\modules\api\models\Skill;
|
||||
use yii\base\Model;
|
||||
|
||||
class SkillsResumeForm extends Model
|
||||
{
|
||||
public array $skill;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['skill'], 'required'],
|
||||
['skill', 'each', 'rule' => ['integer']],
|
||||
['skill', 'each', 'rule' => ['in', 'range' => Skill::find()->select('id')->column()]]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function formName(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
}
|
64
frontend/modules/api/services/ResumeService.php
Normal file
64
frontend/modules/api/services/ResumeService.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace frontend\modules\api\services;
|
||||
|
||||
use frontend\modules\api\models\resume\forms\ChangeResumeForm;
|
||||
use frontend\modules\api\models\resume\forms\SkillsResumeForm;
|
||||
use frontend\modules\card\models\UserCard;
|
||||
use yii\web\BadRequestHttpException;
|
||||
|
||||
class ResumeService
|
||||
{
|
||||
/**
|
||||
* @param array $params
|
||||
* @param int $userId
|
||||
* @return SkillsResumeForm|string[]
|
||||
* @throws BadRequestHttpException
|
||||
*/
|
||||
public function editSkills(array $params, int $userId): array|SkillsResumeForm
|
||||
{
|
||||
$model = new SkillsResumeForm();
|
||||
$model->load($params['UserCard']);
|
||||
|
||||
if (!$model->validate()) {
|
||||
return $model;
|
||||
}
|
||||
|
||||
$card = UserCard::findOne(['id_user' => $userId]);
|
||||
|
||||
|
||||
if (!$card->save()) {
|
||||
$errors = $card->getErrors();
|
||||
throw new BadRequestHttpException(array_shift($errors)[0]);
|
||||
}
|
||||
|
||||
return ['status' => 'success'];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $params
|
||||
* @param int $userId
|
||||
* @return array|ChangeResumeForm
|
||||
* @throws BadRequestHttpException
|
||||
*/
|
||||
public function editText(array $params, int $userId): array|ChangeResumeForm
|
||||
{
|
||||
$model = new ChangeResumeForm();
|
||||
$model->load($params);
|
||||
|
||||
if (!$model->validate()) {
|
||||
return $model;
|
||||
}
|
||||
|
||||
$card = UserCard::findOne(['id_user' => $userId]);
|
||||
$card->vc_text = $model->resume;
|
||||
|
||||
if (!$card->save()) {
|
||||
$errors = $card->getErrors();
|
||||
throw new BadRequestHttpException(array_shift($errors)[0]);
|
||||
}
|
||||
|
||||
return ['status' => 'success'];
|
||||
}
|
||||
}
|
@ -32,6 +32,7 @@ class UserCard extends \common\models\UserCard
|
||||
|
||||
public function afterSave($insert, $changedAttributes)
|
||||
{
|
||||
if (Yii::$app->request->post('UserCard')) {
|
||||
$post = Yii::$app->request->post('UserCard');
|
||||
|
||||
if ($post['skill']) {
|
||||
@ -45,6 +46,7 @@ class UserCard extends \common\models\UserCard
|
||||
$skill->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user