<?php

/**
 * Copyright Souke (2018)
 *
 * contact@souke.fr
 *
 * 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 domain\Ticket\Ticket\TicketModule;
use yii\grid\GridView;
use yii\helpers\Html;

/**
 * @var $this common\components\ViewBackend
 */

$userModule = $this->getUserModule();
$ticketModule = TicketModule::getInstance();
$adminSettingBag = $this->getSettingModule()->getAdminSettingBag();
$userCurrent = $this->getUserCurrent();
$this->setTitle('Support & contact');
$this->addBreadcrumb($this->getTitle());

$supportOnline = $adminSettingBag->get('supportOnline');

?>

<div class="support-index">
    <?php if ($context == 'producer'): ?>

        <?= $this->renderFile('@common/views/alert_message.php', [
            'display' => $adminSettingBag->get('adminSupportAlertMessageDisplay'),
            'type' => $adminSettingBag->get('adminSupportAlertMessageType'),
            'title' => $adminSettingBag->get('adminSupportAlertMessageTitle'),
            'icon' => $adminSettingBag->get('adminSupportAlertMessageIcon'),
            'message' => $adminSettingBag->get('adminSupportAlertMessage'),
        ]) ?>

        <div class="callout callout-info">
            <p><i class="icon fa fa-info-circle"></i> Pour toutes vos questions, 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 <?php if ($supportOnline): ?>bg-green<?php else: ?>bg-yellow<?php endif; ?>"><i
                                class="fa fa-phone"></i></span>
                    <div class="info-box-content">
                    <span class="info-box-text">
                        Me contacter directement
                        <?php if ($supportOnline): ?>
                            <br/><span class="label label-success">Disponible</span>
                        <?php endif; ?>
                    </span>
                        <span class="info-box-text">
                        <br/>
                        <strong><?= $adminSettingBag->get('administratorPhoneNumber'); ?></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:' . $adminSettingBag->get('administratorEmail'), ['class' => 'btn btn-sm btn-default']); ?></span>
                    </div>
                </div>
            </div>
            <?php if ($adminSettingBag->get('forumFlarumUrl')): ?>
                <div class="col-md-6 col-left">
                    <div class="info-box">
                        <span class="info-box-icon bg-yellow"><i class="fa fa-users"></i></span>
                        <div class="info-box-content">
                            <span class="info-box-text"><br/><?= Html::a("Ouvrir une discussion sur le forum", $adminSettingBag->get('forumFlarumUrl'), ['class' => 'btn btn-sm btn-default', 'target' => '_blank']); ?></span>
                        </div>
                    </div>
                </div>
            <?php endif; ?>
        </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)
{
    $ticketModule = TicketModule::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 ($ticketModule, $userCurrent) {

            $firstTicketMessageUnread = $ticketModule->getFirstTicketMessageUnread($ticket, $userCurrent);
            if ($ticketModule->isTicketUnread($ticket, $userCurrent) && $firstTicketMessageUnread) {
                $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 ($ticketModule) {
                if ($ticketModule->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);
}

?>
