Пример #1
0
 protected function getIdFaculty($id, $parent = false)
 {
     if ($parent) {
         $model = Discipline::findOne($id);
         return $model->idProgram->id_faculty;
     } else {
         $model = DisciplineSemester::findOne($id);
         return $model->idDiscipline->idProgram->id_faculty;
     }
 }
Пример #2
0
 /**
  * Дополнительная модель discipline_name
  * к существующей модели discipline
  * @return mixed
  */
 public function actionCreateAdditive($idParent)
 {
     /* @var $disciplines array */
     /* @var $disciplineName DisciplineName */
     $disciplines = Discipline::find()->where(['block' => Discipline::DISCIPLINE_CHOICE, 'id_program' => $idParent])->select(['id', "concat([[code_first]],'.',[[code_last]]) as code"])->orderBy('cast([[code_last]] as unsigned)')->asArray()->all();
     $disciplines = ArrayHelper::map($disciplines, 'id', 'code');
     $disciplineName = new DisciplineName();
     $disciplineName->id_program_main = $idParent;
     if ($disciplineName->load(Yii::$app->request->post()) && $disciplineName->save()) {
         return 'Item is succesfully created.';
         // alert message
     } else {
         return $this->renderAjax('updateAdditive', ['disciplines' => $disciplines, 'disciplineName' => $disciplineName]);
     }
 }
Пример #3
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Discipline::find();
     // add conditions that should always apply here
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     // grid filtering conditions
     $query->andFilterWhere(['id' => $this->id]);
     $query->andFilterWhere(['like', 'name', $this->name]);
     return $dataProvider;
 }
Пример #4
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($id_program, $params)
 {
     $query = DisciplineName::find()->where(['id_program_main' => $id_program]);
     $subQueryDiscipline = Discipline::find()->select('*,
                       cast([[code_last]] as decimal(10,3)) as [[code_last_num]]');
     $subQuerySemester = DisciplineSemester::find()->select('id_discipline, MIN(semester) as min_semester')->groupBy('id_discipline');
     $query->innerJoin(['discMain' => $subQueryDiscipline], 'discMain.id = discipline_name.id_discipline')->leftJoin(['discSemester' => $subQuerySemester], 'discSemester.id_discipline = discipline_name.id_discipline');
     $provider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 10, 'pageSizeParam' => false]]);
     $provider->setSort(['attributes' => ['name', 'disciplineCode' => ['asc' => ['discMain.code_first' => SORT_ASC, 'discMain.code_last_num' => SORT_ASC, 'suffix' => SORT_ASC], 'desc' => ['discMain.code_first' => SORT_DESC, 'discMain.code_last_num' => SORT_DESC, 'suffix' => SORT_DESC], 'label' => 'DisciplineCode'], 'kind', 'block', 'disciplineSemesters' => ['asc' => ['discSemester.min_semester' => SORT_ASC], 'desc' => ['discSemester.min_semester' => SORT_DESC], 'label' => 'DisciplineSemester']], 'defaultOrder' => ['disciplineCode' => SORT_ASC]]);
     if (!($this->load($params) && $this->validate())) {
         return $provider;
     }
     $query->andWhere('name LIKE "%' . $this->name . '%" ');
     $query->andWhere('discMain.code_first LIKE "%' . $this->disciplineCode . '%" ');
     if (is_numeric($this->kind)) {
         $query->andWhere('discMain.kind = ' . $this->kind);
     }
     if (is_numeric($this->block)) {
         $query->andWhere('discMain.block = ' . $this->block);
     }
     return $provider;
 }
Пример #5
0
 /**
  * @get discipline
  */
 public function getDiscipline()
 {
     return $this->hasOne(Discipline::className(), ['id' => 'discipline_id']);
 }
Пример #6
0
 public function getDisciplineList()
 {
     $discipline = Discipline::find()->select('discipline.*')->leftJoin('group_has_discipline', 'group_has_discipline.discipline_id = discipline.id')->leftJoin('teacher_has_discipline', '`teacher_has_discipline`.`ghd_id` = `group_has_discipline`.`id`')->where(['teacher_has_discipline.teacher_id' => Yii::$app->user->identity->teacher->id])->all();
     return $discipline;
 }
