'depends'=>['appointment-judge_id'],
<?= $form->field($model, 'judge_id', ['options' => ['class' => 'col-sm-6']])->widget(Select2::classname(), [
'data' => ArrayHelper::map(\backend\models\Judge::find()->all(), 'id', 'fullName'),
'language' => 'ru',
'hideSearch' => true,
'initValueText' => ['1'],
'options' => ['placeholder' => 'Выберите судью...'],
'pluginOptions' => [
'allowClear' => false
],
]);?>
<?= $form->field($model, 'judge_comitet_id', ['options' => ['class' => 'col-sm-6']])->widget(DepDrop::classname(), [
'type'=>DepDrop::TYPE_SELECT2,
'pluginOptions'=>[
'depends'=>['appointment-judge_id'],
'placeholder' => 'Выберите категорию...',
'url' => Url::to(['/appointment/judge-comitet-list']),
'loadingText' => 'Загрузка категорий...',
]
]); ?>
public function actionJudgeComitetList()
{
$out = [];
if (isset($_POST['depdrop_parents'])) {
$id = end($_POST['depdrop_parents']);
$list = JudgeComitet::findAll(['judge_id'=>$id]);
$selected = null;
if ($id != null && count($list) > 0) {
$selected = '';
foreach ($list as $i => $model) {
$comitet = Comitet::findOne($model['comitet_id']);
$category = Category::findOne($model['category_id']);
$out[] = ['id' => $model['id'], 'name' => $comitet->name.' ('.$category->name.')'];
if ($i == 0) {
$selected = $model['id'];
}
}
// Shows how you can preselect a value
echo Json::encode(['output' => $out, 'selected'=>$selected]);
return;
}
}
echo Json::encode(['output' => '', 'selected'=>'']);
}
public function getDateTo($dateCorretc)
{
$date = date_create(Yii::$app->formatter->asDate('now', 'php:Y-m-d'));//Создаем дату для рассчёта срока
$date = date_modify($date, $dateCorretc);//Прибавляем дату к текущей
return Yii::$app->formatter->asDate($date, 'php:Y-m-d');
//return $dateTo = strtotime($date);
}
public function validateMaxCountApp()
{
$AppointmentCount = Appointment::find()
->select('created_at')
->where(['>=','created_at',strtotime(self::getDateTo('- 1 year 2 month'))])//За период
->innerJoinWith('judgeComitet')
->select('judge_id')
->where(['judge_id'=>$this->judgeComitet->judge_id])//У выбранного судьи
->asArray()
->count();
$appCountToYear = 6; //Максимальное кол-во назначений за 1 год и 2 месяца
//Если назначений больше, чем $appCountToYear, тогда ошибка
if ( $AppointmentCount > $appCountToYear) $this->addError('*', 'Судья не может быть назначен больше '.$appCountToYear.' раз за 1 год и 2 месяца!');
//if ( $appCountToYear < 2) $this->addError('*', 'Судья не может быть назначен два года подряд'.$appCountToYear.'на одно и тоже событие!');
}