From 1e6ede7236654329657e8f010f6a5b05c7786acd Mon Sep 17 00:00:00 2001 From: n1rwana Date: Thu, 20 Jul 2023 16:56:26 +0300 Subject: [PATCH] User can close ticket (#879) --- Web/Presenters/SupportPresenter.php | 20 ++++++++++++++++++++ Web/Presenters/templates/Support/View.xml | 13 +++++++++++++ Web/routes.yml | 2 ++ 3 files changed, 35 insertions(+) diff --git a/Web/Presenters/SupportPresenter.php b/Web/Presenters/SupportPresenter.php index c4d729ea..c396b43c 100644 --- a/Web/Presenters/SupportPresenter.php +++ b/Web/Presenters/SupportPresenter.php @@ -396,4 +396,24 @@ final class SupportPresenter extends OpenVKPresenter $this->flashFail("succ", "Успех", "Профиль создан. Теперь пользователи видят Ваши псевдоним и аватарку вместо стандартных аватарки и номера."); } } + + function renderCloseTicket(int $id): void + { + $this->assertUserLoggedIn(); + $this->assertNoCSRF(); + $this->willExecuteWriteAction(); + + $ticket = $this->tickets->get($id); + + if($ticket->isDeleted() === 1 || $ticket->getType() === 2 || $ticket->getUserId() !== $this->user->id) { + header("HTTP/1.1 403 Forbidden"); + header("Location: /support/view/" . $id); + exit; + } + + $ticket->setType(2); + $ticket->save(); + + $this->flashFail("succ", tr("ticket_changed"), tr("ticket_changed_comment")); + } } diff --git a/Web/Presenters/templates/Support/View.xml b/Web/Presenters/templates/Support/View.xml index b239c351..baa20c65 100644 --- a/Web/Presenters/templates/Support/View.xml +++ b/Web/Presenters/templates/Support/View.xml @@ -27,6 +27,14 @@ function errorHandler(id, mark) { document.getElementById("markText-" + id).innerHTML = {_error}; } + + function closeTicket() { + let url = `/support/ticket${{$ticket->getId()}}/close?hash=${{urlencode($csrfToken)}}`; + $.ajax(url, { + error: () => alert("Произошла ошибка"), + success: () => location.reload() + }); + } {if $ticket->isDeleted() == 0} @@ -34,6 +42,11 @@ {$ticket->getName()}
{_status}: {$ticket->getStatus()} + {if $ticket->getType() === 1} +
+ Если у Вас больше нет вопросов, Вы можете закрыть этот тикет. +
+ {/if}
{$ticket->getText()|noescape}

diff --git a/Web/routes.yml b/Web/routes.yml index d1a0e7ae..267c0608 100644 --- a/Web/routes.yml +++ b/Web/routes.yml @@ -35,6 +35,8 @@ routes: handler: "Support->agent" - url: "/support/agent{num}/edit" handler: "Support->editAgent" + - url: "/support/ticket{num}/close" + handler: "Support->closeTicket" - url: "/language" handler: "About->language" - url: "/language/{text}.js"