diff --git a/Web/Models/Entities/TicketComment.php b/Web/Models/Entities/TicketComment.php index 472177d1..e85515b9 100644 --- a/Web/Models/Entities/TicketComment.php +++ b/Web/Models/Entities/TicketComment.php @@ -108,5 +108,10 @@ class TicketComment extends RowModel return false; # Кооостыыыль!!! } + function getMark(): int + { + return $this->getRecord()->mark; + } + use Traits\TRichText; } diff --git a/Web/Models/Repositories/TicketComments.php b/Web/Models/Repositories/TicketComments.php index d5d1f07e..f675bf7f 100644 --- a/Web/Models/Repositories/TicketComments.php +++ b/Web/Models/Repositories/TicketComments.php @@ -48,6 +48,16 @@ class TicketComments // { // return $this->toTicket($this->tickets->get($id)); // } + + // We can get comment by it's ID using this function + function get(int $id): TicketComment + { + $comm = $this->comments->where(['id' => $id])->fetch(); + if (!is_null($comm)) + return new TicketComment($comm); + else + return null; + } use \Nette\SmartObject; } diff --git a/Web/Presenters/SupportPresenter.php b/Web/Presenters/SupportPresenter.php index fd30328e..745ab389 100644 --- a/Web/Presenters/SupportPresenter.php +++ b/Web/Presenters/SupportPresenter.php @@ -225,4 +225,36 @@ final class SupportPresenter extends OpenVKPresenter $this->template->heading = $heading; $this->template->content = $parser->parse($content); } + + function renderRateAnswerGood(int $id): void + { + $this->willExecuteWriteAction(); + $this->assertUserLoggedIn(); + + $comment = $this->comments->get($id); + if ($this->user->id === $this->tickets->get($comment->getTicketId()->getUser()->getId())) { + $comment->setMark(1); + $comment->save(); + + $this->flashFail("succ", "Успешно", "Вы оставили положительный отзыв об ответе"); + } else { + $this->flashFail("err", "Ошибка", "Ошибка доступа"); + } + } + + function renderRateAnswerBad(int $id): void + { + $this->willExecuteWriteAction(); + $this->assertUserLoggedIn(); + + $comment = $this->comments->get($id); + if ($this->user->id === $this->tickets->get($comment->getTicketId()->getUser()->getId())) { + $comment->setMark(2); + $comment->save(); + + $this->flashFail("succ", "Успешно", "Вы оставили положительный отзыв об ответе"); + } else { + $this->flashFail("err", "Ошибка", "Ошибка доступа"); + } + } } diff --git a/Web/Presenters/templates/Support/AnswerTicket.xml b/Web/Presenters/templates/Support/AnswerTicket.xml index fb1f456c..7b01056d 100644 --- a/Web/Presenters/templates/Support/AnswerTicket.xml +++ b/Web/Presenters/templates/Support/AnswerTicket.xml @@ -109,6 +109,17 @@ {_delete} {/if} + {elseif $comment->getUType() === 1} + {if $comment->getMark() === 1} +
+ {elseif $comment->getMark() === 2} + + {/if} + {/if} diff --git a/Web/Presenters/templates/Support/View.xml b/Web/Presenters/templates/Support/View.xml index 4966f830..f97b2e7a 100644 --- a/Web/Presenters/templates/Support/View.xml +++ b/Web/Presenters/templates/Support/View.xml @@ -95,6 +95,22 @@ {_delete} {/if} + + {if $comment->getUType() === 1 && $comment->getMark() === 0} + + {elseif $comment->getMark() === 1} + + {elseif $comment->getMark() === 2} + + {/if} diff --git a/Web/routes.yml b/Web/routes.yml index 715a8a84..1ec60651 100644 --- a/Web/routes.yml +++ b/Web/routes.yml @@ -17,6 +17,10 @@ routes: handler: "Support->AnswerTicket" - url: "/support/view/{num}" handler: "Support->view" + - url: "/support/comment/{num}/rateGood" + handler: "Support->RateAnswerGood" + - url: "/support/comment/{num}/rateBad" + handler: "Support->RateAnswerBad" - url: "/al_comments.pl/create/support/{num}" handler: "Support->makeComment" - url: "/al_comments.pl/create/support/reply/{num}" diff --git a/install/sqls/00014-helpdesk-answers-evaluvating.sql b/install/sqls/00014-helpdesk-answers-evaluvating.sql new file mode 100644 index 00000000..f771c97b --- /dev/null +++ b/install/sqls/00014-helpdesk-answers-evaluvating.sql @@ -0,0 +1 @@ +ALTER TABLE `tickets_comments` ADD `mark` TINYINT NOT NULL DEFAULT '0'; \ No newline at end of file diff --git a/locales/ru.strings b/locales/ru.strings index 1532df73..a09cfa40 100644 --- a/locales/ru.strings +++ b/locales/ru.strings @@ -577,6 +577,13 @@ "support_new_title" = "Введите тему вашего обращения"; "support_new_content" = "Опишите проблему или предложение"; +"support_rate_good_answer" = "Это хороший ответ"; +"support_rate_bad_answer" = "Это плохой ответ"; +"support_good_answer_user" = "Вы оставили положительный отзыв."; +"support_bad_answer_user" = "Вы оставили негативный отзыв."; +"support_good_answer_agent" = "Пользователь оставил положительный отзыв"; +"support_bad_answer_agent" = "Пользователь оставил негативный отзыв"; + "comment" = "Комментарий"; "sender" = "Отправитель";