'login-form',
'action' => Url::toRoute(['sandbox/' . ($type === 'moderate' ? 'index' : $type)]),
'method' => 'GET',
]) ?>
filters as $filter) : ?>
'top'];
switch ($filter->name) {
case 'status':
case 'agreement':
case 'preferences':
case 'statusBlock':
case 'campaign_code':
case 'educationForm':
case 'targetReception':
case 'review_agreement':
case 'hasIndividualAchievement':
case 'financial_basis':
case 'education_level':
case 'admission_category':
$options['placeholder'] = Yii::t(
'sandbox/index/filter-block',
'Текст для пустого значения выпадающего списка; блока с фильтрами на стр. поданных заявлений: `Выберите ...`'
);
$options['class'] = 'col-12 form-control small_font';
$data = [];
switch ($filter->name) {
case 'statusBlock':
$data = BachelorApplication::getBlockStatusAliasList();
break;
case 'educationForm':
$data = ArrayHelper::merge(
['' => ''],
ArrayHelper::map(
Speciality::find()
->select(['eduform_name', 'education_form_ref.reference_uid', 'education_form_ref_id'])
->joinWith('educationFormRef education_form_ref')
->groupBy(['eduform_name', 'education_form_ref.reference_uid', 'education_form_ref_id'])
->where([Speciality::tableName() . '.archive' => false])
->all(),
'educationFormRef.reference_uid',
'eduform_name'
)
);
break;
case 'campaign_code':
$data = ArrayHelper::merge(
[null => Yii::t(
'sandbox/index/filter-block',
'Текст для значения "Все ПК" в выпадающем списке; блока с фильтрами на стр. поданных заявлений: `Все ПК`'
)],
ArrayHelper::map($listOfAdmissionCampaign, 'reference_uid', 'name')
);
break;
case 'status':
$data = BachelorApplication::sandboxMessages();
break;
case 'agreement':
case 'preferences':
case 'targetReception':
case 'review_agreement':
case 'hasIndividualAchievement':
$data = [
null => Yii::t(
'sandbox/index/filter-block',
'Текст для значения "Все" в выпадающем списке; блока с фильтрами на стр. поданных заявлений: `Все`'
),
1 => Yii::t(
'sandbox/index/filter-block',
'Текст для значения "Есть" в выпадающем списке; блока с фильтрами на стр. поданных заявлений: `Есть`'
),
2 => Yii::t(
'sandbox/index/filter-block',
'Текст для значения "Нет" в выпадающем списке; блока с фильтрами на стр. поданных заявлений: `Нет`'
)
];
break;
case 'financial_basis':
$data = ArrayHelper::merge(
['' => ''],
ArrayHelper::map(
Speciality::find()
->select(['finance_name', 'education_source_ref.reference_uid', 'education_source_ref_id'])
->joinWith('educationSourceRef education_source_ref')
->groupBy(['finance_name', 'education_source_ref.reference_uid', 'education_source_ref_id'])
->where([Speciality::tableName() . '.archive' => false])
->all(),
'educationSourceRef.reference_uid',
'finance_name'
)
);
break;
case 'education_level':
$data = ArrayHelper::merge(
['' => ''],
ArrayHelper::map(
Speciality::find()
->select(['edulevel_name', 'education_level_ref.reference_uid', 'education_level_ref_id'])
->joinWith('educationLevelRef education_level_ref')
->groupBy(['edulevel_name', 'education_level_ref.reference_uid', 'education_level_ref_id'])
->where([Speciality::tableName() . '.archive' => false])
->all(),
'educationLevelRef.reference_uid',
'edulevel_name'
)
);
break;
case 'admission_category':
$data = ArrayHelper::merge(
['' => ''],
ArrayHelper::map(
AdmissionCategory::find()->notMarkedToDelete()->active()->all(),
'ref_key',
'description'
)
);
break;
}
$field = $form->field($searchModel, $filter->name)
->widget(Select2::class, [
'language' => $appLanguage,
'data' => $data,
'options' => $options,
'pluginOptions' => ['allowClear' => true],
]);
break;
case 'citizenship':
case 'historyChanges':
case 'specialityName':
case 'lastManagerName':
$options['multiple'] = true;
$options['placeholder'] = Yii::t(
'sandbox/index/filter-block',
'Текст для пустого значения выпадающего списка; блока с фильтрами на стр. поданных заявлений: `Выберите ...`'
);
$options['class'] = 'col-12 form-control small_font';
$data = [];
switch ($filter->name) {
case 'specialityName':
$firstQuery = Speciality::find()
->select(['speciality_name', 'directionRef.reference_uid', 'direction_ref_id'])
->joinWith('directionRef directionRef')
->leftJoin(
'bachelor_speciality',
'dictionary_speciality.id = bachelor_speciality.speciality_id'
)
->where(['dictionary_speciality.archive' => false])
->andWhere(['bachelor_speciality.archive' => false])
->andWhere([
'in',
'bachelor_speciality.application_id',
(clone $applications->query)->select('bachelor_application.id')
])
->groupBy(['speciality_name', 'directionRef.reference_uid', 'direction_ref_id']);
if (isset($searchModel->{$filter->name}) && $searchModel->{$filter->name}) {
$additionalQuery = Speciality::find()
->alias('additional_dictionary_spec')
->select(['speciality_name', 'directionRef.reference_uid', 'direction_ref_id'])
->joinWith('directionRef directionRef')
->where(['additional_dictionary_spec.archive' => false])
->andWhere([
'in',
'directionRef.reference_uid',
$searchModel->{$filter->name}
]);
$firstQuery->union($additionalQuery);
}
$data = ArrayHelper::map(
$firstQuery->all(),
'directionRef.reference_uid',
'speciality_name'
);
break;
case 'historyChanges':
$data = ApplicationHistory::historyTypeNames();
break;
case 'citizenship':
$data = ArrayHelper::merge(
[null => Yii::t(
'sandbox/index/filter-block',
'Текст для значения "Все" в выпадающем списке; блока с фильтрами на стр. поданных заявлений: `Все`'
)],
ArrayHelper::map(
Country::find()->active()->orderBy('name')->all(),
'id',
'name'
)
);
break;
case 'lastManagerName':
$userTableName = User::tableName();
$rbacAuthAssignmentTableName = RBACAuthAssignment::tableName();
$data = ArrayHelper::map(
(new Query())
->select("{$userTableName}.username, {$userTableName}.id")
->from($userTableName)
->leftJoin($rbacAuthAssignmentTableName, "{$userTableName}.id = {$rbacAuthAssignmentTableName}.user_id")
->andWhere(["{$rbacAuthAssignmentTableName}.item_name" => 'manager'])
->all(),
'id',
'username'
);
break;
}
$field = $form->field($searchModel, $filter->name)
->widget(Select2::class, [
'language' => $appLanguage,
'value' => $searchModel->{$filter->name},
'data' => $data,
'options' => $options,
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'maximumInputLength' => 10
],
]);
break;
case 'sent_at':
case 'birthday':
case 'created_at':
case 'last_management_at':
$field = $form->field($searchModel, $filter->name)
->widget(DatePicker::class, [
'language' => $appLanguage,
'separator' => Yii::t(
'sandbox/index/filter-block',
'Текст для междометия дат стоящим между дат начала и конца; блока с фильтрами на стр. поданных заявлений: `по`'
),
'name2' => "to_{$filter->name}",
'attribute2' => "to_{$filter->name}",
'type' => DatePicker::TYPE_RANGE,
'options' => array_merge(
['placeholder' => Yii::t(
'sandbox/index/filter-block',
'Текст для пустого значения даты начала; блока с фильтрами на стр. поданных заявлений: `Начало`'
)],
$options
),
'options2' => array_merge(
['placeholder' => Yii::t(
'sandbox/index/filter-block',
'Текст для пустого значения даты окончания; блока с фильтрами на стр. поданных заявлений: `Конец`'
)],
$options
),
'pluginOptions' => [
'autoclose' => false,
'format' => 'dd.mm.yyyy',
]
]);
break;
case 'exam_form':
$data = ArrayHelper::map(
StoredDisciplineFormReferenceType::findAll(['archive' => false]),
'reference_uid',
'reference_name'
);
$examCode = Yii::$app->configurationManager->getCode('discipline_exam_form');
if (isset($data[$examCode])) {
$data = [$examCode => $data[$examCode]] + $data;
}
$egeCode = Yii::$app->configurationManager->getCode('discipline_ege_form');
if (isset($data[$egeCode])) {
$data = [$egeCode => $data[$egeCode]] + $data;
}
$field = $form->field($searchModel, $filter->name)->widget(Select2::class, [
'data' => $data,
'options' => [
'data-placement' => 'top',
'placeholder' => Yii::t(
'sandbox/index/filter-block',
'Текст для пустого значения выпадающего списка; блока с фильтрами на стр. поданных заявлений: `Выберите ...`'
),
'class' => 'col-12 form-control small_font',
],
'pluginOptions' => ['allowClear' => true],
]);
break;
case 'phone_number':
$field = $form->field($searchModel, $filter->name)->widget(MaskedInput::class, [
'mask' => [PhoneWidget::$phoneNumberMask],
'clientOptions' => ['clearMaskOnLostFocus' => true, 'greedy' => false],
'options' => [
'placeholder' => '+7(999)9999999',
'data-mask' => PhoneWidget::$phoneNumberMask,
'class' => 'col-12 form-control small_font',
]
]);
break;
case 'snils':
$field = $form->field($searchModel, $filter->name)->widget(MaskedInput::class, [
'mask' => '999-999-999 99',
'clientOptions' => ['clearMaskOnLostFocus' => false],
'options' => [
'class' => 'col-12 form-control small_font',
],
]);
break;
default:
$field = $form->field($searchModel, $filter->name)
->textInput($options);
break;
} ?>
label(Yii::t(
'abiturient/filter-table',
$filter->label
)),
['class' => 'col-xl-3 col-lg-4 col-md-6 col-12']
) ?>
= $filtersGrid ?>
= Html::submitButton(
Yii::t(
'sandbox/index/filter-block',
'Подпись для кнопки применения фильтров; блока с фильтрами на стр. поданных заявлений: `Отфильтровать`'
),
['class' => 'btn btn-primary']
) ?>
filterLoaded) {
$resetType = ('moderate' === $type) ? 'index' : $type;
echo Html::a(
Yii::t(
'sandbox/index/filter-block',
'Подпись для кнопки сброса фильтров; блока с фильтрами на стр. поданных заявлений: `Сбросить`'
),
['sandbox/reset-filters', 'type' => $resetType],
['class' => 'btn btn-outline-secondary']
);
} ?>