<?php | |||||
/** | |||||
* Copyright distrib (2018) | |||||
* | |||||
* contact@opendistrib.net | |||||
* | |||||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||||
* à distribuer leur production en circuits courts. | |||||
* | |||||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
* sur le site "http://www.cecill.info". | |||||
* | |||||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
* de modification et de redistribution accordés par cette licence, il n'est | |||||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
* titulaire des droits patrimoniaux et les concédants successifs. | |||||
* | |||||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
* avertis possédant des connaissances informatiques approfondies. Les | |||||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
* | |||||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
* termes. | |||||
*/ | |||||
namespace backend\controllers; | |||||
use yii\filters\VerbFilter; | |||||
use yii\filters\AccessControl; | |||||
class OnlineAdminController extends BackendController | |||||
{ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'verbs' => [ | |||||
'class' => VerbFilter::class, | |||||
], | |||||
'access' => [ | |||||
'class' => AccessControl::class, | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return $this->getUserModule() | |||||
->getAuthorizationChecker() | |||||
->isGrantedAsAdministrator($this->getUserCurrent()); | |||||
} | |||||
] | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
public function actionIndex() | |||||
{ | |||||
$usersWithStatusProducerOnlineArray = $this->getUserModule()->getRepository()->findUsersWithStatusProducerAndOnline(); | |||||
$usersWithStatusUserOnlineArray = $this->getUserModule()->getRepository()->findUsersWithStatusUserAndOnline(); | |||||
return $this->render('index', [ | |||||
'usersWithStatusProducerOnlineArray' => $usersWithStatusProducerOnlineArray, | |||||
'usersWithStatusUserOnlineArray' => $usersWithStatusUserOnlineArray, | |||||
]); | |||||
} | |||||
} |
]; | ]; | ||||
} | } | ||||
public function actionOnline() | |||||
{ | |||||
$usersWithStatusProducerOnlineArray = $this->getUserModule()->getRepository()->findUsersStatusProducerOnline(); | |||||
return $this->render('@backend/views/producer-admin/online', [ | |||||
'usersWithStatusProducerOnlineArray' => $usersWithStatusProducerOnlineArray, | |||||
]); | |||||
} | |||||
/** | /** | ||||
* Liste les producteurs. | * Liste les producteurs. | ||||
* | * |
$duration = 0; | $duration = 0; | ||||
Yii::$app->user->switchIdentity($user, $duration); | Yii::$app->user->switchIdentity($user, $duration); | ||||
Yii::$app->session->set('user.idbeforeswitch', $initialId); | Yii::$app->session->set('user.idbeforeswitch', $initialId); | ||||
return $this->redirect(['index']); | |||||
return $this->redirect($this->getUrlManagerFrontend()->createUrl(['site/index'])); | |||||
} | } | ||||
} else { | } else { | ||||
throw new NotFoundHttpException('Page introuvable'); | throw new NotFoundHttpException('Page introuvable'); |
$developerOnlineLabel = '<small class="label pull-right bg-green"><i class="fa fa-phone"></i></small>'; | $developerOnlineLabel = '<small class="label pull-right bg-green"><i class="fa fa-phone"></i></small>'; | ||||
} | } | ||||
$countTicketsAdminUnreadLabel = ''; | |||||
$countTicketsAdminUnread = $ticketModule->countTicketsAdminUnreadByUser($this->getUserCurrent()); | |||||
$countTicketsLabel = ''; | |||||
$countTicketsAdminUnread = $ticketModule->getRepository()->countTicketsAdminUnreadByUser($this->getUserCurrent()); | |||||
if($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) { | if($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) { | ||||
$countTicketsAdminUnreadLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.$countTicketsAdminUnread.'</small></span>'; | |||||
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.$countTicketsAdminUnread.'</small></span>'; | |||||
} | |||||
else { | |||||
$countTicketsAdminOpen = $ticketModule->getRepository()->countTicketsAdminStatusOpen(); | |||||
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">'.$countTicketsAdminOpen.'</small></span>'; | |||||
} | } | ||||
$sumUserProducerCredits = $userProducerModule->sumUserProducerCredits(); | $sumUserProducerCredits = $userProducerModule->sumUserProducerCredits(); | ||||
$countUsersWithStatusProducerOnline = $userModule->getRepository()->countUsersStatusProducerOnline(); | $countUsersWithStatusProducerOnline = $userModule->getRepository()->countUsersStatusProducerOnline(); | ||||
$countUsersWithStatusProducerOnlineLabel = ''; | $countUsersWithStatusProducerOnlineLabel = ''; | ||||
if($countUsersWithStatusProducerOnline) { | if($countUsersWithStatusProducerOnline) { | ||||
$countUsersWithStatusProducerOnlineLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">'.$countUsersWithStatusProducerOnline.'</small></span>'; | |||||
$countUsersWithStatusProducerOnlineLabel = '<small class="label pull-right bg-red">'.$countUsersWithStatusProducerOnline.'</small>'; | |||||
} | |||||
$countUsersWithStatusUserOnline = $userModule->getRepository()->countUsersStatusUserOnline(); | |||||
$countUsersWithStatusUserOnlineLabel = ''; | |||||
if($countUsersWithStatusUserOnline) { | |||||
$countUsersWithStatusUserOnlineLabel = '<small class="label pull-right bg-blue">'.$countUsersWithStatusUserOnline.'</small>'; | |||||
} | |||||
$countUsersOnlineLabel = ''; | |||||
if($countUsersWithStatusProducerOnline || $countUsersWithStatusUserOnline) { | |||||
$countUsersOnlineLabel = '<span class="pull-right-container">'; | |||||
if($countUsersWithStatusUserOnline) { | |||||
$countUsersOnlineLabel .= $countUsersWithStatusUserOnlineLabel; | |||||
} | |||||
if($countUsersWithStatusProducerOnline) { | |||||
$countUsersOnlineLabel .= $countUsersWithStatusProducerOnlineLabel; | |||||
} | |||||
$countUsersOnlineLabel .= '</span>'; | |||||
} | } | ||||
?> | ?> | ||||
[ | [ | ||||
'label' => 'En ligne', | 'label' => 'En ligne', | ||||
'icon' => 'wifi', | 'icon' => 'wifi', | ||||
'url' => ['producer-admin/online'], | |||||
'url' => ['online-admin/index'], | |||||
'visible' => $isUserCurrentGrantedAsAdministrator, | 'visible' => $isUserCurrentGrantedAsAdministrator, | ||||
'template' => '<a href="{url}">{icon} {label}' . $countUsersWithStatusProducerOnlineLabel . '</a>' | |||||
'template' => '<a href="{url}">{icon} {label}' . $countUsersOnlineLabel . '</a>' | |||||
], | ], | ||||
[ | [ | ||||
'label' => 'Support', | 'label' => 'Support', | ||||
'icon' => 'comments', | 'icon' => 'comments', | ||||
'url' => ['support-admin/index'], | 'url' => ['support-admin/index'], | ||||
'visible' => $isUserCurrentGrantedAsAdministrator, | 'visible' => $isUserCurrentGrantedAsAdministrator, | ||||
'template' => '<a href="{url}">{icon} {label}' . $countTicketsAdminUnreadLabel . '</a>' | |||||
'template' => '<a href="{url}">{icon} {label}' . $countTicketsLabel . '</a>' | |||||
], | ], | ||||
['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator], | ['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator], | ||||
[ | [ |
<meta name="viewport" content="width=device-width, initial-scale=1"> | <meta name="viewport" content="width=device-width, initial-scale=1"> | ||||
<meta name="baseurl" content="<?= Yii::$app->urlManagerBackend->baseUrl ; ?>"> | <meta name="baseurl" content="<?= Yii::$app->urlManagerBackend->baseUrl ; ?>"> | ||||
<meta name="baseurl-absolute" content="<?= Yii::$app->urlManagerBackend->getHostInfo().Yii::$app->urlManagerBackend->baseUrl; ?>"> | <meta name="baseurl-absolute" content="<?= Yii::$app->urlManagerBackend->getHostInfo().Yii::$app->urlManagerBackend->baseUrl; ?>"> | ||||
<?php if($this->metaRefresh): ?> | |||||
<meta http-equiv="refresh" content="60"> | |||||
<?php endif; ?> | |||||
<?= Html::csrfMetaTags() ?> | <?= Html::csrfMetaTags() ?> | ||||
<title><?= Html::encode($this->page_title) ?> | Opendistrib</title> | <title><?= Html::encode($this->page_title) ?> | Opendistrib</title> | ||||
<link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManagerBackend->getBaseUrl(); ?>/img/favicon-distrib.png" /> | <link rel="icon" type="image/png" href="<?php echo Yii::$app->urlManagerBackend->getBaseUrl(); ?>/img/favicon-distrib.png" /> |
<?php | |||||
/** | |||||
* Copyright distrib (2018) | |||||
* | |||||
* contact@opendistrib.net | |||||
* | |||||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||||
* à distribuer leur production en circuits courts. | |||||
* | |||||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
* sur le site "http://www.cecill.info". | |||||
* | |||||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
* de modification et de redistribution accordés par cette licence, il n'est | |||||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
* titulaire des droits patrimoniaux et les concédants successifs. | |||||
* | |||||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
* avertis possédant des connaissances informatiques approfondies. Les | |||||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
* | |||||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
* termes. | |||||
*/ | |||||
use common\helpers\Image; | |||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\helpers\Price; | |||||
$producerModule = $this->getProducerModule(); | |||||
$userModule = $this->getUserModule(); | |||||
$this->setTitle('En ligne'); | |||||
$this->addBreadcrumb($this->getTitle()); | |||||
$this->setMetaRefresh(true); | |||||
?> | |||||
<div class="online-index"> | |||||
<div class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title"> | |||||
<div class="glyphicon glyphicon-grain"></div> | |||||
Producteurs (<?= count($usersWithStatusProducerOnlineArray); ?>) | |||||
</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?php if($usersWithStatusProducerOnlineArray && count($usersWithStatusProducerOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusProducerOnlineArray as $userWithStatusProducerOnline): ?> | |||||
<?php $producer = $userWithStatusProducerOnline->producer; ?> | |||||
<?php if($producer): ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary box-producer"> | |||||
<div class="box-body box-profile"> | |||||
<?php if ($producer->logo && Image::isPhotoExist($producer->logo)): ?> | |||||
<img class="profile-user-img img-responsive img-circle" | |||||
src="<?= Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl; ?>/uploads/<?= $producer->logo; ?>" | |||||
alt="Logo <?= Html::encode($producer->name) ?>"> | |||||
<?php endif; ?> | |||||
<h3 class="profile-username text-center"> | |||||
<a title="Aller sur le compte de ce producteur" href="<?= $this->getUrlManagerBackend()->createUrl(['site/switch-producer', 'id' => $producer->id]); ?>"> | |||||
<?= $producer->name; ?> | |||||
</a> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusProducerOnline); ?><br/> | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endif; ?> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun producteur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> | |||||
</div> | |||||
<div class="panel panel-default"> | |||||
<div class="panel-heading"> | |||||
<h3 class="panel-title"> | |||||
<span class="glyphicon glyphicon-user"></span> | |||||
Utilisateurs (<?= count($usersWithStatusUserOnlineArray); ?>) | |||||
</h3> | |||||
</div> | |||||
<div class="panel-body"> | |||||
<?php if($usersWithStatusUserOnlineArray && count($usersWithStatusUserOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusUserOnlineArray as $userWithStatusUserOnline): ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary box-user"> | |||||
<div class="box-body box-profile"> | |||||
<h3 class="profile-username text-center"> | |||||
<a title="Prendre la main" href="<?= $this->getUrlManagerBackend()->createUrl(['user/switch-identity', 'id' => $userWithStatusUserOnline->id]); ?>"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusUserOnline); ?> | |||||
</a> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?php $userProducerArray = $userWithStatusUserOnline->userProducer; ?> | |||||
<?php foreach($userProducerArray as $userProducer): ?> | |||||
<?php if($userProducer->active && $userProducer->bookmark): ?> | |||||
<span class="label label-default"><?= $userProducer->producer->name; ?></span> | |||||
<?php endif; ?> | |||||
<?php endforeach; ?> | |||||
</p> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun utilisateur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> | |||||
</div> | |||||
</div> |
<?php | |||||
/** | |||||
* Copyright distrib (2018) | |||||
* | |||||
* contact@opendistrib.net | |||||
* | |||||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||||
* à distribuer leur production en circuits courts. | |||||
* | |||||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||||
* sur le site "http://www.cecill.info". | |||||
* | |||||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||||
* de modification et de redistribution accordés par cette licence, il n'est | |||||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||||
* titulaire des droits patrimoniaux et les concédants successifs. | |||||
* | |||||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||||
* avertis possédant des connaissances informatiques approfondies. Les | |||||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||||
* | |||||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||||
* termes. | |||||
*/ | |||||
use common\helpers\Image; | |||||
use yii\helpers\Html; | |||||
use yii\grid\GridView; | |||||
use common\logic\User\User\Model\User; | |||||
use common\logic\Producer\Producer\Model\Producer; | |||||
use common\helpers\Price; | |||||
$producerModule = $this->getProducerModule(); | |||||
$userModule = $this->getUserModule(); | |||||
$this->setTitle('Producteurs en ligne'); | |||||
$this->addBreadcrumb($this->getTitle()); | |||||
?> | |||||
<div class="producer-admin-online"> | |||||
<?php if($usersWithStatusProducerOnlineArray && count($usersWithStatusProducerOnlineArray) > 0): ?> | |||||
<?php foreach ($usersWithStatusProducerOnlineArray as $userWithStatusProducerOnline): ?> | |||||
<?php $producer = $userWithStatusProducerOnline->producer; ?> | |||||
<div class="col-md-3"> | |||||
<div class="box box-primary"> | |||||
<div class="box-body box-profile"> | |||||
<?php if ($producer->logo && Image::isPhotoExist($producer->logo)): ?> | |||||
<img class="profile-user-img img-responsive img-circle" | |||||
src="<?= Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl; ?>/uploads/<?= $producer->logo; ?>" | |||||
alt="Logo <?= Html::encode($producer->name) ?>"> | |||||
<?php endif; ?> | |||||
<h3 class="profile-username text-center"> | |||||
<?= $producer->name; ?> | |||||
</h3> | |||||
<p class="text-muted text-center"> | |||||
<?= $userModule->getSolver()->getUsername($userWithStatusProducerOnline); ?><br/> | |||||
</p> | |||||
<!--<ul class="list-group list-group-unbordered"> | |||||
<li class="list-group-item"> | |||||
<b>Téléphone</b> <a class="pull-right">06 00 00 00 00</a> | |||||
</li> | |||||
</ul> | |||||
<a href="#" class="btn btn-primary btn-block"><b>Bouton</b></a>--> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<?php endforeach; ?> | |||||
<div class="clr"></div> | |||||
<?php else: ?> | |||||
<div class="alert alert-info">Aucun producteur en ligne actuellement.</div> | |||||
<?php endif; ?> | |||||
</div> |
margin-top: 5px; | margin-top: 5px; | ||||
} | } | ||||
/* line 3, ../sass/producer-admin/_online.scss */ | |||||
.producer-admin-online .box { | |||||
/* line 3, ../sass/online-admin/_index.scss */ | |||||
.online-index .box { | |||||
overflow: hidden; | |||||
} | |||||
/* line 6, ../sass/online-admin/_index.scss */ | |||||
.online-index .box.box-user { | |||||
height: 150px; | |||||
} | |||||
/* line 10, ../sass/online-admin/_index.scss */ | |||||
.online-index .box.box-producer { | |||||
height: 250px; | height: 250px; | ||||
} | } | ||||
/* line 6, ../sass/producer-admin/_online.scss */ | |||||
.producer-admin-online .box .profile-username { | |||||
/* line 14, ../sass/online-admin/_index.scss */ | |||||
.online-index .box .profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | font-family: 'Source Sans Pro',sans-serif; | ||||
font-weight: normal; | font-weight: normal; | ||||
font-size: 18px; | font-size: 18px; | ||||
} | } | ||||
/* line 19, ../sass/online-admin/_index.scss */ | |||||
.online-index .box .profile-username a { | |||||
color: #333; | |||||
} | |||||
/* line 4, ../sass/feature-admin/_index.scss */ | /* line 4, ../sass/feature-admin/_index.scss */ | ||||
.feature-admin-index table th.only-for-selected-producers, | .feature-admin-index table th.only-for-selected-producers, |
.online-index { | |||||
.box { | |||||
overflow: hidden; | |||||
&.box-user { | |||||
height: 150px; | |||||
} | |||||
&.box-producer { | |||||
height: 250px; | |||||
} | |||||
.profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | |||||
font-weight: normal; | |||||
font-size: 18px; | |||||
a { | |||||
color: #333; | |||||
} | |||||
} | |||||
} | |||||
} |
.producer-admin-online { | |||||
.box { | |||||
height: 250px; | |||||
.profile-username { | |||||
font-family: 'Source Sans Pro',sans-serif; | |||||
font-weight: normal; | |||||
font-size: 18px; | |||||
} | |||||
} | |||||
} |
@import "support/_index.scss"; | @import "support/_index.scss"; | ||||
@import "support/_view.scss"; | @import "support/_view.scss"; | ||||
@import "producer-admin/_index.scss"; | @import "producer-admin/_index.scss"; | ||||
@import "producer-admin/_online.scss"; | |||||
@import "online-admin/_index.scss"; | |||||
@import "feature-admin/_index.scss"; | @import "feature-admin/_index.scss"; | ||||
@import "setting/_form.scss"; | @import "setting/_form.scss"; | ||||
@import "_responsive.scss" ; | @import "_responsive.scss" ; |
var $icon; | var $icon; | ||||
var $page_title ; | var $page_title ; | ||||
var $buttons ; | var $buttons ; | ||||
var $metaRefresh = false; | |||||
public function getLogic() | public function getLogic() | ||||
{ | { | ||||
]); | ]); | ||||
} | } | ||||
public function setMetaRefresh(bool $active) | |||||
{ | |||||
$this->metaRefresh = $active; | |||||
} | |||||
public function getUrlManagerFrontend() | public function getUrlManagerFrontend() | ||||
{ | { | ||||
return \Yii::$app->urlManagerFrontend; | return \Yii::$app->urlManagerFrontend; |
$ticketsArray = $this->createQuery()->find(); | $ticketsArray = $this->createQuery()->find(); | ||||
return $this->ticketSolver->countTicketsUnreadByUserFromArray($ticketsArray, $user); | return $this->ticketSolver->countTicketsUnreadByUserFromArray($ticketsArray, $user); | ||||
} | } | ||||
public function findTicketsAdminStatusOpen() | |||||
{ | |||||
return $this->createQuery() | |||||
->filterByStatusOpen() | |||||
->find(); | |||||
} | |||||
public function countTicketsAdminStatusOpen() | |||||
{ | |||||
return count($this->findTicketsAdminStatusOpen()); | |||||
} | |||||
} | } |
namespace common\logic\Ticket\Ticket\Repository; | namespace common\logic\Ticket\Ticket\Repository; | ||||
use common\logic\AbstractRepositoryQuery; | use common\logic\AbstractRepositoryQuery; | ||||
use common\logic\Ticket\Ticket\Model\Ticket; | |||||
use common\logic\Ticket\Ticket\Service\TicketDefinition; | use common\logic\Ticket\Ticket\Service\TicketDefinition; | ||||
class TicketRepositoryQuery extends AbstractRepositoryQuery | class TicketRepositoryQuery extends AbstractRepositoryQuery | ||||
{ | { | ||||
$this->loadDefinition(TicketDefinition::class); | $this->loadDefinition(TicketDefinition::class); | ||||
} | } | ||||
public function filterByStatusOpen(): self | |||||
{ | |||||
$this->andWhere(['ticket.status' => Ticket::STATUS_OPEN]); | |||||
return $this; | |||||
} | |||||
} | } |
return $userProducer ? $userProducer->active : false; | return $userProducer ? $userProducer->active : false; | ||||
} | } | ||||
public function findUsersStatusProducerOnline(): array | |||||
public function findUsersWithStatusProducerAndOnline(): array | |||||
{ | { | ||||
return $this->createDefaultQuery() | return $this->createDefaultQuery() | ||||
->isStatusProducer() | ->isStatusProducer() | ||||
public function countUsersStatusProducerOnline(): int | public function countUsersStatusProducerOnline(): int | ||||
{ | { | ||||
return count($this->findUsersStatusProducerOnline()); | |||||
return count($this->findUsersWithStatusProducerAndOnline()); | |||||
} | |||||
public function findUsersWithStatusUserAndOnline(): array | |||||
{ | |||||
return $this->createDefaultQuery() | |||||
->isStatusUser() | |||||
->filterByDateLastConnectionLessThanFewMinutes() | |||||
->find(); | |||||
} | |||||
public function countUsersStatusUserOnline(): int | |||||
{ | |||||
return count($this->findUsersWithStatusUserAndOnline()); | |||||
} | } | ||||
} | } |
return $this->filterByStatus(User::STATUS_PRODUCER); | return $this->filterByStatus(User::STATUS_PRODUCER); | ||||
} | } | ||||
public function isStatusUser(): self | |||||
{ | |||||
return $this->filterByStatus(User::STATUS_ACTIVE); | |||||
} | |||||
public function filterByDateLastConnectionLessThanFewMinutes(): self | public function filterByDateLastConnectionLessThanFewMinutes(): self | ||||
{ | { | ||||
$date = new \DateTime('-5 minutes'); | $date = new \DateTime('-5 minutes'); |