namespace app\controllers;
use Yii;
+use yii\base\DynamicModel;
+use yii\db\Expression;
+use yii\helpers\ArrayHelper;
+use yii_app\records\AdminGroup;
+use yii_app\records\CityStore;
use yii_app\records\TimetableFactModel;
use yii\data\ActiveDataProvider;
use yii\db\Query;
*/
public function actionIndex()
{
+ $model = DynamicModel::validateData([
+ 'store_id' => null, 'date_start' => null, 'date_end' => null, 'group_id' => null, 'autoclosed' => false
+ ], [
+ [['store_id', 'date_start', 'date_end', 'group_id', 'autoclosed'], 'safe']
+ ]);
+ $model->load(Yii::$app->request->get());
+ $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]);
+ }
+ if ($model->date_end) {
+ $timetableFactModelQuery->andWhere(['<=', new Expression('CONCAT(date_start, \' \', time_start)'), $model->date_end]);
+ }
+ if ($model->group_id && $model->group_id > 0) {
+ $timetableFactModelQuery->andWhere(['d_id' => $model->group_id]);
+ }
+ if ($model->autoclosed) {
+ $timetableFactModelQuery->andWhere(['autoclosed' => '1']);
+ }
+
+ $stores = ArrayHelper::map(CityStore::find()->all(), 'id', 'name');
+ $stores = [0 => 'Любой', ...$stores];
+
+ $adminGroup = ArrayHelper::map(AdminGroup::find()->where(['id' => AdminGroup::getGroupsForEmployeeOnCashbox()])->all(), 'id', 'name');
+ $adminGroup = [0 => 'Любая', ...$adminGroup];
+
$dataProvider = new ActiveDataProvider([
- 'query' => TimetableFactModel::find(),
+ 'query' => $timetableFactModelQuery,
/*
'pagination' => [
'pageSize' => 50
return $this->render('index', [
'dataProvider' => $dataProvider,
+ 'model' => $model,
+ 'stores' => $stores,
+ 'adminGroup' => $adminGroup,
]);
}
<?php
-use yii_app\records\TimetableFactModel;
+use dosamigos\datetimepicker\DateTimePicker;
+use kartik\select2\Select2;
+use yii\widgets\ActiveForm;
use yii\helpers\Html;
-use yii\helpers\Url;
use yii\grid\ActionColumn;
use yii\grid\GridView;
-use yii_app\services\FileService;
/** @var yii\web\View $this */
/** @var yii\data\ActiveDataProvider $dataProvider */
+/** @var \yii\base\DynamicModel $model */
+/** @var array $stores */
+/** @var array $adminGroup */
$this->title = Yii::t('app', 'Фактический табель сотрудников (Новый!)');
$this->params['breadcrumbs'][] = $this->title;
?>
-<div class="timetable-fact-model-index">
+<div class="timetable-fact-model-index m-5">
<h1><?= Html::encode($this->title) ?></h1>
+ <?php $form = ActiveForm::begin(['method' => 'GET']) ?>
+
+ <div class="row">
+ <div class="col-12">
+ Магазин: <div style="display:inline-block"><?= $form->field($model, 'store_id')->widget(Select2::class, [
+ 'data' => $stores,
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Магазин...'],
+ 'pluginOptions' => [
+ 'allowClear' => true
+ ],
+ ])->label(false) ?></div>
+ Дата до: <div style="display:inline-block"><?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
+ 'language' => 'ru',
+ 'template' => '{input}',
+ 'clientOptions' => [
+ 'autoclose' => true,
+ 'format' => 'Y-m-d H:i:s',
+ 'todayBtn' => true
+ ],
+ ])->label(false) ?></div>
+ после: <div style="display:inline-block"><?= $form->field($model, 'date_end')->widget(DateTimePicker::class, [
+ 'language' => 'ru',
+ 'template' => '{input}',
+ 'clientOptions' => [
+ 'autoclose' => true,
+ 'format' => 'Y-m-d H:i:s',
+ 'todayBtn' => true
+ ],
+ ])->label(false) ?></div>
+ Группа: <div style="display:inline-block"><?= $form->field($model, 'group_id')->widget(Select2::class, [
+ 'data' => $adminGroup,
+ 'language' => 'ru',
+ 'options' => ['placeholder' => 'Должность...'],
+ 'pluginOptions' => [
+ 'allowClear' => true
+ ],
+ ])->label(false) ?></div>
+ Автоматическое закрытие: <div style="display:inline-block"><?= $form->field($model, 'autoclosed')->checkbox([0 => 'unchecked', 1 => 'checked'], [])->label(false) ?></div>
+
+ <?= Html::submitButton('Применить', ['class' => 'btn btn-secondary btn-sm'])?>
+ </div>
+ </div>
+
+ <?php ActiveForm::end() ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,