added system varible to create ticket and added filter for get messages

This commit is contained in:
Pasha 2024-12-09 14:06:04 +03:00 committed by skeris
parent 5e9e77fc16
commit 7cc01031cd
2 changed files with 17 additions and 2 deletions

@ -46,6 +46,7 @@ func NewTicketController(deps Deps) *TicketController {
type CreateTicketReq struct { type CreateTicketReq struct {
Title string `json:"Title"` Title string `json:"Title"`
Message string `json:"Message"` Message string `json:"Message"`
System bool `json:"System"`
} }
type CreateTicketResp struct { type CreateTicketResp struct {
@ -106,7 +107,7 @@ func (t *TicketController) CreateTicket(ctx *fiber.Ctx) error {
session.Id, session.Id,
ticketID, ticketID,
[]string{}, []string{},
false, // system error flag request.System, // system error flag
); err != nil { ); err != nil {
return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()}) return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
} }
@ -300,12 +301,14 @@ type GetMessagesReq struct {
TicketID string `json:"ticket"` TicketID string `json:"ticket"`
} }
// todo тут стоит фильтровать по system?
func (t *TicketController) GetMessages(ctx *fiber.Ctx) error { func (t *TicketController) GetMessages(ctx *fiber.Ctx) error {
var request GetMessagesReq var request GetMessagesReq
if err := ctx.BodyParser(&request); err != nil { if err := ctx.BodyParser(&request); err != nil {
return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()}) return ctx.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()})
} }
role := jwt_adapter.GetRole(ctx.Context())
result, err := t.dal.GetMessagesPage(ctx.Context(), result, err := t.dal.GetMessagesPage(ctx.Context(),
request.Search, request.Search,
request.TicketID, 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"}) 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) return ctx.Status(fiber.StatusOK).JSON(result)
} }

@ -46,6 +46,8 @@ paths:
Message: Message:
type: string type: string
example: test ticket message example: test ticket message
System:
type: boolean
/subscribe: /subscribe:
get: get:
summary: SSE метод для подписывания на изменения по всем тикетам доступным пользователю summary: SSE метод для подписывания на изменения по всем тикетам доступным пользователю