|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <?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\logic\Ticket\Ticket\Model\Ticket;
- use common\logic\Ticket\Ticket\Wrapper\TicketManager;
- use yii\helpers\Html;
- use yii\grid\GridView;
-
- $ticketManager = TicketManager::getInstance();
- $userCurrent = $this->getUserCurrent();
- $this->setTitle('Support');
- $this->addBreadcrumb($this->getTitle());
-
- ?>
-
- <div class="support-index">
- <?php if($context == 'producer'): ?>
- <div>
- <div class="col-md-4">
- <div class="info-box">
- <span class="info-box-icon bg-yellow"><i class="fa fa-phone"></i></span>
- <div class="info-box-content">
- <span class="info-box-text">Me contacter directement</span>
- <span class="info-box-text">
- <br/>
- <strong><?= Yii::$app->parameterBag->get('adminPhoneNumber'); ?></strong>
- </span>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div class="info-box">
- <span class="info-box-icon bg-yellow"><i class="fa fa-calendar"></i></span>
- <div class="info-box-content">
- <span class="info-box-text"><br/>
- <?= Html::a('Prendre rendez-vous', Yii::$app->parameterBag->get('appointmentUrl'), ['class' => 'btn btn-sm btn-default', 'target' => '_blank']); ?>
- </span>
- </div>
- </div>
- </div>
- <div class="col-md-4">
- <div class="info-box">
- <span class="info-box-icon bg-yellow"><i class="fa fa-comments"></i></span>
- <div class="info-box-content">
- <span class="info-box-text"><br/><?= Html::a('Ouvrir un ticket', ['support/create'], ['class' => 'btn btn-sm btn-default']); ?></span>
- </div>
- </div>
- </div>
- </div>
- <div class="clr"></div>
- <?php endif; ?>
-
- <div class="nav-tabs-custom ticket-list">
- <ul class="nav nav-tabs pull-right">
- <li><a href="#tab_2-2" data-toggle="tab">Fermés <span
- class="label label-default"><?= $dataProviderTicketClosed->totalCount ?></span></a></li>
- <li class="active"><a href="#tab_1-1" data-toggle="tab">Ouverts <span
- class="label label-default"><?= $dataProviderTicketOpen->totalCount ?></span></a></li>
- <li class="pull-left header"><i class="fa fa-comments"></i> Tickets</li>
- </ul>
- <div class="tab-content">
- <div class="tab-pane active" id="tab_1-1">
- <?= ticketList($context, $searchTicket, $dataProviderTicketOpen, $userCurrent); ?>
- </div>
- <div class="tab-pane" id="tab_2-2">
- <?= ticketList($context, $searchTicket, $dataProviderTicketClosed, $userCurrent); ?>
- </div>
- </div>
- </div>
- </div>
-
- <?php
-
- function ticketList($context, $searchTicket, $dataProviderTicket, $userCurrent)
- {
- $ticketManager = TicketManager::getInstance();
-
- $columnCreatedAt = [
- 'attribute' => 'created_at',
- 'headerOptions' => ['class' => 'td-created-at column-hide-on-mobile'],
- 'value' => function ($ticket) {
- return date('d/m/Y', strtotime($ticket->created_at));
- }
- ];
- $columnSubject = [
- 'attribute' => 'subject',
- 'headerOptions' => ['class' => 'td-subject'],
- 'format' => 'raw',
- 'value' => function ($ticket) use ($ticketManager, $userCurrent) {
-
- if($ticketManager->isTicketUnread($ticket, $userCurrent)) {
- $firstTicketMessageUnread = $ticketManager->getFirstTicketMessageUnread($ticket, $userCurrent);
- $link = '<strong>'.Html::a($ticket->subject, ['view', 'id' => $ticket->id, '#' => $firstTicketMessageUnread->id]).'</strong>';
- }
- else {
- $link = Html::a($ticket->subject, ['view', 'id' => $ticket->id]);
- }
-
- return $link;
- }
- ];
- $columnLastMessage = [
- 'label' => 'Dernier message',
- 'headerOptions' => ['class' => 'td-last-message column-hide-on-mobile'],
- 'value' => function ($ticket) {
- $ticketMessages = $ticket->ticketMessages;
- if ($ticketMessages && is_array($ticketMessages)) {
- $lastTicketMessage = end($ticketMessages);
- $origin = date_create(date('Y-m-d', strtotime($lastTicketMessage->created_at)));
- $target = date_create();
- $interval = date_diff($origin, $target);
- $days = (int)$interval->format('%R%a');
-
- if ($days == 0) {
- return "Aujourd'hui";
- } elseif ($days == 1) {
- return "Hier";
- } else {
- return $days . ' jours';
- }
- }
-
- return '';
- }
- ];
- $columnMessages = [
- 'label' => 'Messages',
- 'headerOptions' => ['class' => 'td-messages column-hide-on-mobile'],
- 'value' => function ($ticket) {
- return count($ticket->ticketMessages);
- }
- ];
- $columnButtonActions = [
- 'class' => 'yii\grid\ActionColumn',
- 'template' => '{view} {close-open}',
- 'headerOptions' => ['class' => 'column-actions'],
- 'contentOptions' => ['class' => 'column-actions'],
- 'buttons' => [
- 'view' => function ($url, $ticket) {
- $url = ['view', 'id' => $ticket->id];
- return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [
- 'title' => 'Voir le ticket', 'class' => 'btn btn-default'
- ]);
- },
- 'close-open' => function ($url, $ticket) use ($ticketManager) {
- if ($ticketManager->isTicketOpen($ticket)) {
- $title = 'Fermer';
- $url = ['close', 'id' => $ticket->id];
- $glyphicon = 'glyphicon-folder-close';
- } else {
- $title = 'Ré-ouvrir';
- $url = ['open', 'id' => $ticket->id];
- $glyphicon = 'glyphicon-folder-open';
- }
- return Html::a('<span class="glyphicon ' . $glyphicon . '"></span>', $url, [
- 'title' => $title, 'class' => 'btn btn-default'
- ]);
- }
- ],
- ];
- $columnProducer = [
- 'attribute' => 'id_producer',
- 'headerOptions' => ['class' => 'td-producer'],
- 'value' => function ($ticket) {
- return $ticket->producer->name;
- }
- ];
-
- if($context == 'producer') {
- $columns = [
- $columnCreatedAt,
- $columnSubject,
- $columnLastMessage,
- $columnMessages,
- $columnButtonActions
- ];
- }
- elseif($context == 'admin') {
- $columns = [
- $columnCreatedAt,
- $columnProducer,
- $columnSubject,
- $columnLastMessage,
- $columnMessages,
- $columnButtonActions
- ];
- }
-
-
- $optionsGridView = [
- 'summary' => '',
- 'filterModel' => $searchTicket,
- 'dataProvider' => $dataProviderTicket,
- 'columns' => $columns,
- ];
-
- return GridView::widget($optionsGridView);
- }
-
- ?>
|