QueueIntegrationController.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { Request, Response } from "express";
  2. import { getIO } from "../libs/socket";
  3. import CreateQueueIntegrationService from "../services/QueueIntegrationServices/CreateQueueIntegrationService";
  4. import DeleteQueueIntegrationService from "../services/QueueIntegrationServices/DeleteQueueIntegrationService";
  5. import ListQueueIntegrationService from "../services/QueueIntegrationServices/ListQueueIntegrationService";
  6. import ShowQueueIntegrationService from "../services/QueueIntegrationServices/ShowQueueIntegrationService";
  7. import UpdateQueueIntegrationService from "../services/QueueIntegrationServices/UpdateQueueIntegrationService";
  8. type IndexQuery = {
  9. searchParam: string;
  10. pageNumber: string;
  11. };
  12. export const index = async (req: Request, res: Response): Promise<Response> => {
  13. const { searchParam, pageNumber } = req.query as IndexQuery;
  14. const { companyId } = req.user;
  15. const { queueIntegrations, count, hasMore } = await ListQueueIntegrationService({
  16. searchParam,
  17. pageNumber,
  18. companyId
  19. });
  20. return res.status(200).json({ queueIntegrations, count, hasMore });
  21. };
  22. export const store = async (req: Request, res: Response): Promise<Response> => {
  23. const { type, name, projectName, jsonContent, language, urlN8N,
  24. typebotExpires,
  25. typebotKeywordFinish,
  26. typebotSlug,
  27. typebotUnknownMessage,
  28. typebotKeywordRestart,
  29. typebotRestartMessage } = req.body;
  30. const { companyId } = req.user;
  31. const queueIntegration = await CreateQueueIntegrationService({
  32. type, name, projectName, jsonContent, language, urlN8N, companyId,
  33. typebotExpires,
  34. typebotKeywordFinish,
  35. typebotSlug,
  36. typebotUnknownMessage,
  37. typebotKeywordRestart,
  38. typebotRestartMessage
  39. });
  40. const io = getIO();
  41. io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-queueIntegration`, {
  42. action: "create",
  43. queueIntegration
  44. });
  45. return res.status(200).json(queueIntegration);
  46. };
  47. export const show = async (req: Request, res: Response): Promise<Response> => {
  48. const { integrationId } = req.params;
  49. const { companyId } = req.user;
  50. const queueIntegration = await ShowQueueIntegrationService(integrationId, companyId);
  51. return res.status(200).json(queueIntegration);
  52. };
  53. export const update = async (
  54. req: Request,
  55. res: Response
  56. ): Promise<Response> => {
  57. const { integrationId } = req.params;
  58. const integrationData = req.body;
  59. const { companyId } = req.user;
  60. const queueIntegration = await UpdateQueueIntegrationService({ integrationData, integrationId, companyId });
  61. const io = getIO();
  62. io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-queueIntegration`, {
  63. action: "update",
  64. queueIntegration
  65. });
  66. return res.status(201).json(queueIntegration);
  67. };
  68. export const remove = async (
  69. req: Request,
  70. res: Response
  71. ): Promise<Response> => {
  72. const { integrationId } = req.params;
  73. const { companyId } = req.user;
  74. await DeleteQueueIntegrationService(integrationId);
  75. const io = getIO();
  76. io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-queueIntegration`, {
  77. action: "delete",
  78. integrationId: +integrationId
  79. });
  80. return res.status(200).send();
  81. };