From 7cc01031cd0184846808c165913671633656c1f6 Mon Sep 17 00:00:00 2001 From: Pasha Date: Mon, 9 Dec 2024 14:06:04 +0300 Subject: [PATCH] added system varible to create ticket and added filter for get messages --- internal/controllers/tickets/tickets.go | 17 +++++++++++++++-- openapi.yaml | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/internal/controllers/tickets/tickets.go b/internal/controllers/tickets/tickets.go index 7be7d8e..40ff166 100644 --- a/internal/controllers/tickets/tickets.go +++ b/internal/controllers/tickets/tickets.go @@ -46,6 +46,7 @@ func NewTicketController(deps Deps) *TicketController { type CreateTicketReq struct { Title string `json:"Title"` Message string `json:"Message"` + System bool `json:"System"` } type CreateTicketResp struct { @@ -106,7 +107,7 @@ func (t *TicketController) CreateTicket(ctx *fiber.Ctx) error { session.Id, ticketID, []string{}, - false, // system error flag + request.System, // system error flag ); err != nil { return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()}) } @@ -300,12 +301,14 @@ type GetMessagesReq struct { TicketID string `json:"ticket"` } -// todo тут стоит фильтровать по system? func (t *TicketController) GetMessages(ctx *fiber.Ctx) error { var request GetMessagesReq if err := ctx.BodyParser(&request); err != nil { return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) } + + role := jwt_adapter.GetRole(ctx.Context()) + result, err := t.dal.GetMessagesPage(ctx.Context(), request.Search, request.TicketID, @@ -316,6 +319,16 @@ func (t *TicketController) GetMessages(ctx *fiber.Ctx) error { return ctx.Status(fiber.StatusNoContent).JSON(fiber.Map{"error": "No Content"}) } + if role != "admin" { + var filtered []model.Message + for _, message := range result { + if !message.System { // исключаем системные сообщения + filtered = append(filtered, message) + } + } + result = filtered + } + return ctx.Status(fiber.StatusOK).JSON(result) } diff --git a/openapi.yaml b/openapi.yaml index 8dfa786..b40c78a 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -46,6 +46,8 @@ paths: Message: type: string example: test ticket message + System: + type: boolean /subscribe: get: summary: SSE метод для подписывания на изменения по всем тикетам доступным пользователю