public static function createSemestersForGroup($group, $count, $beginYear) { $year = $beginYear; $date = new DateTime(); $date->setDate($year, 1, 1); for ($i = 1; $i <= $count; $i++) { $GS = new GroupSemesters(); if ($i % 2) { $date->setDate($date->format("Y"), 9, 1); $beginDate = $date->format('U'); $date->setDate($date->format("Y") + 1, 2, 1); $endDate = $date->format('U'); } else { $date->setDate($date->format("Y"), 2, 10); $beginDate = $date->format('U'); $date->setDate($date->format("Y"), 7, 1); $endDate = $date->format('U'); } $GS->begin_date = $beginDate; $GS->end_date = $endDate; $GS->group_id = $group; $GS->semester_number = $i; if (!GroupSemesters::find()->where(['group_id' => $group, 'semester_number' => $i])->count()) { $GS->save(); } } }
public function getSemester() { return $this->hasOne(GroupSemesters::className(), ['semester_number' => 'semester_number']); }
} echo Html::beginTag('div', ['class' => 'list-group']); foreach ($menuItems as $item) { echo Html::a($item['label'], $item['url'], ['class' => 'list-group-item']); } echo Html::endTag('div'); Pjax::end(); $this->endBlock('teachers'); //Архив $this->beginBlock('archive'); $menuItems = []; $formatter = Yii::$app->formatter; $groups = Group::find()->all(); echo Html::beginTag('div', ['class' => 'list-group']); foreach ($groups as $gr) { $count = \common\models\GroupSemesters::find()->where(['group_id' => $gr->id])->andWhere(['<=', 'end_date', date('U')])->count(); if (!$count) { break; } echo Html::beginTag('div', ['class' => 'list-group-item']); echo "<span class='list-group-item'><i class='glyphicon glyphicon-chevron-right'></i>{$gr->name}</span>"; echo "<div class='list-group' style='display: none;'>"; foreach ($gr->semesters as $semester) { if ($semester->end_date > date('U')) { break; } $link = Url::toRoute(['lesson/archive', 'group' => $gr->id, 'semester' => $semester->semester_number]); echo "<a href='{$link}' class='list-group-item'>Семестр: {$semester->semester_number} " . "<span class='badge'>{$formatter->asDate($semester->begin_date)} — {$formatter->asDate($semester->end_date)}</span></a>"; } echo "</div>"; echo Html::endTag('div');
public function getSemesters() { return $this->hasMany(GroupSemesters::className(), ['group_id' => 'id']); }
use yii\widgets\ActiveForm; use common\models\Discipline; use common\models\Group; use yii\helpers\ArrayHelper; use common\models\GroupSemesters; use common\components\DateHelper; use unclead\widgets\MultipleInput; use kartik\depdrop\DepDrop; use yii\helpers\Url; /* @var $this yii\web\View */ /* @var $model common\models\GroupHasDiscipline */ /* @var $form yii\widgets\ActiveForm */ $semesterList = $model->group_id ? ArrayHelper::map(GroupSemesters::find()->where(['group_id' => $model->group_id])->all(), 'id', 'semester_number') : []; if ($semesterList != []) { foreach ($semesterList as $key => $ar) { $semesterList[$key] = $ar . " - (" . Yii::$app->formatter->asDate(GroupSemesters::findOne($key)->begin_date) . ':' . Yii::$app->formatter->asDate(GroupSemesters::findOne($key)->end_date) . ')'; } } ?> <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
public static function getLessonsList($arr) { $group = isset($arr['group']) ? $arr['group'] : null; $teacher = isset($arr['teacher']) ? $arr['teacher'] : null; if ($group !== null) { if (!isset($arr['semester'])) { $semester = Group::findOne($group)->currentSemester; } else { $semester = GroupSemesters::find()->where(['group_id' => $arr['group'], 'semester_number' => $arr['semester']])->one(); } if (!$semester) { return false; } $lessons = Lesson::find()->joinWith('groupHasDiscipline', true, "INNER JOIN")->where(['group_has_discipline.group_id' => $group])->andWhere(['group_has_discipline.semester_number' => $semester->semester_number])->orderBy('week ASC, day ASC, time ASC')->all(); return $lessons; } elseif ($teacher !== null) { $lessons = Lesson::find()->select('lesson.*')->innerJoin("teacher_has_discipline thd", "`thd`.`id` = `lesson`.`thd_id`")->innerJoin("group_has_discipline ghd", '`ghd`.`id` = `lesson`.`ghd_id`')->innerJoin("group g", '`g`.`id` = `ghd`.`group_id`')->innerJoin("group_semesters gs", '`gs`.`group_id` = `g`.`id` AND `ghd`.`semester_number` = `gs`.`semester_number`')->where(['<=', 'gs.begin_date', date('U')])->andWhere(['>=', 'gs.end_date', date('U')])->andWhere(['thd.teacher_id' => $teacher])->orderBy('week ASC, day ASC, time ASC, id ASC')->all(); return $lessons; } }
public function actionSemesters() { $out = []; if (isset($_POST['depdrop_parents'])) { $parents = $_POST['depdrop_parents']; if ($parents != null) { $cat_id = $parents[0]; $semesters = \common\models\GroupSemesters::find()->where(['group_id' => $cat_id])->all(); foreach ($semesters as $sem) { $out[] = ['id' => $sem->semester_number, 'name' => $sem->semester_number . " - (" . Yii::$app->formatter->asDate($sem->begin_date) . ":" . Yii::$app->formatter->asDate($sem->end_date) . ")"]; } // the getSubCatList function will query the database based on the // cat_id and return an array like below: // [ // ['id'=>'<sub-cat-id-1>', 'name'=>'<sub-cat-name1>'], // ['id'=>'<sub-cat_id_2>', 'name'=>'<sub-cat-name2>'] // ] echo Json::encode(['output' => $out, 'selected' => '']); return; } } echo Json::encode(['output' => '', 'selected' => '']); }
use yii\widgets\ListView; use common\models\Lesson; use common\models\GroupHasDiscipline; use yii\helpers\Url; use yii\web\NotFoundHttpException; use yii\bootstrap\Tabs; use yii\helpers\ArrayHelper; use common\widgets\Schedule; use common\models\Group; use common\models\GroupSemesters; use yii\bootstrap\Modal; /* @var $this yii\web\View */ /* @var $dataProvider yii\data\ActiveDataProvider */ $formatter = Yii::$app->formatter; $groupModel = \common\models\Group::find()->where(['id' => $group])->one(); $semesterModel = GroupSemesters::find()->where(['group_id' => $group, 'semester_number' => $semester])->one(); //$ghd = GroupHasDiscipline::find()->where(['group_id' => $group])->andWhere(['<=','start_date',$todayDate])->andWhere(['>=','end_Date',$todayDate])->all(); //if(!$ghd) { throw new NotFoundHttpException('Страница не найдена.');} $this->title = 'Архив. Расписание группы ' . $groupModel->name . ' ' . $semesterModel->semester_number . ' семестр.'; $this->params['breadcrumbs'][] = ['label' => 'Информация', 'url' => Url::to(['site/information'])]; $this->params['breadcrumbs'][] = ['label' => 'Расписание', 'url' => Url::to(['lesson/index'])]; $this->params['breadcrumbs'][] = $this->title; ?> <div class="lesson-index"> <h3><?php echo "Архив расписания группы: " . Html::a($groupModel->name, ['//group/view', 'id' => $groupModel->id]); ?> <?php echo Html::encode($formatter->asDate($semesterModel->begin_date) . "-" . $formatter->asDate($semesterModel->end_date)); ?>
/** * Updates an existing Group model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $modelGS = GroupSemesters::find()->where(['group_id' => $id])->all(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['manage']); } else { return $this->renderAjax('update', ['model' => $model, 'modelGS' => $modelGS]); } }