'Редакция на събитие', 'delete' => 'Изтриване на събитие', 'new' => 'Ново събитие' ]; $model = Events::getModel(); $typeTitle = ''; //exit; $tab = $_GET['tab'] ?? 'main'; if (!empty($_GET['type'])) { if ($_GET['type'] == 'booking') $tabs['booking'] = ' Резервация'; if ($_GET['type'] == 'online') $tabs['online'] = ' Стрийминг'; $tabs['main'] = ' Основни данни'; $tabs['ts_en'] = ' Превод английски'; $typeTitle = Events::eventTypes($_GET['type']); $typeTitle = $typeTitle ? " [ $typeTitle ]" : ""; } if (!empty($_GET['id'])) { if ($model->type == 'online') $tabs['online'] = ' Стрийминг'; if ($model->type == 'booking') $tabs['booking'] = ' Резервация'; $tabs['main'] = ' Основни данни'; $tabs['ts_en'] = ' Превод английски'; $typeTitle = Events::eventTypes($model->type); $typeTitle = $typeTitle ? " [ $typeTitle ]" : ""; } TableWidget::widget([ 'filter' => [ [ 'event_dates' => ['Дата', 'c2 fDatepicker'], 'title' => ['Заглавие на събитието', 'c4'], 'is_for_publish' => ['В публ. портал', 'c2', [1 => 'да', 'null' => 'не']], 'is_active' => ['Публикувано', 'c2', [1 => 'да', 'null' => 'не']] ], ], 'top' => [ 'title' => 'Събития', 'data' => [ 'index/dashboard' => 'Начало', 'website/expositions' => 'Уеб портал', ] ], 'actions' => $actions, 'th' => [ '№' => 'c1 text-right', 'Заглавие' => 'c3', 'Вид събитие' => '', 'Достъп' => 'c0 ct', 'Дати на събитието' => 'c1', 'Партньор' => 'c2', 'История' => 'c0 ct', 'В страница на партньор' => 'c1 ct', 'В публ. портал' => 'c1 ct', 'Публикувано на публ. портал' => 'c1 ct', 'В избрани' => 'c0 ct' ], 'data' => Events::find()->where(Yii::$app->getFilterData('or'))->andWhere(['partner_id' => $partnerUser->partner_id])->orderBy(['id' => SORT_DESC])->loop([ 'id', function (Events $model) { return '' . $model->title . ''; }, function (Events $model) { return str_replace('събитие', '', Events::eventTypes($model->type)); }, function (Events $model) { //simple online booking $access = [1 => 'частен достъп', 2 => 'свободно']; switch ($model->type) { case 'online': return !empty($access[$model->stream_access]) ? $access[$model->stream_access] : 'не определен'; case 'booking': return 'с резервация'; case 'simple': return 'свободно'; } }, function (Events $model) { $event_dates = ''; foreach (explode(',', $model->event_dates) as $d) { $event_dates .= '
' . date('d.m.Y', strtotime($d)) . '
'; } return '
' . $event_dates . '
'; }, function (Events $model) { if ($model->partner) return $model->partner->name; }, function (Events $model) { return ''; }, function (Events $model) { return $model->statusSwitch('on_partner_page', null, ['Събитието е публикувано в сайта на партньора', 'Събитието е махнато от сайта на партньора'], null, 'events'); }, function (Events $model) { return $model->statusSwitch('is_for_publish', null, ['Събитието е готово за публикуване', 'Събитието все още не е готово за публикуване']); }, function (Events $model) { return $model->is_active ? 'да (' . $model->formatDate($model->publish_date) . ')' : 'не'; }, function (Events $model) { return $model->statusSwitch('partner_page_selected', null, ['Събитието е добавено в избрани', 'Събитието е добавено в избрани'], null, 'events'); }, ], $_GET['p'] ?? 1, 30) ]); FormWidget::widget([ 'top' => [ 'title' => 'Ново събитие' . $typeTitle, 'title_edit' => 'Редакция на събитие' . $typeTitle, 'data' => [ 'index/dashboard' => 'Начало', 'website/expositions' => 'Уебпортал', 'website/events' => 'Събития' ], ], 'tabs' => $tabs ?? [], 'writeView' => empty($_GET['id']) && empty($_GET['type']) ? "website/default/events_w" : "website/tabs/" . Includes::tab($tab) . "/events_w", 'model' => Events::class, 'validation' => function ($p) use ($tab) { if ($tab == 'main') { if (empty($p->{'event_dates'})) return ["event_dates" => 'Моля, въведете дати на събитието']; if (empty($p->{"title"})) return ["title" => 'Моля, въведете заглавие на събитието']; if (empty($p->{"text_short"})) return ["text_short" => 'Моля, въведете кратък текст на събитието']; if (empty($p->{"text"})) return ["text" => 'Моля, въведете пълен текст на събитието']; } else if (Includes::inLocales($tab)) { if (empty($p->{$tab . "_title"})) return [$tab . "_title" => 'Моля, въведете заглавие на събитието']; if (empty($p->{$tab . "_text_short"})) return [$tab . "_text_short" => 'Моля, въведете кратък текст на събитието']; if (empty($p->{$tab . "_text"})) return [$tab . "_text" => 'Моля, въведете пълен текст на събитието']; } else if ($tab == 'booking') { if (empty($p->{'daily_open_time'})) return ['daily_open_time' => 'Моля, попълнете вярно времето за дневно посещение']; if (empty($p->{'max_visitors'})) return ['max_visitors' => 'Моля, попълнете максимален брой посетители за деня']; } else if ($tab == 'online') { if (empty($p->{'daily_open_time'})) return ['daily_open_time' => 'Моля, изберете време, в което стийминга ще бъде излъчен']; if (empty($p->{"stream_url"})) return ["stream_url" => 'Моля, попълнете стрийминг линк']; if ($p->{"stream_access"} == 1 && $p->{"stream_purchase_type"} == 'individual_price' && empty($p->{"stream_price"})) return ['stream_price' => 'Моля, попълнете индивидуална цена']; } return null; }, 'postService' => function ($p, Events $model) use ($partnerUser) { $model->setPostDataToModel(); if (!empty($p->{'stream_access'})) { if ($p->{'stream_access'} == 2) { $model->stream_purchase_type = null; $model->stream_price = null; } else { if ($model->stream_purchase_type == 'subscription') { $model->stream_price = null; } } } if ($partnerUser) $model->partner_id = $partnerUser->partner_id; $model->save(); if ($model->type == 'booking') { if (!empty($p->{'price_object'})) { foreach ($p->{'price_object'} as $key => $object) { $keyArr = explode('_', $key); $priceObject = $keyArr[0] == 'id' ? PriceObject::findOne($keyArr[1]) : new PriceObject(); $priceObject->text_bg = $object['text_bg']; $priceObject->text_en = $object['text_en']; $priceObject->price = $object['price']; $priceObject->event_id = $model->id; $priceObject->save(); } } } \app\models\Articles::updateArticle($model); History::addNew($model->id, 'events', Auth::userPartner()->getFullName() . ' - Партньор', !empty($_GET['id'])); Yii::$app->flash('success', isset($_GET['id']) ? 'Събитието е актуализирано успешно' : 'Събитието е създадено успешно'); $model->smartRedirect(); } ]);