209 lines
7.0 KiB
PHP
Executable File
209 lines
7.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace backend\modules\card\models;
|
|
|
|
use common\models\AchievementUserCard;
|
|
use common\models\CardSkill;
|
|
use common\models\FieldsValueNew;
|
|
use common\models\UserCardPortfolioProjects;
|
|
use Yii;
|
|
use yii\helpers\ArrayHelper;
|
|
|
|
class UserCard extends \common\models\UserCard
|
|
{
|
|
public $fields;
|
|
public $skill;
|
|
public $achievements;
|
|
public $portfolioProjects;
|
|
|
|
public function init()
|
|
{
|
|
parent::init();
|
|
|
|
$fieldValue = FieldsValueNew::find()->where(
|
|
[
|
|
'item_id' => \Yii::$app->request->get('id'),
|
|
'item_type' => FieldsValueNew::TYPE_PROFILE,
|
|
]
|
|
)
|
|
->all();
|
|
$array = [];
|
|
if (!empty($fieldValue)) {
|
|
foreach ($fieldValue as $item) {
|
|
array_push(
|
|
$array,
|
|
[
|
|
'field_id' => $item->field_id,
|
|
'value' => $item->value,
|
|
'order' => $item->order,
|
|
'type_file' => $item->type_file,
|
|
'field_name' => $item->field->name
|
|
]
|
|
);
|
|
}
|
|
$this->fields = $array;
|
|
} else {
|
|
$this->fields = [
|
|
[
|
|
'field_id' => null,
|
|
'value' => null,
|
|
'order' => null,
|
|
'field_name' => null,
|
|
'type_file' => null,
|
|
],
|
|
];
|
|
}
|
|
|
|
$skill = ArrayHelper::getColumn(
|
|
CardSkill::find()->where(['card_id' => \Yii::$app->request->get('id')])->all(),
|
|
'skill_id'
|
|
);
|
|
|
|
if (!empty($skill)) {
|
|
$this->skill = $skill;
|
|
}
|
|
|
|
$achievements = ArrayHelper::getColumn(AchievementUserCard::find()
|
|
->where(['user_card_id' => \Yii::$app->request->get('id')])
|
|
->innerJoinWith(['achievement' => function($query) {
|
|
$query->andWhere(['status' => \common\models\Achievement::STATUS_ACTIVE]);
|
|
}])
|
|
->all(),
|
|
'achievement_id'
|
|
);
|
|
|
|
if (!empty($achievements)) {
|
|
$this->achievements = $achievements;
|
|
}
|
|
|
|
/** @var UserCardPortfolioProjects[] $portfolioProjects */
|
|
$portfolioProjects = UserCardPortfolioProjects::find()
|
|
->where(['card_id' => \Yii::$app->request->get('id')])
|
|
->all();
|
|
|
|
$array = [];
|
|
if (!empty($portfolioProjects)) {
|
|
foreach ($portfolioProjects as $item) {
|
|
array_push(
|
|
$array,
|
|
[
|
|
'id' => $item->id,
|
|
'title' => $item->title,
|
|
'description' => $item->description,
|
|
'main_stack' => $item->main_stack,
|
|
'additional_stack' => $item->additional_stack,
|
|
'link' => $item->link
|
|
]
|
|
);
|
|
}
|
|
$this->portfolioProjects = $array;
|
|
} else {
|
|
$this->portfolioProjects = [
|
|
[
|
|
'id' => null,
|
|
'title' => null,
|
|
'description' => null,
|
|
'main_stack' => null,
|
|
'additional_stack' => null,
|
|
'link' => null
|
|
]
|
|
];
|
|
}
|
|
}
|
|
|
|
public function behaviors()
|
|
{
|
|
return [
|
|
'log' => [
|
|
'class' => \common\behaviors\LogBehavior::class,
|
|
]
|
|
];
|
|
}
|
|
|
|
public function beforeSave($insert)
|
|
{
|
|
if(isset(\Yii::$app->request->post('UserCard')['salary']))
|
|
{
|
|
$this->salary = str_replace(' ', '', \Yii::$app->request->post('UserCard')['salary']);
|
|
}
|
|
return parent::beforeSave($insert); // TODO: Change the autogenerated stub
|
|
}
|
|
|
|
public function afterSave($insert, $changedAttributes)
|
|
{
|
|
$post = \Yii::$app->request->post('UserCard');
|
|
if($post) {
|
|
if (isset($post['fields'])) {
|
|
FieldsValueNew::deleteAll(['item_id' => $this->id, 'item_type' => FieldsValueNew::TYPE_PROFILE]);
|
|
foreach ($post['fields'] as $item) {
|
|
$item['value'] = urldecode($item['value']);
|
|
|
|
$fieldsValue = new FieldsValueNew();
|
|
$fieldsValue->field_id = $item['field_id'];
|
|
$fieldsValue->value = $item['value'];
|
|
$fieldsValue->order = $item['order'];
|
|
$fieldsValue->item_id = $this->id;
|
|
$fieldsValue->item_type = FieldsValueNew::TYPE_PROFILE;
|
|
if (is_file(Yii::getAlias('@frontend') . '/web/' . $item['value'])) {
|
|
$fieldsValue->type_file = 'file';
|
|
} else {
|
|
$fieldsValue->type_file = 'text';
|
|
}
|
|
|
|
$fieldsValue->save();
|
|
}
|
|
}
|
|
if (array_key_exists('fields', $post) && is_array($post['fields'])) {
|
|
CardSkill::deleteAll(['card_id' => $this->id]);
|
|
if (is_array($post['skill']))
|
|
foreach ($post['skill'] as $item) {
|
|
$skill = new CardSkill();
|
|
$skill->skill_id = $item;
|
|
$skill->card_id = $this->id;
|
|
|
|
$skill->save();
|
|
}
|
|
}
|
|
|
|
if(array_key_exists('portfolioProjects', $post) && is_array($post['portfolioProjects'])){
|
|
UserCardPortfolioProjects::deleteAll(['card_id' => $this->id]);
|
|
|
|
foreach ($post['portfolioProjects'] as $item) {
|
|
$portfolioProject = new UserCardPortfolioProjects();
|
|
$portfolioProject->card_id = $this->id;
|
|
$portfolioProject->title = $item['title'];
|
|
$portfolioProject->description = $item['description'];
|
|
$portfolioProject->main_stack = $item['main_stack'];
|
|
$portfolioProject->additional_stack = $item['additional_stack'];
|
|
$portfolioProject->link = $item['link'];
|
|
|
|
$portfolioProject->save();
|
|
}
|
|
}
|
|
|
|
if(array_key_exists('achievements', $post) && is_array($post['achievements'])){
|
|
AchievementUserCard::deleteAll(['user_card_id' => $this->id]);
|
|
|
|
foreach ($post['achievements'] as $item) {
|
|
$achCard = new AchievementUserCard();
|
|
$achCard->user_card_id = $this->id;
|
|
$achCard->achievement_id = $item;
|
|
|
|
$achCard->save();
|
|
}
|
|
}
|
|
|
|
parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub
|
|
}
|
|
}
|
|
|
|
public static function getParameter($params, $key)
|
|
{
|
|
try {
|
|
return $params[$key];
|
|
} catch (\Exception $e) {
|
|
return '';
|
|
}
|
|
}
|
|
}
|