Пример #7
0
$this->title = 'Дисциплины';
$this->params['breadcrumbs'][] = ['label' => 'Образовательные программы', 'url' => ['/program', 'idParent' => $program->id_faculty]];
$this->params['breadcrumbs'][] = $this->title;
?>
<h2>Дисциплины</h2>
<h3>
    Образовательная программа: <?php 
echo "{$program->fullName}";
?>
</h3>

<p>
    <?php 
echo Html::a('Новая дисциплина', ['create', 'idParent' => $idParent], ['class' => 'btn btn-success actionCreate']);
?>
    <?php 
if (Discipline::find()->where(['block' => Discipline::DISCIPLINE_CHOICE])->exists()) {
    echo Html::a('Дополнительная дисциплина по выбору', ['create-additive', 'idParent' => $idParent], ['class' => 'btn btn-success actionCreate']);
}
?>
</p>

<?php 
Pjax::begin(['options' => ['id' => 'pjaxWrap']]);
echo GridView::widget(['dataProvider' => $provider, 'columns' => ['disciplineCode', 'name', ['attribute' => 'disciplineSemesters', 'format' => 'raw', 'value' => function ($model, $key, $index, $column) {
    return Html::a($model->disciplineSemesters ? $model->disciplineSemesters : 'Не заполнено', ['semester/index', 'idParent' => $model->id_discipline], ['data-pjax' => '0']);
}], ['class' => 'yii\\grid\\ActionColumn', 'template' => '{update}{delete}{file}', 'buttons' => ['update' => 'actionUpdate', 'delete' => 'actionDelete', 'file' => 'actionFile']]]]);
?>

<?php 
Pjax::end();
Пример #8
0
<?php

use yii\grid\GridView;
use yii\helpers\Html;
use yii\widgets\Pjax;
use common\models\Program;
use common\models\Discipline;
/* @var $this yii\web\View */
/* @var $provider yii\data\ActiveDataProvider */
/* @var $program Program */
/* @var $discipline Discipline */
/* @var $idParent integer */
require Yii::$app->basePath . '/views/grid/index.php';
$discipline = Discipline::findOne($idParent);
$program = Program::findOne($discipline->id_program);
$this->title = 'Семестры';
$this->params['breadcrumbs'][] = ['label' => 'Образовательные программы', 'url' => ['/program', 'idParent' => $program->id_faculty]];
$this->params['breadcrumbs'][] = ['label' => 'Дисциплины', 'url' => ['/discipline', 'idParent' => $discipline->id_program, 'page' => Yii::$app->session->get('disciplinePage')]];
$this->params['breadcrumbs'][] = $this->title;
?>
<h2>Семестры</h2>
<h3>
    Дисциплина: <?php 
echo $discipline->fullName;
?>
</h3>

<p>
    <?php 
echo Html::a('Новый семестр', ['create', 'idParent' => $idParent], ['class' => 'btn btn-success actionCreate']);
?>
Пример #9
0
 /**
  * Finds the Discipline model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $id
  * @return Discipline the loaded model
  * @throws NotFoundHttpException if the model cannot be found
  */
 protected function findModel($id)
 {
     if (($model = Discipline::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException('The requested page does not exist.');
     }
 }
Пример #10
0
 public function getDisciplineList()
 {
     return Discipline::find()->select('discipline.*')->joinWith('groupHasDisciplines')->where(['group_has_discipline.group_id' => $this->id])->all();
 }
Пример #11
0
    }
}
?>

<div class="group-has-discipline-form">
    
    <?php 
$form = ActiveForm::begin(['id' => 'project-form', 'enableAjaxValidation' => true]);
?>
    
    <?php 
echo $form->field($model, 'teacherHasDiscipline')->widget(MultipleInput::className(), ['min' => 1, 'columns' => [['name' => 'teacher_id', 'type' => 'dropDownList', 'defaultValue' => 1, 'items' => ArrayHelper::map(\common\models\Teacher::find()->all(), 'id', 'user.fullname')]]]);
?>

    <?php 
