From 11f429329ba8f51fe4252c21d50d7d65abd5fde2 Mon Sep 17 00:00:00 2001 From: canove Date: Sun, 27 Sep 2020 09:17:10 -0300 Subject: [PATCH] improvement: block open another ticket from same contact when already a open / pending ticket --- backend/src/helpers/CheckContactOpenTickets.ts | 17 +++++++++++++++++ .../TicketServices/CreateTicketService.ts | 3 +++ 2 files changed, 20 insertions(+) create mode 100644 backend/src/helpers/CheckContactOpenTickets.ts diff --git a/backend/src/helpers/CheckContactOpenTickets.ts b/backend/src/helpers/CheckContactOpenTickets.ts new file mode 100644 index 0000000..0ebd556 --- /dev/null +++ b/backend/src/helpers/CheckContactOpenTickets.ts @@ -0,0 +1,17 @@ +import { Op } from "sequelize"; +import AppError from "../errors/AppError"; +import Ticket from "../models/Ticket"; + +const CheckContactOpenTickets = async (contactId: number): Promise => { + const ticket = await Ticket.findOne({ + where: { contactId, status: { [Op.or]: ["open", "pending"] } } + }); + + if (ticket) { + throw new AppError( + "There's already an open or pending ticket for this contact." + ); + } +}; + +export default CheckContactOpenTickets; diff --git a/backend/src/services/TicketServices/CreateTicketService.ts b/backend/src/services/TicketServices/CreateTicketService.ts index 9131669..5abffdd 100644 --- a/backend/src/services/TicketServices/CreateTicketService.ts +++ b/backend/src/services/TicketServices/CreateTicketService.ts @@ -1,4 +1,5 @@ import AppError from "../../errors/AppError"; +import CheckContactOpenTickets from "../../helpers/CheckContactOpenTickets"; import GetDefaultWhatsApp from "../../helpers/GetDefaultWhatsApp"; import Ticket from "../../models/Ticket"; @@ -19,6 +20,8 @@ const CreateTicketService = async ({ throw new AppError("No default WhatsApp found. Check Connection page."); } + await CheckContactOpenTickets(contactId); + const { id }: Ticket = await defaultWhatsapp.$create("ticket", { contactId, status,