portal.mkgtu.ru/backend/controllers/JuxtaposeController.php

79 lines
2.9 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace backend\controllers;
use backend\models\search\UserDuplesSearchModel;
use common\components\UserReferenceTypeManager\UserReferenceTypeManager;
use common\models\User;
use Yii;
use yii\filters\AccessControl;
use yii\web\BadRequestHttpException;
use yii\web\NotFoundHttpException;
class JuxtaposeController extends \yii\web\Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['administrator']
],
],
],
];
}
public function actionIndex(int $user_id)
{
$user = User::findOne($user_id);
if (!$user) {
throw new NotFoundHttpException('Пользователь не найден');
}
$search_model = (new UserDuplesSearchModel())->load_and_search(\Yii::$app->request->post());
return $this->render('index', compact('search_model', 'user'));
}
public function actionUnbindFromUser(int $user_id)
{
$user = User::findOne($user_id);
if (!$user) {
throw new NotFoundHttpException('Пользователь не найден');
}
$user->guid = null;
$user->user_ref_id = null;
$user->save(false, ['guid', 'user_ref_id']);
Yii::$app->session->setFlash('alert', [
'body' => "Пользователь {$user->getPublicIdentity()} успешно отвязан от физического лица в Информационной системе вуза",
'options' => ['class' => 'alert-success']
]);
return $this->redirect(['index', 'user_id' => $user->id]);
}
public function actionBindToUser(int $user_id)
{
$abit_code = Yii::$app->request->post('abit_code');
if (!$abit_code) {
throw new BadRequestHttpException('Не удалось получить данные для сопоставления');
}
$user = User::findOne($user_id);
if (!$user) {
throw new NotFoundHttpException('Пользователь не найден');
}
$referenceType = UserReferenceTypeManager::getUserReferenceFrom1CByGuid($abit_code);
if ($referenceType) {
$user->guid = $referenceType->reference_id;
$user->user_ref_id = $referenceType->id;
if ($user->save()) {
Yii::$app->session->setFlash('alert', [
'body' => 'Пользователь успешно сопоставлен с физ. лицом в Информационной системе вуза',
'options' => ['class' => 'alert-success']
]);
}
}
return $this->redirect(['index', 'user_id' => $user->id]);
}
}