profile and reports fix
This commit is contained in:
parent
df5823730f
commit
941a3964c6
@ -201,6 +201,11 @@ class UserCard extends \yii\db\ActiveRecord
|
||||
return $this->hasMany(CardSkill::class, ['card_id' => 'id'])->with('skill');
|
||||
}
|
||||
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne(User::class, ['id' => 'id_user']);
|
||||
}
|
||||
|
||||
public static function getNameSkills()
|
||||
{
|
||||
return ArrayHelper::map(Skill::find()->all(), 'id', 'name');
|
||||
@ -268,4 +273,6 @@ class UserCard extends \yii\db\ActiveRecord
|
||||
$user_card->id_user = $user_id;
|
||||
$user_card->save();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ use common\behaviors\GsCors;
|
||||
use common\classes\Debug;
|
||||
use common\models\Reports;
|
||||
use common\models\ReportsTask;
|
||||
use common\models\UserCard;
|
||||
use frontend\modules\api\models\ReportSearchForm;
|
||||
use JsonException;
|
||||
use Yii;
|
||||
@ -49,6 +50,12 @@ class ReportsController extends ApiController
|
||||
$reportsModel = new ReportSearchForm();
|
||||
|
||||
$params = Yii::$app->request->get();
|
||||
if(!isset($params['user_card_id'])){
|
||||
$userCard = UserCard::find()->where(['id_user' => Yii::$app->user->id])->one();
|
||||
if($userCard){
|
||||
$params['user_card_id'] = $userCard->id;
|
||||
}
|
||||
}
|
||||
$reportsModel->attributes = $params;
|
||||
|
||||
if(!$reportsModel->validate()){
|
||||
@ -69,31 +76,25 @@ class ReportsController extends ApiController
|
||||
throw new BadRequestHttpException('Нет параметра tasks');
|
||||
}
|
||||
|
||||
if(!isset($params['user_card_id'])){
|
||||
$userCard = UserCard::find()->where(['id_user' => Yii::$app->user->id])->one();
|
||||
if($userCard){
|
||||
$params['user_card_id'] = $userCard->id;
|
||||
}
|
||||
}
|
||||
|
||||
$reportsModel = new Reports();
|
||||
$reportsModel->attributes = $params;
|
||||
|
||||
$params['tasks'] = (is_array($params['tasks'])) ? $params['tasks'] : json_decode($params['tasks']);
|
||||
|
||||
if(!$reportsModel->validate()){
|
||||
throw new BadRequestHttpException(json_encode($reportsModel->errors));
|
||||
}
|
||||
|
||||
$tasks = [];
|
||||
foreach (json_decode($params['tasks'], true) as $jsonTask){
|
||||
$task = new ReportsTask();
|
||||
$task->scenario = ReportsTask::SCENARIO_WITHOUT_REPORT_ID;
|
||||
$task->attributes = $jsonTask;
|
||||
if (!$task->validate()) {
|
||||
throw new BadRequestHttpException(json_encode($task->errors));
|
||||
}
|
||||
$tasks []= $task->attributes;
|
||||
}
|
||||
$attributes = $task->attributes();
|
||||
|
||||
$reportsModel->save();
|
||||
$tasks = array_map(function ($task)use($reportsModel){$task['report_id'] = $reportsModel->id; return $task;}, $tasks);
|
||||
|
||||
Yii::$app->db->createCommand()->batchInsert(ReportsTask::tableName(), $attributes, $tasks)->execute();
|
||||
|
||||
return array_merge($reportsModel->toArray(), ['tasks' => $tasks]);
|
||||
return array_merge($reportsModel->toArray());
|
||||
}
|
||||
|
||||
public function actionDelete()
|
||||
|
@ -32,6 +32,18 @@ class ProfileSearchForm extends Model
|
||||
];
|
||||
}
|
||||
|
||||
public function exclude($arr)
|
||||
{
|
||||
$ex = ['fio', 'passport', 'resume', 'link_vk', 'link_telegram', 'email', 'salary'];
|
||||
foreach ($ex as $remove) {
|
||||
if (isset($arr[$remove])) {
|
||||
unset($arr[$remove]);
|
||||
}
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
|
||||
public function checkIsArray()
|
||||
{
|
||||
@ -43,12 +55,12 @@ class ProfileSearchForm extends Model
|
||||
public function byId()
|
||||
{
|
||||
if ($this->id) {
|
||||
return UserCard::find()
|
||||
return $this->exclude(UserCard::find()
|
||||
->where(['id' => $this->id])
|
||||
->with(['skillValues'])
|
||||
->with(['achievements'])
|
||||
->asArray()
|
||||
->one();
|
||||
->one());
|
||||
}
|
||||
|
||||
return null;
|
||||
@ -59,13 +71,12 @@ class ProfileSearchForm extends Model
|
||||
$model = UserCard::find();
|
||||
|
||||
|
||||
if($this->skills){
|
||||
if ($this->skills) {
|
||||
$model->joinWith(['skillValues']);
|
||||
$this->skills = explode(',', $this->skills);
|
||||
$model->where(['card_skill.skill_id' => $this->skills]);
|
||||
$model->having('COUNT(DISTINCT skill_id) = ' . count($this->skills));
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
$model->joinWith('skillValues');
|
||||
}
|
||||
|
||||
@ -78,8 +89,19 @@ class ProfileSearchForm extends Model
|
||||
|
||||
$model->groupBy('card_skill.card_id');
|
||||
|
||||
return $model->limit($this->limit)
|
||||
$res = $model->limit($this->limit)
|
||||
->offset($this->offset)->orderBy('updated_at DESC')->asArray()->all();
|
||||
|
||||
if(!$res){
|
||||
return [];
|
||||
}
|
||||
|
||||
$resArr = [];
|
||||
foreach ($res as $re){
|
||||
$resArr[] = $this->exclude($re);
|
||||
}
|
||||
|
||||
return $resArr;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user