1
0
Fork 0
mirror of https://github.com/janickiy/yii2-nomer synced 2025-03-09 15:39:59 +00:00
yii2-nomer/modules/admin/views/users/index.php
2020-02-05 06:34:26 +03:00

245 lines
8.9 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/* @var $this \yii\web\View */
/* @var $dataProvider \yii\data\ActiveDataProvider */
/* @var $registrations array */
/* @var $tm_start string */
/* @var $tm_end string */
/* @var $email string */
/* @var $registrationConfirms array */
/* @var $isVIP boolean */
/* @var $isAdmin boolean */
/* @var $withChecks boolean */
use yii\grid\ActionColumn;
use yii\grid\GridView;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\jui\DatePicker;
use app\models\User;
use app\models\Payment;
$this->title = 'Пользователи';
?>
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">Фильтры</div>
</div>
<div class="portlet-body form">
<?= Html::beginForm(['users/index'], 'GET') ?>
<div class="input-group input-medium">
<span class="input-group-addon">С</span>
<?= DatePicker::widget([
'name' => 'tm_start',
'value' => $tm_start,
'language' => 'ru',
'dateFormat' => 'yyyy-MM-dd',
'options' => ['class' => 'form-control input-small']
]) ?>
<span class="input-group-addon">по</span>
<?= DatePicker::widget([
'name' => 'tm_end',
'value' => $tm_end,
'language' => 'ru',
'dateFormat' => 'yyyy-MM-dd',
'options' => ['class' => 'form-control input-small']
]) ?>
<?= Html::hiddenInput('is_vip', $isVIP) ?>
<?= Html::hiddenInput('is_admin', $isAdmin) ?>
<?= Html::hiddenInput('with_checks', $withChecks) ?>
<span class="input-group-addon"></span>
<button type="submit" class="form-control btn btn-primary input-small">Показать</button>
</div>
<?= Html::endForm() ?>
<hr>
<?= Html::beginForm(['users/index'], 'GET') ?>
<div class="input-group input-medium">
<?= Html::textInput('email', $email, ['class' => 'form-control', 'style' => 'width: 370px;', 'placeholder' => 'Email пользователя']) ?>
<?= Html::hiddenInput('is_vip', $isVIP) ?>
<?= Html::hiddenInput('is_admin', $isAdmin) ?>
<?= Html::hiddenInput('with_checks', $withChecks) ?>
<span class="input-group-addon"></span>
<button type="submit" class="form-control btn btn-primary input-small">Показать</button>
</div>
<?= Html::endForm() ?>
<hr>
<?= Html::a('VIP', ['users/index',
'tm_start' => $tm_start,
'tm_end' => $tm_end,
'email' => $email,
'is_vip' => !$isVIP,
'is_admin' => $isAdmin,
'with_checks' => $withChecks
], ['class' => $isVIP ? 'btn btn-success' : 'btn btn-primary', 'style' => 'width: 145px;']) ?>
<?= Html::a('Администратор', ['users/index',
'tm_start' => $tm_start,
'tm_end' => $tm_end,
'email' => $email,
'is_vip' => $isVIP,
'is_admin' => !$isAdmin,
'with_checks' => $withChecks
], ['class' => $isAdmin ? 'btn btn-success' : 'btn btn-primary', 'style' => 'width: 170px;']) ?>
<?= Html::a('Есть проверки', ['users/index',
'tm_start' => $tm_start,
'tm_end' => $tm_end,
'email' => $email,
'is_vip' => $isVIP,
'is_admin' => $isAdmin,
'with_checks' => !$withChecks
], ['class' => $withChecks ? 'btn btn-success' : 'btn btn-primary', 'style' => 'width: 220px;']) ?>
</div>
</div>
<?php if (!$email): ?>
<div class="row">
<div class="col-md-4">
<table class="table table-striped table-bordered">
<tbody>
<?php foreach ($registrations as $type): ?>
<tr>
<th><?= $type['source'] ?$type['source']: 'email' ?></th>
<td><?= $type['count'] ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<?php endif; ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'rowOptions' => function(User $model) {
if ($model->is_confirm) return ['class' => 'success'];
},
'columns' => [
[
'attribute' => 'id',
'format' => 'raw',
'value' => function($model) {
return Html::a($model->id, ['users/view', 'id' => $model->id]);
}
],
[
'format' => 'raw',
'attribute' => 'email',
'value' => function(User $model) {
$socials = [];
foreach ($model->auth as $a) {
$link = null;
switch ($a->source) {
case 'vk':
$link = 'https://vk.com/id' . $a->source_id;
break;
case 'facebook':
$link = 'https://facebook.com/' . $a->source_id;
break;
}
if (is_null($link)) {
$source = $a->source;
if ($source == 'google') {
$source .= ' (' . count($model->contacts) . ')';
}
$socials[] = $source;
} else {
$socials[] = Html::a($a->source, $link);
}
}
$username = "";
if(trim($model->email) != "") $username = $model->email;
else {
if(preg_match("/-/", $model->uuid)) {
$username = "iOS (".$model->uuid.")";
} else {
$username = "Android (".$model->uuid.")";
}
}
return '<a href="' . Url::toRoute(['users/view', 'id' => $model->id]) . '">' . $username . '</a><br>' . join(', ', $socials);
}
],
'checks',
[
'header' => 'Общая сумма платежей',
'content' => function(User $model) {
return array_sum(array_map(function(Payment $payment) { return $payment->sum; }, $model->payments));
}
],
[
'header' => 'Дата регистрации',
'content' => function($model) {
return join("<br />", [
\Yii::$app->formatter->asDate($model->tm_create, 'dd.MM.yyyy'),
$model->ip
]);
}
],
[
'header' => 'Поисков<br>всего',
'content' => function($model) {
return count($model->requests);
}
],
[
'header' => '%',
'content' => function($model) {
$index = 0;
foreach($model->requests as $r) {
$index += array_sum(ArrayHelper::getColumn($r->results, 'index'));
}
return round(count($model->requests) ? ($index / count($model->requests)) : 0, 2);
}
],
[
'header' => 'Поисков<br>за сегодня',
'content' => function($model) {
return count(array_filter($model->requests, function($r) {
return date('Y-m-d', strtotime($r->tm)) == date('Y-m-d');
}));
}
],
[
'header' => '%<br>за сегодня',
'content' => function($model) {
$index = 0;
$requests = array_filter($model->requests, function($r) {
return date('Y-m-d', strtotime($r->tm)) == date('Y-m-d');
});
foreach($requests as $r) {
$index += array_sum(ArrayHelper::getColumn($r->results, 'index'));
}
return round(count($requests) ? ($index / count($requests)) : 0, 2);
}
],
'comment',
[
'class' => ActionColumn::className(),
'template' => '{set-vip} {set-admin}',
'buttons' => [
'set-vip' => function ($url, $model, $key) {
return $model->is_vip ? Html::a('Убрать VIP', ['set-vip', 'id' => $model->id], ['class' => 'btn btn-danger']) : Html::a('Поставить VIP', ['set-vip', 'id' => $model->id], ['class' => 'btn btn-success']);
},
'set-admin' => function ($url, $model, $key) {
return $model->is_admin ? Html::a('Убрать админа', ['set-admin', 'id' => $model->id], ['class' => 'btn btn-danger']) : Html::a('Поставить админа', ['set-admin', 'id' => $model->id], ['class' => 'btn btn-success']);
}
]
],
],
]);