From c9750222c04b2dc5ad27f85569f0b9b4ba62c746 Mon Sep 17 00:00:00 2001 From: adriano Date: Mon, 15 Apr 2024 08:12:29 -0300 Subject: [PATCH] feat: Add new field to Tickets table to differentiate campaign tickets --- backend/src/controllers/TicketController.ts | 3 ++- ...14173559-add-column-isRemote-to-tickets.ts | 15 +++++++++++++ ...2-add-enble-filter-media-types-settings.ts | 22 ------------------- backend/src/models/Ticket.ts | 4 ++++ .../FindOrCreateTicketService.ts | 6 +++-- .../TicketServices/UpdateTicketService.ts | 9 +++++--- .../src/components/TicketListItem/index.js | 12 +++++++++- 7 files changed, 42 insertions(+), 29 deletions(-) create mode 100644 backend/src/database/migrations/20240414173559-add-column-isRemote-to-tickets.ts delete mode 100644 backend/src/database/seeds/20240405121812-add-enble-filter-media-types-settings.ts diff --git a/backend/src/controllers/TicketController.ts b/backend/src/controllers/TicketController.ts index 469deea..272bc10 100644 --- a/backend/src/controllers/TicketController.ts +++ b/backend/src/controllers/TicketController.ts @@ -264,7 +264,8 @@ export const remoteTicketCreation = async ( whatsappId, 0, undefined, - queueId + queueId, + true ); botSendMessage(ticket, `${msg}`); } diff --git a/backend/src/database/migrations/20240414173559-add-column-isRemote-to-tickets.ts b/backend/src/database/migrations/20240414173559-add-column-isRemote-to-tickets.ts new file mode 100644 index 0000000..5cbac7e --- /dev/null +++ b/backend/src/database/migrations/20240414173559-add-column-isRemote-to-tickets.ts @@ -0,0 +1,15 @@ +import { QueryInterface, DataTypes } from "sequelize"; + +module.exports = { + up: (queryInterface: QueryInterface) => { + return queryInterface.addColumn("Tickets", "isRemote", { + type: DataTypes.BOOLEAN, + allowNull: true, + defaultValue: false + }); + }, + + down: (queryInterface: QueryInterface) => { + return queryInterface.removeColumn("Tickets", "isRemote"); + } +}; diff --git a/backend/src/database/seeds/20240405121812-add-enble-filter-media-types-settings.ts b/backend/src/database/seeds/20240405121812-add-enble-filter-media-types-settings.ts deleted file mode 100644 index 2e148e7..0000000 --- a/backend/src/database/seeds/20240405121812-add-enble-filter-media-types-settings.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { QueryInterface } from "sequelize"; - -module.exports = { - up: (queryInterface: QueryInterface) => { - return queryInterface.bulkInsert( - "Settings", - [ - { - key: "filterMediasByType", - value: "disabled", - createdAt: new Date(), - updatedAt: new Date() - } - ], - {} - ); - }, - - down: (queryInterface: QueryInterface) => { - return queryInterface.bulkDelete("Settings", {}); - } -}; diff --git a/backend/src/models/Ticket.ts b/backend/src/models/Ticket.ts index 42175c8..71d12dd 100644 --- a/backend/src/models/Ticket.ts +++ b/backend/src/models/Ticket.ts @@ -43,6 +43,10 @@ class Ticket extends Model { @Column isGroup: boolean; + @Default(false) + @Column + isRemote: boolean; + @ForeignKey(() => StatusChatEnd) @Column statusChatEndId: number; diff --git a/backend/src/services/TicketServices/FindOrCreateTicketService.ts b/backend/src/services/TicketServices/FindOrCreateTicketService.ts index 29fe820..fb14349 100644 --- a/backend/src/services/TicketServices/FindOrCreateTicketService.ts +++ b/backend/src/services/TicketServices/FindOrCreateTicketService.ts @@ -14,7 +14,8 @@ const FindOrCreateTicketService = async ( whatsappId: number, unreadMessages: number, groupContact?: Contact, - queueId?: number | string + queueId?: number | string, + isRemote?: boolean ): Promise => { try { let ticket; @@ -106,7 +107,8 @@ const FindOrCreateTicketService = async ( queueId, unreadMessages, whatsappId, - phoneNumberId + phoneNumberId, + isRemote }); } diff --git a/backend/src/services/TicketServices/UpdateTicketService.ts b/backend/src/services/TicketServices/UpdateTicketService.ts index 943015b..545e015 100644 --- a/backend/src/services/TicketServices/UpdateTicketService.ts +++ b/backend/src/services/TicketServices/UpdateTicketService.ts @@ -21,6 +21,7 @@ interface TicketData { statusChatEndId?: number; unreadMessages?: number; whatsappId?: string | number; + isRemote?: boolean; } interface Request { @@ -48,7 +49,8 @@ const UpdateTicketService = async ({ statusChatEnd, unreadMessages, statusChatEndId, - whatsappId + whatsappId, + isRemote } = ticketData; const ticket = await ShowTicketService(ticketId); @@ -68,7 +70,7 @@ const UpdateTicketService = async ({ if (oldStatus === "closed") { await CheckContactOpenTickets(ticket.contact.id, ticket.whatsappId); } - + await ticket.update({ status, queueId, @@ -76,7 +78,8 @@ const UpdateTicketService = async ({ unreadMessages, statusChatEnd, statusChatEndId, - whatsappId + whatsappId, + isRemote }); await ticket.reload(); diff --git a/frontend/src/components/TicketListItem/index.js b/frontend/src/components/TicketListItem/index.js index 60c0fee..ab279cb 100644 --- a/frontend/src/components/TicketListItem/index.js +++ b/frontend/src/components/TicketListItem/index.js @@ -246,7 +246,17 @@ const TicketListItem = ({ ticket }) => { loading={loading} onClick={e => handleAcepptTicket(ticket.id)} > - {i18n.t("ticketsList.buttons.accept")} + {/* {i18n.t("ticketsList.buttons.accept")} */} + <> + {/* {i18n.t("ticketsList.buttons.accept")}
CAMPANHA */} + + {ticket?.isRemote ? ( + <>{i18n.t("ticketsList.buttons.accept")}
CAMPANHA + ) : ( + <>{i18n.t("ticketsList.buttons.accept")} + )} + + )}