Файл: upload/pages/tickets/tickets.php
Строк: 49
<?php
require_once ($_SERVER['DOCUMENT_ROOT'] . '/core/core.php');
if (!isset($user['id'])) {
showAlert('Ошибка', 'fail', 'Сперва необходимо авторизоваться');
RedirectToPage('/');
exit();
}
if (isset($_POST['open-ticket'])) {
check_csrf();
$info = chars($_POST['ticket-info']);
$deal = intval($_POST['ticket-deal']);
$tcdeal = 'NULL';
if ($deal > 0) {
$deal_select = FetchAssoc(dbquery("SELECT * FROM `work_processed` WHERE `id` = ? AND (`worker` = ? OR `creator` = ?) AND `stade` = '2'", [$deal, $user['id'], $user['id']]));
if ($deal_select) {
$tcdeal = $deal_select['time_close_work'];
}
}
dbquery("INSERT INTO `tickets` (`deal`, `us`, `stade`, `time_ticket`, `info_ticket`, `support_response`, `time_close_deal`) VALUES (?, ?, '0', ?, ?, '', ?)", [$deal, $user['id'], time(), $info, $tcdeal]);
ReloadPage();
}
if (isset($_POST['close-ticket'])) {
check_csrf();
$ticket_id = intval($_POST['ticket_id']);
$tk = FetchAssoc(dbquery("SELECT * FROM `tickets` WHERE `id` = ? AND `us` = ? AND `stade` = '0'", [$ticket_id, $user['id']]));
if ($tk) {
dbquery("UPDATE `tickets` SET `stade` = '1' WHERE `id` = ?", [$ticket_id]);
}
ReloadPage();
}
$breadcrumbs = generateBreadcrumbs([
['/', 'Главная'],
['#', 'Тикеты']
]);
$query = dbquery("SELECT * FROM `work_processed` WHERE `stade` = '2' AND (`worker` = ? OR `creator` = ?) ORDER BY `id`", [$user['id'], $user['id']]);
// Список сделок для модалки
$dealOptions = '';
while ($dealID = FetchAssoc($query)) {
$dealOptions .= '<option value="' . $dealID['id'] . '">Сделка № ' . $dealID['id'] . '</option>';
}
// Пагинация
$max = 30;
$tickets_num = DataResult(dbquery("SELECT COUNT(*) FROM tickets WHERE us = ?", [$user['id']]), 0);
$k_page = k_page($tickets_num, $max);
$page = page($k_page);
$start = $max * $page - $max;
// Получаем тикеты
$q = dbquery("SELECT * FROM tickets WHERE us = ? ORDER BY id DESC LIMIT ?, ?", [$user['id'], $start, $max]);
$tickets = [];
while ($tk = FetchAssoc($q)) {
$tickets[] = [
'id' => $tk['id'],
'info' => $tk['info_ticket'],
'time' => vremja($tk['time_ticket']),
'status' => TicketStatus($tk['stade']),
'response' => $tk['support_response'] ?: '-',
'closed' => ($tk['stade'] == 1)
];
}
$pagination = '';
if ($k_page > 1) {
$pagination = str(homeLink() . '/tickets?', $k_page, $page);
}
$page_html = $view->render('pages/tickets/tickets.html', [
'breadcrumbs_html' => $breadcrumbs['html'],
'breadcrumbs_json' => $breadcrumbs['json_ld'],
'csrf' => $_SESSION['csrf_token'],
'deals_options' => $dealOptions,
'tickets' => $tickets,
'pagination' => $pagination
]);
require_once ($_SERVER['DOCUMENT_ROOT'] . '/layout.php');
?>
<script>
document.addEventListener('click', function(e) {
let btn = e.target.closest('.open-close-ticket');
if (btn) {
document.getElementById('ticket-id-input').value = btn.dataset.id;
}
});
</script>