namespace app\controllers;
+use http\Exception;
use Yii;
use yii\base\DynamicModel;
use yii\db\Expression;
[['store_id', 'date_start', 'date_end', 'group_id', 'admin_id', 'autoclosed', 'sort'], 'safe']
]);
$model->load(Yii::$app->request->get());
+ if ($model->date_start && $model->date_end && $model->date_end < $model->date_start) {
+ Yii::$app->session->setFlash('info', "Дата окончания не может быть раньше даты начала");
+ }
$timetableFactModelQuery = TimetableFactModel::find();
if ($model->store_id && $model->store_id > 0) {
$timetableFactModelQuery->andWhere(['store_id' => $model->store_id]);
}
if ($model->date_start) {
- $timetableFactModelQuery->andWhere(['>=', new Expression('CONCAT(date_end, \' \', time_end)'), $model->date_start]);
+ $timetableFactModelQuery->andWhere(['>=', 'date_shift', date('Y-m-d 00:00:00', strtotime($model->date_start))]);
}
if ($model->date_end) {
- $timetableFactModelQuery->andWhere(['<=', new Expression('CONCAT(date_start, \' \', time_start)'), $model->date_end]);
+ $timetableFactModelQuery->andWhere(['<=', 'date_shift', date('Y-m-d 23:59:59', strtotime($model->date_end))]);
}
if ($model->group_id && $model->group_id > 0) {
$timetableFactModelQuery->andWhere(['d_id' => $model->group_id]);
<h1><?= Html::encode($this->title) ?></h1>
+ <?php if (Yii::$app->session->hasFlash('info')): ?>
+ <div class="alert alert-warning alert-dismissable">
+ <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
+ <?= Yii::$app->session->getFlash('info') ?>
+ </div>
+ <?php endif; ?>
+
<?php $form = ActiveForm::begin(['method' => 'GET']) ?>
<div class="row">
- <div class="col-11 d-flex align-items-center justify-content-around">
- <div class="mb-3">Магазин:</div> <div style="display:inline-block"><?= $form->field($model, 'store_id')->widget(Select2::class, [
+ <div class="col-11 d-flex align-items-center justify-content-around gap-2">
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3">Магазин:</div>
+ <div style="display:inline-block"><?= $form->field($model, 'store_id')->widget(Select2::class, [
'data' => $stores,
'language' => 'ru',
'options' => ['placeholder' => 'Магазин...'],
'allowClear' => true
],
])->label(false) ?></div>
- <div class="mb-3">Дата до:</div> <div style="display:inline-block"><?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
+ </div>
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3">Дата смены от:</div>
+ <div style="display:inline-block; max-width: 120px;"><?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
'language' => 'ru',
'template' => '{input}',
'clientOptions' => [
'autoclose' => true,
- 'format' => 'Y-m-d H:i:s',
+ 'format' => 'Y-m-d',
'todayBtn' => true
],
])->label(false) ?></div>
- <div class="mb-3">после:</div> <div style="display:inline-block"><?= $form->field($model, 'date_end')->widget(DateTimePicker::class, [
+ </div>
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3">до:</div>
+ <div style="display:inline-block; max-width: 120px;"><?= $form->field($model, 'date_end')->widget(DateTimePicker::class, [
'language' => 'ru',
'template' => '{input}',
'clientOptions' => [
'autoclose' => true,
- 'format' => 'Y-m-d H:i:s',
+ 'format' => 'Y-m-d',
'todayBtn' => true
],
])->label(false) ?></div>
- <div class="mb-3">Группа:</div> <div style="display:inline-block"><?= $form->field($model, 'group_id')->widget(Select2::class, [
+ </div>
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3">Группа:</div>
+ <div style="display:inline-block"><?= $form->field($model, 'group_id')->widget(Select2::class, [
'data' => $adminGroups,
'language' => 'ru',
'options' => ['placeholder' => 'Должность...'],
'allowClear' => true
],
])->label(false) ?></div>
- <div class="mb-3">Сотрудник:</div> <div style="display:inline-block"><?= $form->field($model, 'admin_id')->widget(Select2::class, [
- 'data' => $admins,
- 'language' => 'ru',
- 'options' => ['placeholder' => 'Сотрудник...'],
- 'pluginOptions' => [
- 'allowClear' => true
- ],
- ])->label(false) ?></div>
- <div class="mb-3" title="Автоматическое закрытие">Авт. закр.:</div> <div style="display:inline-block"><?= $form->field($model, 'autoclosed')->checkbox([0 => 'unchecked', 1 => 'checked'], [])->label(false) ?></div>
- <div class="mb-4"><?= Html::submitButton('Применить', ['class' => 'btn btn-secondary btn-sm'])?></div>
+ </div>
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3">Сотрудник:</div>
+ <div style="display:inline-block"><?= $form->field($model, 'admin_id')->widget(Select2::class, [
+ 'data' => $admins,
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Сотрудник...'],
+ 'pluginOptions' => [
+ 'allowClear' => true
+ ],
+ ])->label(false) ?></div>
+ </div>
+ <div class="d-flex align-items-center justify-content-center gap-2">
+ <div class="mb-3" title="Автоматическое закрытие">Авт. закр.:</div>
+ <div style="display:inline-block"><?= $form->field($model, 'autoclosed')->checkbox([0 => 'unchecked', 1 => 'checked'], [])->label(false) ?></div>
+ </div>
+ <div class="mb-4"><?= Html::submitButton('Применить', ['class' => 'btn btn-secondary btn-sm'])?></div>
+ <div class="mb-4"><?= Html::a('Сбросить фильтр', '/timetable-fact/index', ['class' => 'btn btn-link btn-sm'])?></div>
</div>
</div>