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 {
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)
}

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