<?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 & contact'); $this->addBreadcrumb($this->getTitle()); ?> <div class="support-index"> <?php if($context == 'producer'): ?> <div class="callout callout-info"> <p><i class="icon fa fa-info-circle"></i> Pour toutes vos remarques, suggestions et remontées de bugs.</p> </div> <div> <div class="col-md-6 col-left"> <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-6 col-right"> <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-6 col-left"> <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 class="col-md-6 col-right"> <div class="info-box"> <span class="info-box-icon bg-yellow"><i class="fa fa-envelope"></i></span> <div class="info-box-content"> <span class="info-box-text"><br/><?= Html::a("M'envoyer un email", 'mailto:'.Yii::$app->parameterBag->get('adminEmail'), ['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); } ?>