1064 lines
42 KiB
PHP
1064 lines
42 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace common\modules\student\components\evaluation\controllers;
|
|||
|
|
|||
|
use common\models\EmptyCheck;
|
|||
|
use common\models\User;
|
|||
|
use common\modules\student\components\evaluation\models\CommentForm;
|
|||
|
use common\modules\student\components\evaluation\models\MarkForm;
|
|||
|
use common\modules\student\components\evaluation\models\UploadForm;
|
|||
|
use common\modules\student\models\Teacher;
|
|||
|
use common\modules\student\validators\PortfolioFormValidator;
|
|||
|
use common\services\NamesManagementService;
|
|||
|
use Yii;
|
|||
|
use yii\base\DynamicModel;
|
|||
|
use yii\filters\AccessControl;
|
|||
|
use yii\filters\Cors;
|
|||
|
use yii\helpers\Html;
|
|||
|
use yii\web\Controller;
|
|||
|
use yii\web\UploadedFile;
|
|||
|
|
|||
|
class EvaluationController extends Controller
|
|||
|
{
|
|||
|
public $role;
|
|||
|
private NamesManagementService $namesManagementService;
|
|||
|
|
|||
|
public function __construct($id, $module, NamesManagementService $namesManagementService, $config = [])
|
|||
|
{
|
|||
|
parent::__construct($id, $module, $config);
|
|||
|
$this->namesManagementService = $namesManagementService;
|
|||
|
}
|
|||
|
|
|||
|
public function beforeAction($action)
|
|||
|
{
|
|||
|
|
|||
|
if (isset(Yii::$app->user->identity) && Yii::$app->user->identity->isInRole(User::ROLE_STUDENT)) {
|
|||
|
$this->role = User::ROLE_STUDENT;
|
|||
|
} elseif (isset(Yii::$app->user->identity) && Yii::$app->user->identity->isInRole(User::ROLE_TEACHER)) {
|
|||
|
$this->role = User::ROLE_TEACHER;
|
|||
|
}
|
|||
|
|
|||
|
return parent::beforeAction($action);
|
|||
|
}
|
|||
|
|
|||
|
public function behaviors()
|
|||
|
{
|
|||
|
return [
|
|||
|
'access' => [
|
|||
|
'class' => AccessControl::class,
|
|||
|
'rules' => [
|
|||
|
[
|
|||
|
'actions' => [
|
|||
|
'ap',
|
|||
|
'comment',
|
|||
|
'delete-file',
|
|||
|
'delete-portfolio',
|
|||
|
'dictionary',
|
|||
|
'evaluation',
|
|||
|
'file',
|
|||
|
'form',
|
|||
|
'index',
|
|||
|
'mark-list',
|
|||
|
'mark',
|
|||
|
'students',
|
|||
|
'upload',
|
|||
|
],
|
|||
|
'allow' => true,
|
|||
|
'roles' => [
|
|||
|
User::ROLE_TEACHER,
|
|||
|
User::ROLE_STUDENT,
|
|||
|
]
|
|||
|
],
|
|||
|
]
|
|||
|
],
|
|||
|
'corsFilter' => [
|
|||
|
'class' => Cors::class,
|
|||
|
],
|
|||
|
];
|
|||
|
}
|
|||
|
|
|||
|
const ATTR_READONLY = 1;
|
|||
|
const ATTR_REQUIRED = 2;
|
|||
|
const ATTR_HYPERLINK = 3;
|
|||
|
const ATTR_VISIBLE = 4;
|
|||
|
const ATTR_MULTILINE = 6;
|
|||
|
|
|||
|
public function actionForm()
|
|||
|
{
|
|||
|
$fields_with_label = [];
|
|||
|
|
|||
|
$luid = Yii::$app->request->post('luid');
|
|||
|
$puid = Yii::$app->request->post('puid');
|
|||
|
$lcuid = Yii::$app->request->post('lcuid');
|
|||
|
$uid = Yii::$app->request->post('uid');
|
|||
|
$caf_id = Yii::$app->request->post('caf_id');
|
|||
|
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
|
|||
|
if (!empty($uid)) {
|
|||
|
|
|||
|
|
|||
|
$portfolio = $portfolioLoader->loadLapResults($puid, $luid);
|
|||
|
|
|||
|
if (isset($portfolio->return, $portfolio->return->LapResultStrings)) {
|
|||
|
$lapStrings = $portfolio->return->LapResultStrings;
|
|||
|
|
|||
|
if (!empty($lapStrings) && !is_array($lapStrings)) {
|
|||
|
$lapStrings = [$lapStrings];
|
|||
|
}
|
|||
|
|
|||
|
$props = [];
|
|||
|
|
|||
|
foreach ($lapStrings as $lapString) {
|
|||
|
if ($lapString->Result->ReferenceUID == $uid) {
|
|||
|
$props = $lapString;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
$props = $portfolioLoader->loadLapResultClassesProperties(
|
|||
|
$puid,
|
|||
|
$luid,
|
|||
|
$lcuid
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
$fields = ['luid', 'puid', 'lcuid', 'uid', 'caf_id'];
|
|||
|
|
|||
|
if (isset($props->return->LapResultStrings->LapResultProperties)) {
|
|||
|
$props = $props->return->LapResultStrings->LapResultProperties;
|
|||
|
} elseif (isset($props->LapResultProperties)) {
|
|||
|
$value = $props->Result->ReferenceName;
|
|||
|
$props = $props->LapResultProperties;
|
|||
|
} else {
|
|||
|
$props = [];
|
|||
|
}
|
|||
|
|
|||
|
$fields[] = 'ref_name';
|
|||
|
$fields_with_label[] = [
|
|||
|
'name' => 'ref_name',
|
|||
|
'label' => 'Наименование',
|
|||
|
'type' => 'Строка',
|
|||
|
'attributes' => [self::ATTR_REQUIRED, self::ATTR_VISIBLE],
|
|||
|
'value' => $value ?? ''
|
|||
|
];
|
|||
|
|
|||
|
if (!is_array($props)) {
|
|||
|
$props = [$props];
|
|||
|
}
|
|||
|
|
|||
|
$startLength = count($fields_with_label);
|
|||
|
|
|||
|
$PropertyAttributeValue = $this->namesManagementService->getPropertyAttributeValueColumnName();
|
|||
|
$PropertyAttributeName = $this->namesManagementService->getPropertyAttributeNameColumnName();
|
|||
|
|
|||
|
foreach ($props as $i => $prop) {
|
|||
|
$I = $startLength + $i;
|
|||
|
|
|||
|
$property = $prop->Property->ReferenceName;
|
|||
|
$description = $prop->Description;
|
|||
|
|
|||
|
$attributes = [self::ATTR_VISIBLE];
|
|||
|
foreach ($prop->Attributes as $attribute) {
|
|||
|
if (!isset($attribute->{$PropertyAttributeName})) {
|
|||
|
continue;
|
|||
|
}
|
|||
|
switch ($attribute->{$PropertyAttributeName}) {
|
|||
|
case 'ТолькоПросмотр':
|
|||
|
if ($attribute->{$PropertyAttributeValue}) {
|
|||
|
$attributeValue = self::ATTR_READONLY;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 'ПроверкаЗаполнения':
|
|||
|
if ($attribute->{$PropertyAttributeValue}) {
|
|||
|
$attributeValue = self::ATTR_REQUIRED;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 'МногострочныйРежим':
|
|||
|
if ($attribute->{$PropertyAttributeValue})
|
|||
|
$attributeValue = self::ATTR_MULTILINE;
|
|||
|
break;
|
|||
|
|
|||
|
case 'Гиперссылка':
|
|||
|
if ($attribute->{$PropertyAttributeValue}) {
|
|||
|
$attributeValue = self::ATTR_HYPERLINK;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 'Видимость':
|
|||
|
if (!$attribute->{$PropertyAttributeValue}) {
|
|||
|
$attributes = array_diff($attributes, [self::ATTR_VISIBLE]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
$attributeValue = '';
|
|||
|
}
|
|||
|
|
|||
|
if (!empty($attributeValue)) {
|
|||
|
$attributes[] = $attributeValue;
|
|||
|
$attributeValue = '';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (strpos($prop->ValueType, 'СправочникСсылка.') !== false) {
|
|||
|
$fields_with_label[$I] = [
|
|||
|
'name' => $this->getLatinName($property), 'label' => $description,
|
|||
|
'type' => 'Справочник',
|
|||
|
'Ref' => $prop->ValueType,
|
|||
|
'attributes' => $attributes,
|
|||
|
'Filters' => $prop->Filters,
|
|||
|
'value' => isset($prop->ValueRef) ? $prop->ValueRef->ReferenceUID : '',
|
|||
|
'text' => isset($prop->ValueRef) ? $prop->ValueRef->ReferenceName : '',
|
|||
|
];
|
|||
|
} elseif ($prop->ValueType == 'Дата') {
|
|||
|
$fields_with_label[$I] = [
|
|||
|
'name' => $this->getLatinName($property), 'label' => $description,
|
|||
|
'type' => $prop->ValueType, 'attributes' => $attributes,
|
|||
|
'value' => isset($prop->Value) ? date('d.m.Y', strtotime($prop->Value)) : null,
|
|||
|
];
|
|||
|
} else {
|
|||
|
$fields_with_label[$I] = [
|
|||
|
'name' => $this->getLatinName($property), 'label' => $description,
|
|||
|
'type' => $prop->ValueType, 'attributes' => $attributes,
|
|||
|
'value' => isset($prop->Value) ? $prop->Value : null,
|
|||
|
];
|
|||
|
}
|
|||
|
$fields[] = $this->getLatinName($property);
|
|||
|
|
|||
|
if (isset($prop->MaxLength)) {
|
|||
|
$prop->MaxLength = (int)$prop->MaxLength;
|
|||
|
$fields_with_label[$I]['maxLength'] = $prop->MaxLength;
|
|||
|
} else {
|
|||
|
$fields_with_label[$I]['maxLength'] = INF;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$model = new DynamicModel($fields);
|
|||
|
|
|||
|
foreach ($fields_with_label as $field) {
|
|||
|
if (in_array(self::ATTR_REQUIRED, $field['attributes'])) {
|
|||
|
$model->addRule(
|
|||
|
$field['name'],
|
|||
|
'required',
|
|||
|
['message' => "Необходимо заполнить «{$field['label']}»."]
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
if (!empty($field['value'])) {
|
|||
|
switch ($field['type']) {
|
|||
|
case 'Булево':
|
|||
|
$model->{$field['name']} = $field['value'] == 'true';
|
|||
|
break;
|
|||
|
|
|||
|
case 'Дата':
|
|||
|
$model->{$field['name']} = empty($field['value']) ? '' : $field['value'];
|
|||
|
break;
|
|||
|
|
|||
|
default:
|
|||
|
$model->{$field['name']} = $field['value'];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (!empty($field['maxLength'])) {
|
|||
|
$model
|
|||
|
->addRule(
|
|||
|
[$field['name']],
|
|||
|
PortfolioFormValidator::class,
|
|||
|
['maxLength' => $field['maxLength']]
|
|||
|
)
|
|||
|
->validate();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$model->luid = $luid;
|
|||
|
$model->puid = $puid;
|
|||
|
$model->lcuid = $lcuid;
|
|||
|
$model->uid = $uid;
|
|||
|
$model->caf_id = $caf_id;
|
|||
|
|
|||
|
if (Yii::$app->request->isAjax) {
|
|||
|
return $this->renderAjax('@common/modules/student/components/evaluation/views/_add-form', [
|
|||
|
'model' => $model,
|
|||
|
'fields_with_label' => $fields_with_label
|
|||
|
]);
|
|||
|
} else {
|
|||
|
if (!Yii::$app->request->isAjax && Yii::$app->request->isPost) {
|
|||
|
Yii::$app->session->setFlash('warning', 'Не была заполнена форма');
|
|||
|
}
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation',
|
|||
|
'luid' => $model->luid,
|
|||
|
'puid' => $model->puid,
|
|||
|
'caf_id' => $model->caf_id,
|
|||
|
'studentId' => $model->studentId
|
|||
|
]);
|
|||
|
} else {
|
|||
|
return redirect(['/student/portfolio', 'luid' => $model->luid, 'puid' => $model->puid, 'recordbook_id' => $model->recordbook_id]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function actionUpload()
|
|||
|
{
|
|||
|
$model = new UploadForm();
|
|||
|
$model->uid = Yii::$app->request->post('uid');
|
|||
|
$model->luid = Yii::$app->request->post('luid');
|
|||
|
$model->puid = Yii::$app->request->post('puid');
|
|||
|
$model->studentId = Yii::$app->request->post('studentId');
|
|||
|
$model->caf_id = Yii::$app->request->post('caf_id');
|
|||
|
|
|||
|
$model->load(Yii::$app->request->post());
|
|||
|
$file = UploadedFile::getInstance($model, 'file');
|
|||
|
if (!empty($file) && Yii::$app->request->isPost) {
|
|||
|
$txt = base64_encode(file_get_contents($file->tempName));
|
|||
|
|
|||
|
$ext = pathinfo($file->name);
|
|||
|
|
|||
|
$answer = [
|
|||
|
'ResultRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->uid,
|
|||
|
'ReferenceClassName' => 'Справочник.Объекты'
|
|||
|
],
|
|||
|
'BinaryFile' => [
|
|||
|
'Name' => $ext['filename'],
|
|||
|
'Description' => $model->description,
|
|||
|
'Size' => $file->size,
|
|||
|
'Extension' => $ext['extension'],
|
|||
|
'Data' => $txt
|
|||
|
],
|
|||
|
'FileRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => '',
|
|||
|
'ReferenceClassName' => '',
|
|||
|
]
|
|||
|
];
|
|||
|
|
|||
|
Yii::$app->getPortfolioService->saveAttachedFile($answer);
|
|||
|
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect(['/student/evaluation', 'studentId' => $model->studentId, 'luid' => $model->luid, 'puid' => $model->puid, 'caf_id' => $model->caf_id]);
|
|||
|
} else {
|
|||
|
return redirect(['/student/evaluation', 'luid' => $model->luid, 'puid' => $model->puid, 'caf_id' => $model->caf_id]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (Yii::$app->request->isAjax) {
|
|||
|
return $this->renderAjax('@common/modules/student/components/evaluation/views/_add-file', ['model' => $model]);
|
|||
|
} else {
|
|||
|
if (!Yii::$app->request->isAjax && Yii::$app->request->isPost && empty($file)) {
|
|||
|
Yii::$app->session->setFlash('warning', 'Не был прикреплён файл');
|
|||
|
}
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation',
|
|||
|
'luid' => $model->luid,
|
|||
|
'puid' => $model->puid,
|
|||
|
'caf_id' => $model->caf_id,
|
|||
|
'plan_id' => $model->plan_id,
|
|||
|
'studentId' => $model->studentId
|
|||
|
]);
|
|||
|
} else {
|
|||
|
return redirect(['/student/portfolio', 'luid' => $model->luid, 'puid' => $model->puid, 'recordbook_id' => $model->recordbook_id]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return redirect(['/student/portfolio', 'luid' => $model->luid, 'puid' => $model->puid, 'caf_id' => $model->caf_id]);
|
|||
|
}
|
|||
|
|
|||
|
public function actionComment()
|
|||
|
{
|
|||
|
$model = new CommentForm();
|
|||
|
$model->uid = Yii::$app->request->post('uid');
|
|||
|
$model->luid = Yii::$app->request->post('luid');
|
|||
|
$model->puid = Yii::$app->request->post('puid');
|
|||
|
$model->studentId = Yii::$app->request->post('studentId');
|
|||
|
$model->caf_id = Yii::$app->request->post('cafId');
|
|||
|
$model->plan_id = Yii::$app->request->post('planId');
|
|||
|
|
|||
|
$model->load(Yii::$app->request->post());
|
|||
|
|
|||
|
if (!empty($model->comment)) {
|
|||
|
$guid = Yii::$app->user->identity->guid;
|
|||
|
if ($this->role == User::ROLE_TEACHER) {
|
|||
|
$user_info = Yii::$app->getPortfolioService->loadReference(
|
|||
|
[
|
|||
|
'Parameter' => $guid,
|
|||
|
'ParameterType' => 'Код',
|
|||
|
'ParameterRef' => 'Справочник.ФизическиеЛица'
|
|||
|
]
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
$rb = $user_info->return->Reference;
|
|||
|
} else {
|
|||
|
$recordbooks = Yii::$app->getPortfolioService->loadRecordbooks($guid);
|
|||
|
|
|||
|
if (!is_array($recordbooks)) {
|
|||
|
$recordbooks = [$recordbooks];
|
|||
|
}
|
|||
|
|
|||
|
foreach ($recordbooks as $recordbook) {
|
|||
|
if ($recordbook->RecordbookId == $model->caf_id) {
|
|||
|
$rb = $recordbook->PropertyRecordBook[0]->Value;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$res = Yii::$app->getPortfolioService->saveCommentary([
|
|||
|
'ObjectRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->uid,
|
|||
|
'ReferenceClassName' => 'Справочник.Объекты'
|
|||
|
],
|
|||
|
'Commentary' => [
|
|||
|
'Period' => date('Y-m-d\TH:i:s'),
|
|||
|
'Author' => json_decode(json_encode($rb), true),
|
|||
|
'Text' => $model->comment,
|
|||
|
'UIDCommentary' => ''
|
|||
|
]
|
|||
|
]);
|
|||
|
|
|||
|
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation', 'studentId' => $model->studentId, 'luid' => $model->luid, 'puid' => $model->puid,
|
|||
|
'caf_id' => $model->caf_id, 'plan_id' => $model->plan_id
|
|||
|
]);
|
|||
|
} else {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation', 'luid' => $model->luid, 'puid' => $model->puid, 'caf_id' => $model->caf_id, 'plan_id' => $model->plan_id
|
|||
|
]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (Yii::$app->request->isAjax) {
|
|||
|
return $this->renderAjax('@common/modules/student/components/evaluation/views/_add-comment', [
|
|||
|
'model' => $model
|
|||
|
]);
|
|||
|
} else {
|
|||
|
if (!Yii::$app->request->isAjax && Yii::$app->request->isPost) {
|
|||
|
Yii::$app->session->setFlash('warning', 'Не был добавлен комментарий');
|
|||
|
}
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation',
|
|||
|
'luid' => $model->luid,
|
|||
|
'puid' => $model->puid,
|
|||
|
'caf_id' => $model->caf_id,
|
|||
|
'plan_id' => $model->plan_id,
|
|||
|
'studentId' => $model->studentId
|
|||
|
]);
|
|||
|
} else {
|
|||
|
return redirect(['/student/portfolio', 'luid' => $model->luid, 'puid' => $model->puid, 'recordbook_id' => $model->recordbook_id]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public function actionMark()
|
|||
|
{
|
|||
|
$model = new MarkForm();
|
|||
|
$model->uid = Yii::$app->request->post('uid');
|
|||
|
$model->luid = Yii::$app->request->post('luid');
|
|||
|
$model->puid = Yii::$app->request->post('puid');
|
|||
|
$model->studentId = Yii::$app->request->post('studentId');
|
|||
|
$model->planId = Yii::$app->request->post('planId');
|
|||
|
$model->statementId = Yii::$app->request->post('statementId');
|
|||
|
$model->cafId = (int)Yii::$app->request->post('cafId');
|
|||
|
|
|||
|
$model->load(Yii::$app->request->post());
|
|||
|
|
|||
|
if (!empty($model->mark)) {
|
|||
|
$guid = Yii::$app->user->identity->guid;
|
|||
|
$teacher = new Teacher([
|
|||
|
'guid' => $guid,
|
|||
|
'departmentSerialNumber' => $model->cafId
|
|||
|
]);
|
|||
|
|
|||
|
$res = Yii::$app->getPortfolioService->saveMark([
|
|||
|
'Teacher' => $teacher->buildFor1C(),
|
|||
|
|
|||
|
'PlanUID' => $model->puid,
|
|||
|
'LapUID' => $model->luid,
|
|||
|
|
|||
|
'ResultRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->uid,
|
|||
|
'ReferenceClassName' => 'Справочник.Объекты',
|
|||
|
],
|
|||
|
'MarkRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->mark,
|
|||
|
'ReferenceClassName' => 'Справочник.Отметки'
|
|||
|
],
|
|||
|
'LessonDate' => date('Y-m-d H:i:s'),
|
|||
|
'StatementRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->statementId,
|
|||
|
'ReferenceClassName' => 'Документ.Ведомость',
|
|||
|
]
|
|||
|
]);
|
|||
|
|
|||
|
return redirect([
|
|||
|
'/student/evaluation', 'plan_id' => $model->planId,
|
|||
|
'studentId' => $model->studentId, 'luid' => $model->luid, 'puid' => $model->puid,
|
|||
|
'cafId' => $model->cafId,
|
|||
|
]);
|
|||
|
}
|
|||
|
|
|||
|
$marks = Yii::$app->getPortfolioService->loadAllowedRatingSystems([
|
|||
|
'StatementRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $model->statementId,
|
|||
|
'ReferenceClassName' => 'Документ.Ведомость',
|
|||
|
]
|
|||
|
]);
|
|||
|
|
|||
|
|
|||
|
$types = array_column(
|
|||
|
is_array($marks->return->References) ? $marks->return->References : [$marks->return->References],
|
|||
|
'ReferenceName',
|
|||
|
'ReferenceUID'
|
|||
|
);
|
|||
|
|
|||
|
if (Yii::$app->request->isAjax) {
|
|||
|
return $this->renderAjax('@common/modules/student/components/evaluation/views/_add-mark', [
|
|||
|
'model' => $model,
|
|||
|
'types' => $types
|
|||
|
]);
|
|||
|
} else {
|
|||
|
if (!Yii::$app->request->isAjax && Yii::$app->request->isPost) {
|
|||
|
Yii::$app->session->setFlash('warning', 'Не была установлена оценка');
|
|||
|
}
|
|||
|
if (!empty($model->studentId)) {
|
|||
|
return redirect([
|
|||
|
'/student/evaluation',
|
|||
|
'luid' => $model->luid,
|
|||
|
'puid' => $model->puid,
|
|||
|
'caf_id' => $model->cafId,
|
|||
|
'plan_id' => $model->planId,
|
|||
|
'studentId' => $model->studentId
|
|||
|
]);
|
|||
|
} else {
|
|||
|
return redirect(['/student/portfolio', 'luid' => $model->luid, 'puid' => $model->puid, 'recordbook_id' => $model->recordbook_id]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function actionIndex($studentId = null, $puid = null, $luid = null, $caf_id = null, $plan_id = null)
|
|||
|
{
|
|||
|
$post_buffer = Yii::$app->request->post();
|
|||
|
if (Yii::$app->request->isAjax) {
|
|||
|
$puid = $post_buffer['puid'];
|
|||
|
$luid = $post_buffer['luid'];
|
|||
|
$caf_id = $post_buffer['caf_id'];
|
|||
|
$plan_id = $post_buffer['plan_id'];
|
|||
|
$studentId = $post_buffer['studentId'];
|
|||
|
}
|
|||
|
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
$portfolio = $portfolioLoader->loadLapResults($puid, $luid);
|
|||
|
if (isset($post_buffer['ref_UID'], $post_buffer['table_button_submit'])) {
|
|||
|
$portfolio_buffer = json_decode(json_encode($portfolio), true);
|
|||
|
if ($post_buffer['table_button_submit'] == 'save') {
|
|||
|
$portfolio_buffer = Yii::$app->portfolioTable->rewritePortfolio($portfolio_buffer, $post_buffer['new_table'], $post_buffer['ref_UID'], $post_buffer['stringIndex']);
|
|||
|
} elseif ($post_buffer['table_button_submit'] == 'delete' && count($post_buffer['selection']) > 0) {
|
|||
|
$portfolio_buffer = Yii::$app->portfolioTable->deletePortfolio($portfolio_buffer, $post_buffer['new_table'], $post_buffer['selection'], $post_buffer['ref_UID'], $post_buffer['stringIndex']);
|
|||
|
} elseif ($post_buffer['table_button_submit'] == 'add') {
|
|||
|
$portfolio_buffer = Yii::$app->portfolioTable->addPortfolio($portfolio_buffer, $post_buffer['ref_UID'], $post_buffer['stringIndex']);
|
|||
|
}
|
|||
|
if (empty($post_buffer['stringIndex'])) {
|
|||
|
$result = Yii::$app->getPortfolioService->saveLapResult([
|
|||
|
'PlanUID' => $post_buffer['puid'],
|
|||
|
'LapUID' => $post_buffer['luid'],
|
|||
|
'LapResult' => $portfolio_buffer['return']['LapResultStrings']
|
|||
|
]);
|
|||
|
} else {
|
|||
|
$result = Yii::$app->getPortfolioService->saveLapResult([
|
|||
|
'PlanUID' => $post_buffer['puid'],
|
|||
|
'LapUID' => $post_buffer['luid'],
|
|||
|
'LapResult' => $portfolio_buffer['return']['LapResultStrings'][$post_buffer['stringIndex']]
|
|||
|
]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$user_info = Yii::$app->getPortfolioService->loadReference(
|
|||
|
[
|
|||
|
'Parameter' => Yii::$app->user->identity->guid,
|
|||
|
'ParameterType' => 'Код',
|
|||
|
'ParameterRef' => 'Справочник.ФизическиеЛица'
|
|||
|
]
|
|||
|
);
|
|||
|
|
|||
|
$user = json_decode(json_encode($user_info->return->Reference), true);
|
|||
|
$states = Yii::$app->getPortfolioService->loadEmployerStates(['PersonRef' => $user]);
|
|||
|
$_states = [];
|
|||
|
if (isset($states)) {
|
|||
|
$_states = $states->return->EmployerState;
|
|||
|
}
|
|||
|
if (!empty($_states) && empty($caf_id)) {
|
|||
|
$caf_id = 0;
|
|||
|
}
|
|||
|
$caf_list = [];
|
|||
|
if (!is_array($_states)) {
|
|||
|
$_states = [$_states];
|
|||
|
}
|
|||
|
foreach ($_states as $i => $state) {
|
|||
|
$caf_list[] = ['id' => $i, 'name' => $state->JobDescription];
|
|||
|
}
|
|||
|
$_curriculums = [];
|
|||
|
if (isset($_states[$caf_id])) {
|
|||
|
$curriculums = Yii::$app->getPortfolioService->loadEmployersCurriculums([
|
|||
|
'EmployerRef' => $user,
|
|||
|
'EmployerState' => json_decode(json_encode($_states[$caf_id]), true)
|
|||
|
]);
|
|||
|
|
|||
|
if (isset($curriculums->return, $curriculums->return->Curriculum)) {
|
|||
|
$_curriculums = $curriculums->return->Curriculum;
|
|||
|
}
|
|||
|
}
|
|||
|
if (!is_array($_curriculums)) {
|
|||
|
$_curriculums = [$_curriculums];
|
|||
|
}
|
|||
|
$curriculums_data = [];
|
|||
|
$cid = null;
|
|||
|
foreach ($_curriculums as $curriculum) {
|
|||
|
$curriculums_data[$curriculum->CurriculumId] = $curriculum->CurriculumName;
|
|||
|
|
|||
|
if ($curriculum->CurriculumId == $plan_id) {
|
|||
|
$cid = $curriculum->CurriculumRef;
|
|||
|
}
|
|||
|
}
|
|||
|
$students = [];
|
|||
|
if (!empty($cid)) {
|
|||
|
$students = Yii::$app->getPortfolioService->loadEmployersStudents([
|
|||
|
'EmployerRef' => $user,
|
|||
|
'EmployerState' => json_decode(json_encode($_states[$caf_id]), true),
|
|||
|
'CurriculumRef' => json_decode(json_encode($cid), true),
|
|||
|
'TextFilterType' => 'AnyPosition',
|
|||
|
'Text' => ''
|
|||
|
]);
|
|||
|
}
|
|||
|
|
|||
|
$treeArray = [];
|
|||
|
|
|||
|
$portfolio = [];
|
|||
|
$files = [];
|
|||
|
$comments = [];
|
|||
|
$marks = [];
|
|||
|
$recordbook = null;
|
|||
|
$_students = [];
|
|||
|
$error_RecordBook = false;
|
|||
|
if (isset($students, $students->return, $students->return->StudentList) && !empty($studentId)) {
|
|||
|
foreach (is_array($students->return->StudentList) ? $students->return->StudentList : [$students->return->StudentList] as $student) {
|
|||
|
if ($student->Student->ReferenceId == $studentId) {
|
|||
|
if (isset($student->RecordBook)) {
|
|||
|
$recordbook = $student->RecordBook;
|
|||
|
} else {
|
|||
|
$error_RecordBook = Html::tag('div', '<strong>Ошибка.</strong> Данный студент отчислен или является выпускником.', ['class' => 'alert alert-danger']);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (!empty($recordbook)) {
|
|||
|
|
|||
|
$planTrees = Yii::$app->getPortfolioService->loadPlanTree(
|
|||
|
$recordbook->PropertyRecordBook[0]->Value->ReferenceId,
|
|||
|
'ФизическиеЛица',
|
|||
|
$recordbook->PropertyRecordBook
|
|||
|
);
|
|||
|
$treeArray = [];
|
|||
|
foreach ($planTrees as $planTree) {
|
|||
|
$treeArray[] = Yii::$app->treeParser->parseTree($planTree, $puid, $luid);
|
|||
|
}
|
|||
|
$portfolio = $portfolioLoader->loadLapResults($puid, $luid);
|
|||
|
if (isset($portfolio->return, $portfolio->return->LapResultStrings)) {
|
|||
|
$lapStrings = $portfolio->return->LapResultStrings;
|
|||
|
|
|||
|
if (!empty($lapStrings) && !is_array($lapStrings)) {
|
|||
|
$lapStrings = [$lapStrings];
|
|||
|
}
|
|||
|
foreach ($lapStrings as $port) {
|
|||
|
$files[$port->Result->ReferenceUID] = $portfolioLoader->loadAttachedFileList($port->Result->ReferenceUID, 'Справочник.Объекты');
|
|||
|
|
|||
|
if (isset($port->Mark)) {
|
|||
|
$marks[$port->Result->ReferenceUID] = $port->Mark->ReferenceName;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if (isset($port->Result)) {
|
|||
|
$comment = Yii::$app->getPortfolioService->loadCommentaries(['ObjectRef' => $port->Result]);
|
|||
|
if (isset($comment->return->CommentaryStrings)) {
|
|||
|
$_comments = $comment->return->CommentaryStrings;
|
|||
|
if (!is_array($_comments)) {
|
|||
|
$_comments = [$_comments];
|
|||
|
}
|
|||
|
foreach ($_comments as $_comment) {
|
|||
|
$comments[$port->Result->ReferenceUID][] = [
|
|||
|
'date' => $_comment->Period,
|
|||
|
'author' => $_comment->Author->ReferenceName,
|
|||
|
'text' => $_comment->Text,
|
|||
|
'uid' => $_comment->UIDCommentary
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
foreach ($students->return->StudentList ?? [] as $student) {
|
|||
|
$_students[$student->Student->ReferenceId] = $student->Student->ReferenceName;
|
|||
|
}
|
|||
|
}
|
|||
|
return $this->render(
|
|||
|
'@common/modules/student/components/evaluation/views/evaluation',
|
|||
|
[
|
|||
|
'studentId' => $studentId,
|
|||
|
'students' => $_students,
|
|||
|
|
|||
|
'treeArray' => $treeArray,
|
|||
|
|
|||
|
'portfolio' => $portfolio,
|
|||
|
|
|||
|
'files' => $files,
|
|||
|
'marks' => $marks,
|
|||
|
'comments' => $comments,
|
|||
|
|
|||
|
'luid' => $luid,
|
|||
|
'puid' => $puid,
|
|||
|
|
|||
|
'plan_id' => $plan_id,
|
|||
|
|
|||
|
'circullumId' => $plan_id,
|
|||
|
'circullum_data' => $curriculums_data,
|
|||
|
|
|||
|
'caf_id' => $caf_id,
|
|||
|
'caf_list' => $caf_list,
|
|||
|
|
|||
|
'error_RecordBook' => $error_RecordBook
|
|||
|
]
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
public function actionFile($uid = null, $idx = null)
|
|||
|
{
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
|
|||
|
$files = $portfolioLoader->loadAttachedFileList($uid, 'Справочник.Объекты');
|
|||
|
|
|||
|
if (is_array($files->return->AttachedFile)) {
|
|||
|
$info = $files->return->AttachedFile[$idx];
|
|||
|
} else {
|
|||
|
$info = $files->return->AttachedFile;
|
|||
|
}
|
|||
|
|
|||
|
if ($info->DiskStorage) {
|
|||
|
$fileName = $info->VolumePathWindows . $info->FilePathInVolume;
|
|||
|
|
|||
|
header('Content-Description: File Transfer');
|
|||
|
header('Content-Type: application/octet-stream');
|
|||
|
header('Content-Disposition: attachment; filename="' . basename($fileName) . '"');
|
|||
|
header('Expires: 0');
|
|||
|
header('Cache-Control: must-revalidate');
|
|||
|
header('Pragma: public');
|
|||
|
header('Content-Length: ' . filesize($fileName));
|
|||
|
readfile($fileName);
|
|||
|
exit;
|
|||
|
} else {
|
|||
|
$body = Yii::$app->getPortfolioService->loadBinaryData([
|
|||
|
'FileRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $info->Ref->ReferenceUID,
|
|||
|
'ReferenceClassName' => 'Справочник.Файлы',
|
|||
|
]
|
|||
|
]);
|
|||
|
|
|||
|
if (empty($body)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
header('Content-Description: File Transfer');
|
|||
|
header('Content-Type: application/octet-stream');
|
|||
|
$fileName = "{$body->return->Name}.{$body->return->Extension}";
|
|||
|
$fileName = iconv('UTF-8', 'CP1251', $fileName);
|
|||
|
header("Content-Disposition: attachment; filename=\"{$fileName}\"");
|
|||
|
header('Expires: 0');
|
|||
|
header('Cache-Control: must-revalidate');
|
|||
|
header('Pragma: public');
|
|||
|
header('Content-Length: ' . $body->return->Size);
|
|||
|
|
|||
|
echo base64_decode($body->return->Data);
|
|||
|
exit;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function actionMarkList()
|
|||
|
{
|
|||
|
$params = Yii::$app->request->post('depdrop_all_params');
|
|||
|
|
|||
|
if (empty($params)) {
|
|||
|
return json_encode(['output' => [], 'selected' => '']);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$marks = Yii::$app->getPortfolioService->loadAllowedMarks([
|
|||
|
'RatingSystemRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $params['mark-type'],
|
|||
|
'ReferenceClassName' => 'Справочник.СистемыОценивания'
|
|||
|
]
|
|||
|
]);
|
|||
|
|
|||
|
$marks = array_map(function ($o) {
|
|||
|
return ['id' => $o->ReferenceUID, 'name' => $o->ReferenceName];
|
|||
|
}, $marks->return->References);
|
|||
|
|
|||
|
return json_encode(['output' => $marks, 'selected' => '']);
|
|||
|
}
|
|||
|
|
|||
|
public function getLatinName($cyr_name)
|
|||
|
{
|
|||
|
$cyr = [
|
|||
|
'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
|
|||
|
'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',
|
|||
|
'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П',
|
|||
|
'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я'
|
|||
|
];
|
|||
|
|
|||
|
$lat = [
|
|||
|
'a', 'b', 'v', 'g', 'd', 'e', 'io', 'zh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
|
|||
|
'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'sht', 'a', 'i', 'y', 'e', 'yu', 'ya',
|
|||
|
'A', 'B', 'V', 'G', 'D', 'E', 'Io', 'Zh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P',
|
|||
|
'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh', 'Sht', 'A', 'I', 'Y', 'e', 'Yu', 'Ya'
|
|||
|
];
|
|||
|
|
|||
|
return str_replace($cyr, $lat, $cyr_name);
|
|||
|
}
|
|||
|
|
|||
|
public function actionDictionary($luid, $lcuid, $puid, $idx, $q, $type)
|
|||
|
{
|
|||
|
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
|
|||
|
$out = ['results' => ['id' => '', 'text' => '']];
|
|||
|
if (!is_null($q)) {
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
$props = $portfolioLoader->loadLapResultClassesProperties(
|
|||
|
$puid,
|
|||
|
$luid,
|
|||
|
$lcuid
|
|||
|
);
|
|||
|
$_props = $props->return->LapResultStrings;
|
|||
|
|
|||
|
if (isset($_props->LapResultProperties)) {
|
|||
|
$lapProps = $_props->LapResultProperties;
|
|||
|
} else {
|
|||
|
$lapProps = [];
|
|||
|
}
|
|||
|
if (!is_array($lapProps)) {
|
|||
|
$lapProps = [$lapProps];
|
|||
|
}
|
|||
|
$lapProp = $lapProps[$idx - 1];
|
|||
|
$filters = [];
|
|||
|
if (isset($lapProp->Filters)) {
|
|||
|
$filters = json_decode(json_encode($lapProp->Filters), true);
|
|||
|
}
|
|||
|
$_items = Yii::$app->getPortfolioService->loadReferences([
|
|||
|
'ReferenceClassName' => $type,
|
|||
|
'TextFilterType' => 'AnyPosition',
|
|||
|
'Text' => $q,
|
|||
|
'Filters' => $filters
|
|||
|
]);
|
|||
|
$items = [];
|
|||
|
if (isset($_items->return, $_items->return->References)) {
|
|||
|
if (!is_array($_items->return->References)) {
|
|||
|
$refs = [$_items->return->References];
|
|||
|
} else {
|
|||
|
$refs = $_items->return->References;
|
|||
|
}
|
|||
|
foreach ($refs as $ref) {
|
|||
|
$items[] = ['id' => $ref->ReferenceUID, 'text' => $ref->ReferenceName];
|
|||
|
}
|
|||
|
}
|
|||
|
$out['results'] = $items;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
public function actionDeleteFile($uid = null, $idx = null, $luid = null, $puid = null, $caf_id = null)
|
|||
|
{
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
|
|||
|
$files = $portfolioLoader->loadAttachedFileList($uid, 'Справочник.Объекты');
|
|||
|
|
|||
|
if (is_array($files->return->AttachedFile)) {
|
|||
|
$info = $files->return->AttachedFile[$idx];
|
|||
|
} else {
|
|||
|
$info = $files->return->AttachedFile;
|
|||
|
}
|
|||
|
|
|||
|
Yii::$app->getPortfolioService->deleteAttachedFile([
|
|||
|
'ResultRef' => [
|
|||
|
'ReferenceName' => '',
|
|||
|
'ReferenceId' => '',
|
|||
|
'ReferenceUID' => $uid,
|
|||
|
'ReferenceClassName' => 'Справочник.Объекты'
|
|||
|
],
|
|||
|
'FileRef' => json_decode(json_encode($info->Ref))
|
|||
|
]);
|
|||
|
|
|||
|
return redirect(['/student/portfolio', 'luid' => $luid, 'puid' => $puid, 'caf_id' => $caf_id]);
|
|||
|
}
|
|||
|
|
|||
|
public function actionDeletePortfolio($uid, $luid, $puid, $caf_id = null)
|
|||
|
{
|
|||
|
$portfolioLoader = Yii::$app->getModule('student')->portfolioLoader;
|
|||
|
$portfolio = $portfolioLoader->loadLapResults($puid, $luid);
|
|||
|
|
|||
|
$lapStrings = $portfolio->return->LapResultStrings;
|
|||
|
if (!is_array($lapStrings)) {
|
|||
|
$lapStrings = [$lapStrings];
|
|||
|
}
|
|||
|
|
|||
|
foreach ($lapStrings as $item) {
|
|||
|
if ($portfolio->return->LapResultStrings->Result->ReferenceUID != $uid) {
|
|||
|
continue;
|
|||
|
}
|
|||
|
unset($item->LapResultProperties);
|
|||
|
Yii::$app->getPortfolioService->deleteLapResult([
|
|||
|
'PlanUID' => $puid,
|
|||
|
'LapUID' => $luid,
|
|||
|
'LapResult' => json_decode(json_encode($item), true),
|
|||
|
]);
|
|||
|
}
|
|||
|
return redirect(['/student/portfolio', 'luid' => $luid, 'puid' => $puid, 'caf_id' => $caf_id]);
|
|||
|
}
|
|||
|
|
|||
|
public function actionStudents()
|
|||
|
{
|
|||
|
$params = Yii::$app->request->post('depdrop_all_params');
|
|||
|
if (empty($params)) {
|
|||
|
return json_encode(['output' => [], 'selected' => '']);
|
|||
|
}
|
|||
|
$plan_id = $params['plan_id'];
|
|||
|
if ($plan_id == 'Загрузка ...') {
|
|||
|
return json_encode(['output' => [], 'selected' => '']);
|
|||
|
}
|
|||
|
$caf_id = $params['caf_id'];
|
|||
|
if (empty($plan_id)) {
|
|||
|
return json_encode(['output' => [], 'selected' => '']);
|
|||
|
}
|
|||
|
$user_info = Yii::$app->getPortfolioService->loadReference([
|
|||
|
'Parameter' => Yii::$app->user->identity->guid,
|
|||
|
'ParameterType' => 'Код',
|
|||
|
'ParameterRef' => 'Справочник.ФизическиеЛица'
|
|||
|
]);
|
|||
|
$user = json_decode(json_encode($user_info->return->Reference), true);
|
|||
|
$states = Yii::$app->getPortfolioService->loadEmployerStates(['PersonRef' => $user]);
|
|||
|
$state = null;
|
|||
|
if (isset($states->return, $states->return->EmployerState)) {
|
|||
|
if (is_array($states->return->EmployerState)) {
|
|||
|
$state = $states->return->EmployerState[$caf_id];
|
|||
|
} else {
|
|||
|
$state = $states->return->EmployerState;
|
|||
|
}
|
|||
|
}
|
|||
|
$_curriculums = [];
|
|||
|
if (!empty($state)) {
|
|||
|
$curriculums = Yii::$app->getPortfolioService->loadEmployersCurriculums([
|
|||
|
'EmployerRef' => $user,
|
|||
|
'EmployerState' => json_decode(json_encode($state), true)
|
|||
|
]);
|
|||
|
$_curriculums = $curriculums->return->Curriculum;
|
|||
|
}
|
|||
|
|
|||
|
if (!is_array($_curriculums)) {
|
|||
|
$_curriculums = [$_curriculums];
|
|||
|
}
|
|||
|
$curriculums_data = [];
|
|||
|
$curriculumRef = null;
|
|||
|
foreach ($_curriculums as $curriculum) {
|
|||
|
if ($curriculum->CurriculumId == $plan_id) {
|
|||
|
$curriculumRef = json_decode(json_encode($curriculum->CurriculumRef), true);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
$students = Yii::$app->getPortfolioService->loadEmployersStudents([
|
|||
|
'EmployerRef' => $user,
|
|||
|
'EmployerState' => json_decode(json_encode($state), true),
|
|||
|
'CurriculumRef' => json_decode(json_encode($curriculumRef), true),
|
|||
|
'TextFilterType' => 'AnyPosition',
|
|||
|
'Text' => ''
|
|||
|
]);
|
|||
|
$_students = [];
|
|||
|
if (isset($students->return->StudentList) && !EmptyCheck::isEmpty($students->return->StudentList)) {
|
|||
|
foreach (is_array($students->return->StudentList) ? $students->return->StudentList : [$students->return->StudentList] as $student) {
|
|||
|
$_students[] = ['name' => $student->Student->ReferenceName, 'id' => $student->Student->ReferenceId];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return json_encode(['output' => array_unique($_students, SORT_REGULAR), 'selected' => '']);
|
|||
|
}
|
|||
|
|
|||
|
public function actionAp()
|
|||
|
{
|
|||
|
$params = Yii::$app->request->post('depdrop_all_params');
|
|||
|
|
|||
|
if (empty($params)) {
|
|||
|
return json_encode(['output' => [], 'selected' => '']);
|
|||
|
}
|
|||
|
|
|||
|
$user_info = Yii::$app->getPortfolioService->loadReference([
|
|||
|
'Parameter' => Yii::$app->user->identity->guid,
|
|||
|
'ParameterType' => 'Код',
|
|||
|
'ParameterRef' => 'Справочник.ФизическиеЛица'
|
|||
|
]);
|
|||
|
|
|||
|
$user = json_decode(json_encode($user_info->return->Reference), true);
|
|||
|
$states = Yii::$app->getPortfolioService->loadEmployerStates(['PersonRef' => $user]);
|
|||
|
$_states = [];
|
|||
|
if (isset($states)) {
|
|||
|
$_states = $states->return->EmployerState;
|
|||
|
}
|
|||
|
if (!is_array($_states)) {
|
|||
|
$_states = [$_states];
|
|||
|
}
|
|||
|
$caf_id = $params['caf_id'];
|
|||
|
$_curriculums = [];
|
|||
|
if (isset($_states[$caf_id])) {
|
|||
|
$curriculums = Yii::$app->getPortfolioService->loadEmployersCurriculums([
|
|||
|
'EmployerRef' => $user,
|
|||
|
'EmployerState' => json_decode(json_encode($_states[$caf_id]), true)
|
|||
|
]);
|
|||
|
|
|||
|
if (isset($curriculums->return, $curriculums->return->Curriculum)) {
|
|||
|
$_curriculums = $curriculums->return->Curriculum;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (!is_array($_curriculums)) {
|
|||
|
$_curriculums = [$_curriculums];
|
|||
|
}
|
|||
|
|
|||
|
$curriculums = [];
|
|||
|
foreach ($_curriculums as $curriculum) {
|
|||
|
$curriculums[] = ['id' => $curriculum->CurriculumId, 'name' => $curriculum->CurriculumName];
|
|||
|
}
|
|||
|
return json_encode(['output' => $curriculums, 'selected' => '']);
|
|||
|
}
|
|||
|
}
|