From 69023ef81e231b4a8028176cbb8873f00f58f366 Mon Sep 17 00:00:00 2001 From: Ricardo Paes Date: Sun, 27 Feb 2022 00:52:17 -0300 Subject: [PATCH] :sparkles: In the transfer modal also have the option to transfer to another whatsapp --- .../TicketServices/UpdateTicketService.ts | 4 +++ .../src/components/TicketOptionsMenu/index.js | 1 + .../components/TransferTicketModal/index.js | 33 +++++++++++++++++-- frontend/src/rules.js | 1 + frontend/src/translate/languages/en.js | 2 ++ frontend/src/translate/languages/es.js | 2 ++ frontend/src/translate/languages/pt.js | 2 ++ 7 files changed, 43 insertions(+), 2 deletions(-) diff --git a/backend/src/services/TicketServices/UpdateTicketService.ts b/backend/src/services/TicketServices/UpdateTicketService.ts index 950cf20..8cac249 100644 --- a/backend/src/services/TicketServices/UpdateTicketService.ts +++ b/backend/src/services/TicketServices/UpdateTicketService.ts @@ -33,6 +33,10 @@ const UpdateTicketService = async ({ const ticket = await ShowTicketService(ticketId); await SetTicketMessagesAsRead(ticket); + if(whatsappId && ticket.whatsappId !== whatsappId) { + await CheckContactOpenTickets(ticket.contactId, whatsappId); + } + const oldStatus = ticket.status; const oldUserId = ticket.user?.id; diff --git a/frontend/src/components/TicketOptionsMenu/index.js b/frontend/src/components/TicketOptionsMenu/index.js index 16591a2..d7bcd56 100644 --- a/frontend/src/components/TicketOptionsMenu/index.js +++ b/frontend/src/components/TicketOptionsMenu/index.js @@ -94,6 +94,7 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => { modalOpen={transferTicketModalOpen} onClose={handleCloseTransferTicketModal} ticketid={ticket.id} + ticketWhatsappId={ticket.whatsappId} /> ); diff --git a/frontend/src/components/TransferTicketModal/index.js b/frontend/src/components/TransferTicketModal/index.js index 67a0910..3fa2f03 100644 --- a/frontend/src/components/TransferTicketModal/index.js +++ b/frontend/src/components/TransferTicketModal/index.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useContext } from "react"; import { useHistory } from "react-router-dom"; import Button from "@material-ui/core/Button"; @@ -23,6 +23,9 @@ import api from "../../services/api"; import ButtonWithSpinner from "../ButtonWithSpinner"; import toastError from "../../errors/toastError"; import useQueues from "../../hooks/useQueues"; +import useWhatsApps from "../../hooks/useWhatsApps"; +import { AuthContext } from "../../context/Auth/AuthContext"; +import { Can } from "../Can"; const useStyles = makeStyles((theme) => ({ maxWidth: { @@ -34,7 +37,7 @@ const filterOptions = createFilterOptions({ trim: true, }); -const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => { +const TransferTicketModal = ({ modalOpen, onClose, ticketid, ticketWhatsappId }) => { const history = useHistory(); const [options, setOptions] = useState([]); const [queues, setQueues] = useState([]); @@ -43,8 +46,12 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => { const [searchParam, setSearchParam] = useState(""); const [selectedUser, setSelectedUser] = useState(null); const [selectedQueue, setSelectedQueue] = useState(''); + const [selectedWhatsapp, setSelectedWhatsapp] = useState(ticketWhatsappId); const classes = useStyles(); const { findAll: findAllQueues } = useQueues(); + const { loadingWhatsapps, whatsApps } = useWhatsApps(); + + const { user: loggedInUser } = useContext(AuthContext); useEffect(() => { const loadQueues = async () => { @@ -107,6 +114,10 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => { } } + if(selectedWhatsapp) { + data.whatsappId = selectedWhatsapp; + } + await api.put(`/tickets/${ticketid}`, data); setLoading(false); @@ -177,6 +188,24 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => { ))} + (!loadingWhatsapps && + + {i18n.t("transferTicketModal.fieldConnectionLabel")} + + + )} + />