/** * @inheritdoc */ public function actions() { return ArrayHelper::merge(parent::actions(), ['index' => ["dataProviderCallback" => function (ActiveDataProvider $dataProvider) { $query = $dataProvider->query; /** * @var ActiveQuery $query */ //$query->select(['app_company.*', 'count(`app_company_officer_user`.`id`) as countOfficer']); $query->groupBy(['shop_fuser.id']); $query->with('user'); $query->with('personType'); $query->with('buyer'); $query->with('shopBaskets'); $query->with('shopBaskets.product'); }, "columns" => [['class' => UpdatedAtColumn::className()], ['class' => DataColumn::className(), 'filter' => false, 'format' => raw, 'label' => \skeeks\cms\shop\Module::t('app', 'User'), 'value' => function (ShopFuser $model) { return $model->user ? (new AdminBuyerUserWidget(['user' => $model->user]))->run() : \skeeks\cms\shop\Module::t('app', 'Not authorized'); }], ['class' => DataColumn::className(), 'filter' => false, 'format' => 'raw', 'label' => \skeeks\cms\shop\Module::t('app', 'Profile of buyer'), 'value' => function (ShopFuser $model) { if (!$model->buyer) { return null; } return Html::a($model->buyer->name . " [{$model->buyer->id}]", UrlHelper::construct('shop/admin-buyer/related-properties', ['pk' => $model->buyer->id])->enableAdmin()->toString()); }], ['class' => DataColumn::className(), 'filter' => ArrayHelper::map(ShopPersonType::find()->active()->all(), 'id', 'name'), 'attribute' => 'person_type_id', 'label' => \skeeks\cms\shop\Module::t('app', 'Profile type'), 'value' => function (ShopFuser $model) { return $model->personType->name; }], ['class' => DataColumn::className(), 'filter' => false, 'label' => \skeeks\cms\shop\Module::t('app', 'Price of basket'), 'value' => function (ShopFuser $model) { return \Yii::$app->money->intlFormatter()->format($model->money); }], ['class' => DataColumn::className(), 'filter' => false, 'label' => \skeeks\cms\shop\Module::t('app', 'Number of items'), 'value' => function (ShopFuser $model) { return $model->countShopBaskets; }], ['class' => DataColumn::className(), 'filter' => false, 'format' => 'raw', 'label' => \skeeks\cms\shop\Module::t('app', 'Good'), 'value' => function (ShopFuser $model) { if ($model->shopBaskets) { $result = []; foreach ($model->shopBaskets as $shopBasket) { $money = \Yii::$app->money->intlFormatter()->format($shopBasket->money); $result[] = Html::a($shopBasket->name, $shopBasket->product->cmsContentElement->url, ['target' => '_blank']) . <<<HTML ({$shopBasket->quantity} {$shopBasket->measure_name}) — {$money} HTML; } return implode('<hr />', $result); } }], ['class' => DataColumn::className(), 'filter' => ArrayHelper::map(CmsSite::find()->active()->all(), 'id', 'name'), 'attribute' => 'site_id', 'format' => 'raw', 'label' => \skeeks\cms\shop\Module::t('app', 'Site'), 'value' => function (ShopFuser $model) { return $model->site->name . " [{$model->site->code}]"; }], ['class' => CreatedAtColumn::className()]]]]); }
public function safeUp() { $tableExist = $this->db->getTableSchema("{{%shop_person_type_site}}", true); if ($tableExist) { return true; } $tableOptions = null; if ($this->db->driverName === 'mysql') { $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'; } $this->createTable("{{%shop_person_type_site}}", ['person_type_id' => $this->integer()->notNull(), 'site_code' => "CHAR(15) NOT NULL"], $tableOptions); $this->createIndex('site_code__person_type_id', '{{%shop_person_type_site}}', ['person_type_id', 'site_code'], true); $this->execute("ALTER TABLE {{%shop_person_type_site}} COMMENT = 'Связь плательщиков с сайтами';"); $this->addForeignKey('shop_person_type_site_person_type_id', "{{%shop_person_type_site}}", 'person_type_id', '{{%shop_person_type}}', 'id', 'CASCADE', 'CASCADE'); $this->addForeignKey('shop_person_type_site_site_code', "{{%shop_person_type_site}}", 'site_code', '{{%cms_site}}', 'code', 'CASCADE', 'CASCADE'); $persons = \skeeks\cms\shop\models\ShopPersonType::find()->all(); $site = \skeeks\cms\models\CmsSite::find()->def()->one(); if ($persons && $site) { foreach ($persons as $person) { $this->insert('{{%shop_person_type_site}}', ['person_type_id' => $person->id, 'site_code' => $site->code]); } } }
use yii\helpers\Html; use skeeks\cms\modules\admin\widgets\form\ActiveFormUseTab as ActiveForm; /* @var $this yii\web\View */ ?> <?php $form = ActiveForm::begin(); ?> <?php echo $form->fieldSet(\skeeks\cms\shop\Module::t('app', 'Main')); ?> <?php echo $form->fieldSelect($model, 'cms_user_id', \yii\helpers\ArrayHelper::map(\skeeks\cms\models\CmsUser::find()->all(), 'id', 'displayName')); ?> <?php echo $form->fieldSelect($model, 'shop_person_type_id', \yii\helpers\ArrayHelper::map(\skeeks\cms\shop\models\ShopPersonType::find()->all(), 'id', 'name')); ?> <?php echo $form->field($model, 'name')->textInput(); ?> <?php echo $form->fieldSetEnd(); ?> <?php echo $form->buttonsCreateOrUpdate($model); ActiveForm::end();
/** * @return ShopPersonType[] */ public function getShopPersonTypes() { return ShopPersonType::find()->active()->all(); }
/** * Валидация данных с формы * @return array */ public function actionShopPersonTypeValidate() { $rr = new RequestResponse(); if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) { if (\Yii::$app->request->post('shop_person_type_id')) { $shop_person_type_id = \Yii::$app->request->post('shop_person_type_id'); /** * @var $shopPersonType ShopPersonType */ $shopPersonType = ShopPersonType::find()->active()->andWhere(['id' => $shop_person_type_id])->one(); if (!$shopPersonType) { $rr->message = \skeeks\cms\shop\Module::t('app', 'This payer is disabled or deleted. Refresh the page.'); $rr->success = false; return $rr; } $modelHasRelatedProperties = $shopPersonType->createModelShopBuyer(); if (method_exists($modelHasRelatedProperties, "createPropertiesValidateModel")) { $model = $modelHasRelatedProperties->createPropertiesValidateModel(); } else { $model = $modelHasRelatedProperties->getRelatedPropertiesModel(); } return $rr->ajaxValidateForm($model); } } }
echo $form->fieldRadioListBoolean($model, 'filtrable'); ?> <?/*= $form->fieldRadioListBoolean($model, 'smart_filtrable') */?> <?/*= $form->fieldRadioListBoolean($model, 'with_description') */?> <? if ($content_id = \Yii::$app->request->get('shop_person_type_id')) : ?> <?php echo $form->field($model, 'shop_person_type_id')->hiddenInput(['value' => $content_id])->label(false); ?> <? else: ?> <?php echo $form->field($model, 'shop_person_type_id')->label(\skeeks\cms\shop\Module::t('app', 'Type payer'))->widget(\skeeks\cms\widgets\formInputs\EditedSelect::className(), ['items' => \yii\helpers\ArrayHelper::map(\skeeks\cms\shop\models\ShopPersonType::find()->all(), "id", "name"), 'controllerRoute' => 'shop/admin-shop-person-type']); ?> <? endif; ?> <?php echo $form->fieldSetEnd(); ?> <?php echo $form->fieldSet('Связь с пользователем'); ?> <?php echo $form->fieldRadioListBoolean($model, 'is_user_email');
<?php echo $form->fieldSet(\skeeks\cms\shop\Module::t('app', 'Main')); ?> <?php echo $form->field($model, 'name')->textInput(['maxlength' => 255]); ?> <?php echo $form->field($model, 'description')->textarea(); ?> <?php echo $form->fieldRadioListBoolean($model, 'active'); ?> <?php echo $form->field($model, 'personTypeIds')->checkboxList(\yii\helpers\ArrayHelper::map(\skeeks\cms\shop\models\ShopPersonType::find()->all(), 'id', 'name')); ?> <?php echo $form->fieldInputInt($model, 'priority'); ?> <?php echo $form->field($model, 'component')->listBox(array_merge(['' => ' — '], [\skeeks\cms\shop\paySystems\RobokassaPaySystem::className() => (new \skeeks\cms\shop\paySystems\RobokassaPaySystem())->descriptor->name, \skeeks\cms\shop\paySystems\PayPalPaySystem::className() => (new \skeeks\cms\shop\paySystems\PayPalPaySystem())->descriptor->name, \skeeks\cms\shop\paySystems\YandexKassaPaySystem::className() => (new \skeeks\cms\shop\paySystems\YandexKassaPaySystem())->descriptor->name, \skeeks\cms\shop\paySystems\TinkoffPaySystem::className() => (new \skeeks\cms\shop\paySystems\TinkoffPaySystem())->descriptor->name]), ['size' => 1, 'data-form-reload' => 'true']); ?> <? if ($handler) : ?> <?php echo \skeeks\cms\modules\admin\widgets\BlockTitleWidget::widget(['content' => \Yii::t('skeeks/cms', 'Settings')]); ?> <?php
<? $pjax = \skeeks\cms\modules\admin\widgets\Pjax::begin(); ?> <?php echo $this->render('_search', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); ?> <?php echo \skeeks\cms\modules\admin\widgets\GridViewStandart::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'pjax' => $pjax, 'adminController' => \Yii::$app->controller, 'columns' => [['class' => \skeeks\cms\grid\UpdatedAtColumn::className()], ['class' => \yii\grid\DataColumn::className(), 'filter' => false, 'format' => 'raw', 'label' => \Yii::t('skeeks/shop/app', 'User'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { return $model->user ? (new \skeeks\cms\shop\widgets\AdminBuyerUserWidget(['user' => $model->user]))->run() : \Yii::t('skeeks/shop/app', 'Not authorized'); }], ['class' => \yii\grid\DataColumn::className(), 'filter' => false, 'format' => 'raw', 'label' => \Yii::t('skeeks/shop/app', 'Profile of buyer'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { if (!$model->buyer) { return null; } return \yii\helpers\Html::a($model->buyer->name . " [{$model->buyer->id}]", \skeeks\cms\helpers\UrlHelper::construct('shop/admin-buyer/related-properties', ['pk' => $model->buyer->id])->enableAdmin()->toString()); }], ['class' => \yii\grid\DataColumn::className(), 'filter' => \yii\helpers\ArrayHelper::map(\skeeks\cms\shop\models\ShopPersonType::find()->active()->all(), 'id', 'name'), 'attribute' => 'person_type_id', 'label' => \Yii::t('skeeks/shop/app', 'Profile type'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { return $model->personType ? $model->personType->name : ""; }], ['class' => \yii\grid\DataColumn::className(), 'filter' => false, 'label' => \Yii::t('skeeks/shop/app', 'Price of basket'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { return \Yii::$app->money->intlFormatter()->format($model->money); }], ['class' => \yii\grid\DataColumn::className(), 'filter' => false, 'label' => \Yii::t('skeeks/shop/app', 'Number of items'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { return $model->countShopBaskets; }], ['class' => \yii\grid\DataColumn::className(), 'filter' => false, 'format' => 'raw', 'label' => \Yii::t('skeeks/shop/app', 'Good'), 'value' => function (\skeeks\cms\shop\models\ShopFuser $model) { if ($model->shopBaskets) { $result = []; foreach ($model->shopBaskets as $shopBasket) { $money = \Yii::$app->money->intlFormatter()->format($shopBasket->money); $result[] = \yii\helpers\Html::a($shopBasket->name, $shopBasket->product ? $shopBasket->product->cmsContentElement->url : '#', ['target' => '_blank']) . <<<HTML ({$shopBasket->quantity} {$shopBasket->measure_name}) — {$money} HTML; } return implode('<hr style="margin: 0px;"/>', $result);
echo $form->field($model, 'cms_user_id')->widget(\skeeks\cms\modules\admin\widgets\formInputs\SelectModelDialogUserInput::className()); ?> </div> <? elseif ($model->isNewRecord) : ?> <?php echo $form->field($model, 'cms_user_id')->widget(\skeeks\cms\modules\admin\widgets\formInputs\SelectModelDialogUserInput::className()); ?> <? endif; ?> <?php echo $form->field($model, 'name')->textInput(); ?> <?php echo $form->field($model, 'shop_person_type_id')->listBox(\yii\helpers\ArrayHelper::merge(['' => ' — '], \yii\helpers\ArrayHelper::map(\skeeks\cms\shop\models\ShopPersonType::find()->all(), 'id', 'name')), ['size' => 1, 'data-form-reload' => 'true']); ?> <? if ($model->relatedProperties) : ?> <?php echo \skeeks\cms\modules\admin\widgets\BlockTitleWidget::widget(['content' => \Yii::t('skeeks/cms', 'Settings')]); ?> <? if ($properties = $model->relatedProperties) : ?> <? foreach ($properties as $property) : ?> <?php echo $property->renderActiveForm($form); ?> <? endforeach; ?> <? endif; ?> <? else : ?>