echo $form->field($model, 'discipline_id')->dropDownList(ArrayHelper::map(Discipline::find()->all(), 'id', 'name'));
?>

    <?php 
echo $model->isNewRecord ? $form->field($model, 'group_id')->dropDownList(ArrayHelper::map(Group::find()->all(), 'id', 'name'), ['prompt' => '-Группа-', 'onchange' => '
                $.post( "' . Yii::$app->urlManager->createUrl('group-has-discipline/semlist?id=') . '"+$(this).val(), function( data ) {
                  $( "select#grouphasdiscipline-semester_id" ).html( data );
                });
            ', 'class' => 'form-control']) : "";
?>

    <?php 
echo $model->isNewRecord ? $form->field($model, 'semester_number')->widget(DepDrop::classname(), ['options' => ['id' => 'semester_number'], 'pluginOptions' => ['depends' => ['grouphasdiscipline-group_id'], 'placeholder' => 'Выберите группу...', 'url' => Url::to(['/group-has-discipline/semesters'])]]) : $form->field($model, 'semester_number')->dropDownList($semesterList);
?>

    <div class="form-group">
Пример #12
0
 /**
  * @inheritdoc
  * Удаляем связанную дисциплину, если не осталось для нее записи с именем
  */
 public function afterDelete()
 {
     if (!static::find()->where(['id_discipline' => $this->id_discipline_cached])->exists()) {
         Discipline::findOne($this->id_discipline_cached)->delete();
     }
 }
Пример #13
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getDisciplines()
 {
     return $this->hasMany(Discipline::className(), ['id_program' => 'id']);
 }
Пример #14
0
echo $student->studentName;
?>
 Курс: <?php 
echo $student->course;
?>
</h3>

<?php 
Pjax::begin(['options' => ['id' => 'pjaxWrap']]);
?>



<?php 
echo GridView::widget(['dataProvider' => $provider, 'columns' => [['attribute' => 'code', 'format' => 'text', 'header' => 'Дисциплина', 'value' => function ($model, $key, $index, $column) {
    $discipline = Discipline::findOne($model['id_discipline']);
    return $discipline->fullName;
}], ['attribute' => 'semester', 'header' => 'Семестр'], ['attribute' => 'assesment', 'header' => 'Оценка'], ['attribute' => 'rating', 'header' => 'Рейтинг'], ['class' => 'yii\\grid\\ActionColumn', 'template' => '{update}{delete}{file}', 'buttons' => ['update' => 'actionUpdate', 'delete' => 'actionDelete', 'file' => 'actionFile']]]]);
?>

<?php 
Pjax::end();
?>

    <!-- functions for grid buttons actions -->
<?php 
function actionUpdate($url, $model, $key)
{
    $url = Url::to(['update', 'id_student' => $model['id_student'], 'id_semester' => $model['id_semester'], 'id_result' => $model['id_result']]);
    return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, ['class' => 'actionUpdate', 'data-pjax' => '0', 'data-toggle' => 'tooltip', 'title' => 'Редактировать']);
}
Пример #15
0
?>

    <h2>Результаты</h2>
    <h3>
        Студент: <?php 
echo $student->studentName;
?>
 Курс: <?php 
echo $student->course;
?>
    </h3>


<?php 
echo GridView::widget(['dataProvider' => $provider, 'columns' => [['attribute' => 'code', 'format' => 'raw', 'header' => 'Дисциплина', 'value' => function ($model, $key, $index, $column) {
    $disciplineName = Discipline::findOne($model['id_discipline'])->fullName;
    if ($model['id_result']) {
        return Html::a($disciplineName, ['result/view-student', 'id' => $model['id_result']]);
    } else {
        return $disciplineName;
    }
}], ['attribute' => 'semester', 'header' => 'Семестр'], ['attribute' => 'assesment', 'header' => 'Оценка'], ['attribute' => 'rating', 'header' => 'Рейтинг', 'value' => function ($model, $key, $index, $column) {
    if ($model['id_result']) {
        $rating = $model['rating'] ?: '';
        $max_rating = $model['max_rating'] ?: '';
        if ($rating || $max_rating) {
            return "{$rating} / {$max_rating}";
        } else {
            return '';
        }
    }