portal.mkgtu.ru/common/modules/student/components/academicPlan/controllers/AcademicplanController.php

159 lines
5.1 KiB
PHP
Raw Normal View History

2024-03-28 09:51:45 +03:00
<?php
namespace common\modules\student\components\academicPlan\controllers;
use Yii;
use yii\filters\AccessControl;
class AcademicplanController extends \yii\web\Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'rules' => [
[
'actions' => ['index', 'plans', 'semesters'],
'allow' => true,
'roles' => ['student', 'teacher']
],
]
],
'corsFilter' => [
'class' => \yii\filters\Cors::class,
],
];
}
public $plan_id;
public $semester_id;
public $plans;
public $semesters;
public $disciplines;
public function academicPlan($plan_id, $semester_id)
{
$plan = null;
$firstRound = true;
$this->plan_id = $plan_id;
$this->semester_id = $semester_id;
$this->disciplines = [];
while ($firstRound || $plan == '401') {
$academicPlanLoader = Yii::$app->getModule('student')->academicPlanLoader;
$academicPlanLoader->setParams('');
$this->plans = $academicPlanLoader->loadPlans();
if ($this->plan_id == null && sizeof($this->plans) > 0) {
$this->plan_id = $this->plans[0]->id;
}
$this->semesters = $academicPlanLoader->loadSemesters($this->plan_id);
if (isset($semester_id)) {
$this->disciplines = $academicPlanLoader->loadDisciplines($this->plan_id, $this->semester_id);
}
if ($firstRound) {
$firstRound = false;
}
}
}
public function actionIndex()
{
$plan_id = null;
$semester_id = null;
if (Yii::$app->request->isPost) {
$plan_id = Yii::$app->request->post('plan_plan');
$semester_id = Yii::$app->request->post('plan_semester');
$_GET['sort'] = Yii::$app->request->post('sort');
}
$this->academicPlan($plan_id, $semester_id);
return $this->render(
'@common/modules/student/components/academicPlan/views/academicPlan',
[
'plans' => $this->plans,
'plan_id' => $this->plan_id,
'semesters' => $this->semesters,
'semester_id' => $this->semester_id,
'disciplines' => $this->disciplines,
]
);
}
public function actionPlans()
{
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null && $parents[0] != '') {
$parent_id = (string)$parents[0];
$loader = Yii::$app->getModule('student')->academicPlanLoader;
$user_spec_ids = $loader->getUserSpecIds(Yii::$app->user->identity->guid);
$loader->setParams('');
if (in_array($parent_id, $user_spec_ids)) {
$loader->setParams(Yii::$app->user->identity->guid);
}
$plans = $loader->loadPlans($parent_id);
$plans_array = null;
if (is_array($plans)) {
$plans_array = array_map(function ($o) {
return ["id" => $o->id, "name" => $o->name];
}, $plans);
}
$output = [];
if (sizeof($plans_array > 0)) {
foreach ($plans_array as $pa) {
if (strpos($pa['name'], $parent_id)) {
array_push($output, $pa);
}
}
}
$selected = '';
if (sizeof($output) > 0) {
$selected = $output[0]['id'];
}
return json_encode(['output' => $output, 'selected' => $selected]);
} else {
return json_encode(['output' => '', 'selected' => '']);
}
} else {
return json_encode(['output' => '', 'selected' => '']);
}
}
public function actionSemesters()
{
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null && $parents[0] != '') {
$parent_id = (string)$parents[0];
$loader = Yii::$app->getModule('student')->academicPlanLoader;
$loader->setParams('');
$semesters = $loader->loadSemesters($parent_id);
$semesters_array = null;
if (is_array($semesters)) {
$semesters_array = array_map(function ($o) {
return ["id" => $o->id, "name" => $o->name];
}, $semesters);
}
return json_encode(['output' => $semesters_array, 'selected' => '']);
} else {
return json_encode(['output' => '', 'selected' => '']);
}
} else {
return json_encode(['output' => '', 'selected' => '']);
}
}
}