added system bool varible
This commit is contained in:
parent
80a89df157
commit
dafb97288f
@ -49,6 +49,7 @@ func NewOtherController(deps Deps) *OtherController {
|
||||
type ReqScreenshot struct {
|
||||
TicketID string `json:"ticket"`
|
||||
Lang string `json:"lang"`
|
||||
System bool `json:"system"`
|
||||
}
|
||||
|
||||
func (o *OtherController) RequestScreenshot(ctx *fiber.Ctx) error {
|
||||
@ -60,6 +61,7 @@ func (o *OtherController) RequestScreenshot(ctx *fiber.Ctx) error {
|
||||
sess.Id,
|
||||
sess.Id,
|
||||
request.TicketID,
|
||||
request.System, // system error flag
|
||||
)
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||
@ -81,6 +83,7 @@ var fileTypeLimits = map[string]int64{
|
||||
|
||||
type PutFileReq struct {
|
||||
Ticket string `json:"ticket"`
|
||||
System bool `json:"system"`
|
||||
}
|
||||
|
||||
type PutFileResp struct {
|
||||
@ -241,6 +244,7 @@ func (o *OtherController) PutFile(ctx *fiber.Ctx) error {
|
||||
sess.Id,
|
||||
req.Ticket,
|
||||
fileIDs,
|
||||
req.System, // system error flag
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
@ -281,8 +285,13 @@ func (o *OtherController) PutFile(ctx *fiber.Ctx) error {
|
||||
userLink = "незарегистрированного пользователя"
|
||||
}
|
||||
|
||||
message := fmt.Sprintf("Вам пришло сообщение от %s сссылка на пользователя с %s, ccылка на чат - %s",
|
||||
userLink, domain, supportLink)
|
||||
var message string
|
||||
if req.System {
|
||||
message = fmt.Sprintf("СИСТЕМНАЯ ОШИБКА! Произошла ошибка в сообщении от %s c %s. Ссылка на чат: %s", userLink, domain, supportLink)
|
||||
} else {
|
||||
message = fmt.Sprintf("Вам пришло сообщение от %s ссылка на пользователя с %s, ссылка на чат - %s",
|
||||
userLink, domain, supportLink)
|
||||
}
|
||||
|
||||
if _, err := o.notifier.Send(tb.ChatID(o.tgChatID), message); err != nil {
|
||||
fmt.Println("CAN NOT NOTIFY", err)
|
||||
|
@ -106,6 +106,7 @@ func (t *TicketController) CreateTicket(ctx *fiber.Ctx) error {
|
||||
session.Id,
|
||||
ticketID,
|
||||
[]string{},
|
||||
false, // system error flag
|
||||
); err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
@ -167,6 +168,7 @@ type ReqPutMessage struct {
|
||||
TicketID string `json:"ticket"`
|
||||
Files []string `json:"files"`
|
||||
Lang string `json:"lang"`
|
||||
System bool `json:"system"`
|
||||
}
|
||||
|
||||
func (t *TicketController) PutMessage(ctx *fiber.Ctx) error {
|
||||
@ -190,6 +192,7 @@ func (t *TicketController) PutMessage(ctx *fiber.Ctx) error {
|
||||
sess.Id,
|
||||
request.TicketID,
|
||||
[]string{},
|
||||
request.System,
|
||||
)
|
||||
if err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
@ -217,8 +220,13 @@ func (t *TicketController) PutMessage(ctx *fiber.Ctx) error {
|
||||
userLink = "незарегистрированного пользователя"
|
||||
}
|
||||
|
||||
message := fmt.Sprintf("Вам пришло сообщение от %s сссылка на пользователя с %s, ссылка на чат - %s",
|
||||
userLink, domain, supportLink)
|
||||
var message string
|
||||
if request.System {
|
||||
message = fmt.Sprintf("СИСТЕМНАЯ ОШИБКА! Произошла ошибка в сообщении от %s c %s. Ссылка на чат: %s", userLink, domain, supportLink)
|
||||
} else {
|
||||
message = fmt.Sprintf("Вам пришло сообщение от %s ссылка на пользователя с %s, ссылка на чат - %s",
|
||||
userLink, domain, supportLink)
|
||||
}
|
||||
|
||||
if _, err := t.notifier.Send(telebot.ChatID(t.tgChatID), message); err != nil {
|
||||
t.zapLogger.Error("CAN NOT NOTIFY", zap.Error(err))
|
||||
@ -291,6 +299,7 @@ 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 {
|
||||
@ -376,7 +385,8 @@ func (t *TicketController) CloseTicket(ctx *fiber.Ctx) error {
|
||||
return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
|
||||
if _, err := t.dal.PutMessage(ctx.Context(), "close", "close", "close", request.TicketID, []string{}); err != nil {
|
||||
// system error flag
|
||||
if _, err := t.dal.PutMessage(ctx.Context(), "close", "close", "close", request.TicketID, []string{}, false); err != nil {
|
||||
return ctx.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"error": err.Error()})
|
||||
}
|
||||
|
||||
@ -477,10 +487,21 @@ func (t *TicketController) userTickets(ctx context.Context, userID string, outpu
|
||||
}
|
||||
|
||||
if data != nil {
|
||||
var filteredData []model.Ticket
|
||||
for _, ticket := range data {
|
||||
if !ticket.TopMessage.System {
|
||||
filteredData = append(filteredData, ticket)
|
||||
}
|
||||
}
|
||||
data = filteredData
|
||||
|
||||
output <- GetTicketsResp{data, count}
|
||||
}
|
||||
|
||||
if err := t.dal.WatchTickets(ctx, userID, func(ticket model.Ticket) error {
|
||||
if ticket.TopMessage.System {
|
||||
return nil
|
||||
}
|
||||
output <- ticket
|
||||
return nil
|
||||
}); err != nil {
|
||||
@ -538,7 +559,9 @@ func (t *TicketController) Subscribe(ctx context.Context) chan interface{} {
|
||||
|
||||
if err := t.dal.WatchMessages(ctx, ticketID,
|
||||
func(message model.Message) error {
|
||||
output <- message
|
||||
if !message.System {
|
||||
output <- message
|
||||
}
|
||||
|
||||
//if err := h.dal.SetShown(ctx, message.ID, sess.Session); err != nil {
|
||||
// fmt.Println("3", err)
|
||||
@ -618,7 +641,9 @@ func (t *TicketController) Subscribe(ctx context.Context) chan interface{} {
|
||||
|
||||
if err := t.dal.WatchMessages(ctx, ticketID,
|
||||
func(message model.Message) error {
|
||||
output <- message
|
||||
if !message.System {
|
||||
output <- message
|
||||
}
|
||||
|
||||
//if err := h.dal.SetShown(ctx, message.ID, sess.Session); err != nil {
|
||||
// fmt.Println("3", err)
|
||||
|
@ -13,6 +13,8 @@ type Message struct {
|
||||
Shown map[string]int `bson:"Shown" json:"shown"`
|
||||
RequestScreenshot string `bson:"RequestScreenshot" json:"request_screenshot"`
|
||||
|
||||
System bool `bson:"System" json:"system"`
|
||||
|
||||
CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
|
||||
}
|
||||
|
||||
@ -28,7 +30,7 @@ type Ticket struct {
|
||||
UserID string `bson:"UserID" json:"user"`
|
||||
SessionID string `bson:"SessionID" json:"sess"`
|
||||
AnswererID string `bson:"AnswererID" json:"ans"`
|
||||
Origin string `bson:"origin" json:"origin"`
|
||||
Origin string `bson:"origin" json:"origin"`
|
||||
|
||||
State string `bson:"State" json:"state"`
|
||||
TopMessage Message `bson:"TopMessage" json:"top_message"`
|
||||
|
@ -128,7 +128,7 @@ func (d *DAL) CreateAccountIndex(ctx context.Context) error {
|
||||
func (d *DAL) PutMessage(
|
||||
ctx context.Context,
|
||||
message, userID, sessionID, ticketID string,
|
||||
files []string,
|
||||
files []string, system bool,
|
||||
) (*model.Message, error) {
|
||||
insertable := model.Message{
|
||||
ID: xid.New().String(),
|
||||
@ -138,6 +138,7 @@ func (d *DAL) PutMessage(
|
||||
Message: message,
|
||||
Files: files,
|
||||
Shown: map[string]int{},
|
||||
System: system,
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
|
||||
@ -186,7 +187,7 @@ func (d *DAL) PutSCResponse(
|
||||
|
||||
func (d *DAL) PutSCRequest(
|
||||
ctx context.Context,
|
||||
userID, sessionID, ticketID string,
|
||||
userID, sessionID, ticketID string, system bool,
|
||||
) (*model.Message, error) {
|
||||
insertable := model.Message{
|
||||
ID: xid.New().String(),
|
||||
@ -197,6 +198,7 @@ func (d *DAL) PutSCRequest(
|
||||
Files: []string{},
|
||||
Shown: map[string]int{},
|
||||
RequestScreenshot: "acquisition",
|
||||
System: system,
|
||||
CreatedAt: time.Now(),
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user