diff --git a/Web/Presenters/SupportPresenter.php b/Web/Presenters/SupportPresenter.php index c9267b18..1b930e88 100644 --- a/Web/Presenters/SupportPresenter.php +++ b/Web/Presenters/SupportPresenter.php @@ -169,6 +169,13 @@ final class SupportPresenter extends OpenVKPresenter $_redirect = "/support?act=list"; } + $helpdeskChat = OPENVK_ROOT_CONF["openvk"]["credentials"]["telegram"]["helpdeskChat"]; + if ($helpdeskChat) { + $serverUrl = ovk_scheme(true) . $_SERVER["SERVER_NAME"]; + $telegramText = "❌ Тикет под названием "{$ticket->getName()}" от {$ticket->getUser()->getCanonicalName()} ({$ticket->getUser()->getRegistrationIP()}) был удалён.\n"; + Telegram::send($helpdeskChat, $telegramText); + } + $ticket->delete(); $this->redirect($_redirect); } @@ -200,6 +207,16 @@ final class SupportPresenter extends OpenVKPresenter $comment->setCreated(time()); $comment->save(); + $helpdeskChat = OPENVK_ROOT_CONF["openvk"]["credentials"]["telegram"]["helpdeskChat"]; + if ($helpdeskChat) { + $serverUrl = ovk_scheme(true) . $_SERVER["SERVER_NAME"]; + $commentText = ovk_proc_strtr($this->postParam("text"), 1500); + $telegramText = "💬 Новый комментарий от автора тикета "{$ticket->getName()}"\n"; + $telegramText .= "$commentText\n\n"; + $telegramText .= "Автор: {$ticket->getUser()->getCanonicalName()} ({$ticket->getUser()->getRegistrationIP()})\n"; + Telegram::send($helpdeskChat, $telegramText); + } + $this->redirect("/support/view/" . $id); } else { $this->flashFail("err", tr("error"), tr("you_have_not_entered_text")); @@ -227,15 +244,33 @@ final class SupportPresenter extends OpenVKPresenter { $this->assertPermission('openvk\Web\Models\Entities\TicketReply', 'write', 0); + $support_names = new SupportAgents(); + $agent = $support_names->get($this->user->id); $ticket = $this->tickets->get($id); if ($_SERVER["REQUEST_METHOD"] === "POST") { $this->willExecuteWriteAction(); + $helpdeskChat = OPENVK_ROOT_CONF["openvk"]["credentials"]["telegram"]["helpdeskChat"]; + if (!empty($this->postParam("text")) && !empty($this->postParam("status"))) { - $ticket->setType($this->postParam("status")); + $status = $this->postParam("status"); + $ticket->setType($status); $ticket->save(); + switch ($status) { + default: + # NOTICE falling through + case 0: + $state = "Вопрос на рассмотрении"; + break; + case 1: + $state = "Есть ответ"; + break; + case 2: + $state = "Закрыто"; + } + $comment = new TicketComment(); $comment->setUser_id($this->user->id); $comment->setUser_type(1); @@ -243,9 +278,40 @@ final class SupportPresenter extends OpenVKPresenter $comment->setTicket_Id($id); $comment->setCreated(time()); $comment->save(); + + if ($helpdeskChat) { + $serverUrl = ovk_scheme(true) . $_SERVER["SERVER_NAME"]; + $commentText = ovk_proc_strtr($this->postParam("text"), 1500); + $telegramText = "💬 Новый комментарий от агента к тикету "{$ticket->getName()}"\n"; + $telegramText .= "Статус: {$state}\n\n"; + $telegramText .= "$commentText\n\n"; + $telegramText .= "Агент: user->id}'>{$agent->getCanonicalName()} ({$agent->getRealName()})\n"; + Telegram::send($helpdeskChat, $telegramText); + } } elseif (empty($this->postParam("text"))) { - $ticket->setType($this->postParam("status")); + $status = $this->postParam("status"); + $ticket->setType($status); $ticket->save(); + + switch ($status) { + default: + # NOTICE falling through + case 0: + $state = "Вопрос на рассмотрении"; + break; + case 1: + $state = "Есть ответ"; + break; + case 2: + $state = "Закрыто"; + } + + if ($helpdeskChat) { + $serverUrl = ovk_scheme(true) . $_SERVER["SERVER_NAME"]; + $telegramText = "🔔 Изменён статус тикета "{$ticket->getName()}": {$state}\n\n"; + $telegramText .= "Агент: user->id}'>{$agent->getCanonicalName()} ({$agent->getRealName()})\n"; + Telegram::send($helpdeskChat, $telegramText); + } } $this->flashFail("succ", tr("ticket_changed"), tr("ticket_changed_comment")); @@ -442,6 +508,13 @@ final class SupportPresenter extends OpenVKPresenter $ticket->setType(2); $ticket->save(); + $helpdeskChat = OPENVK_ROOT_CONF["openvk"]["credentials"]["telegram"]["helpdeskChat"]; + if ($helpdeskChat) { + $serverUrl = ovk_scheme(true) . $_SERVER["SERVER_NAME"]; + $telegramText = "🔒 Тикет под названием "{$ticket->getName()}" от {$ticket->getUser()->getCanonicalName()} ({$ticket->getUser()->getRegistrationIP()}) был закрыт автором.\n"; + Telegram::send($helpdeskChat, $telegramText); + } + $this->flashFail("succ", tr("ticket_changed"), tr("ticket_changed_comment")); } }