request->get('ids')); if(!empty(\Yii::$app->user->id)) { array_push($ids, \Yii::$app->user->id); } $model = new UserSearch(); $dataProvider = $model->search(\Yii::$app->request->queryParams); $dataProvider->query->andFilterWhere([ 'not in', 'id', $ids, ]); $dataProvider->query->andWhere([ 'user_info.is_freelancer' => 1, 'type' => 1, ]); $dataProvider->query->with('specializations'); return $this->renderAjax('users', [ 'model' => $model, 'dataProvider' => $dataProvider, ]); } public function actionUserInput() { /** * @var ActiveRecord $model */ $request = \Yii::$app->request; $response = \Yii::$app->response; $response->format = $response::FORMAT_JSON; $user_id = $request->get('id'); $model = $request->get('model'); $component = $request->get('component'); if(empty( $user_id )) { return [ 'error' => 'User ID must be set' ]; } elseif(empty( $model )) { return [ 'error' => 'Model must be set' ]; } $user = User::find() ->where([ 'id' => $user_id, 'type' => 1, 'user_info.is_freelancer' => 1, ]) ->joinWith('userInfo') ->one(); if(empty( $user )) { return [ 'error' => 'User not found' ]; } if(!class_exists($model)) { return [ 'error' => 'Class not found' ]; } $model = new $model(); if(!$model instanceof ActiveRecord) { return [ 'error' => 'Class must extend ActiveRecord' ]; } if(!$model->hasAttribute('user_id')) { return [ 'error' => 'Class must have user_id attribute' ]; } $html = $this->renderPartial('project_user', [ 'model' => $model, 'user' => $user, ]); return [ 'result' => [ 'html' => $html, 'id' => $user->id, 'firstname' => $user->firstname, 'lastname' => $user->lastname, 'component' => $component, ], ]; } public function actionPortfolioUserRemove() { $request = \Yii::$app->request; $response = \Yii::$app->response; $response->format = $response::FORMAT_JSON; $post = $request->post(); if(empty( $post[ 'user_id' ] ) || empty( $post[ 'portfolio_id' ] )) { return [ 'error' => 'user_id и portfolio_id должны быть заполнены.' ]; } $user_id = $post[ 'user_id' ]; $portfolio_id = $post[ 'portfolio_id' ]; $portfolio = Portfolio::find() ->where([ 'portfolio_id' => $portfolio_id, 'user_id' => \Yii::$app->user->id, ]) ->one(); if(empty( $portfolio )) { return [ 'error' => 'Запись не найдена' ]; } $user = User::find() ->where([ 'id' => $user_id ]) ->one(); if(empty( $user )) { return [ 'error' => 'Пользователь не найден' ]; } $portfolio_user = PortfolioUser::find() ->where([ 'portfolio_id' => $portfolio->portfolio_id, 'user_id' => $user->id, 'status' => 1, ]) ->one(); if(empty( $portfolio_user )) { return [ 'error' => 'Пользователь не относится к данной записи' ]; } if($portfolio_user->delete()) { return [ 'result' => [ 'message' => 'Пользователь удален', 'user_id' => $user->id, 'portfolio_id' => $portfolio->portfolio_id, ], ]; } else { return [ 'error' => 'Ошибка удаления' ]; } } public function actionGetFeedback() { $request = \Yii::$app->request; $response = \Yii::$app->response; $response->format = $response::FORMAT_JSON; $model = new Feedback(); if(!empty( \Yii::$app->user->identity )) { /** * @var User $user */ $user = \Yii::$app->user->identity; $phones = $user->getPhones(); $model->name = $user->name; if(!empty( $phones )) { $model->phone = $phones[ 1 ]['phone']; } if(!empty( $user->email )) { $model->email = $user->email; } } $form = $this->renderAjax('feedback_form', [ 'model' => $model ]); return ['result' => ['form' => $form]]; } public function actionPostFeedback() { $request = \Yii::$app->request; $response = \Yii::$app->response; $response->format = $response::FORMAT_JSON; $model = new Feedback(); if($model->load($request->post())) { if($model->save()) { return ['result' => ['message' => 'Вопрос успешно отправлен, ответ будет отправлен на Вашу почту']]; } } $form = $this->renderAjax('feedback_form', [ 'model' => $model ]); return ['error' => 'Error detected', 'result' => ['form' => $form]]; } public function actionFeedbackCompany() { $request = \Yii::$app->request; $response = \Yii::$app->response; $response->format = $response::FORMAT_JSON; $model = new FeedbackCompany(['ip' => $request->userIP]); if($model->load($request->post())) { if($model->save()) { return ['result' => ['message' => 'Вопрос успешно отправлен, представители компании свяжутся с Вами в ближайшее время']]; } } return ['error' => 'Ошибка формы']; } }