In the transfer modal also have the option to transfer to another whatsapp

This commit is contained in:
Ricardo Paes
2022-02-27 00:52:17 -03:00
parent 43f2771a93
commit 69023ef81e
7 changed files with 43 additions and 2 deletions

View File

@@ -33,6 +33,10 @@ const UpdateTicketService = async ({
const ticket = await ShowTicketService(ticketId); const ticket = await ShowTicketService(ticketId);
await SetTicketMessagesAsRead(ticket); await SetTicketMessagesAsRead(ticket);
if(whatsappId && ticket.whatsappId !== whatsappId) {
await CheckContactOpenTickets(ticket.contactId, whatsappId);
}
const oldStatus = ticket.status; const oldStatus = ticket.status;
const oldUserId = ticket.user?.id; const oldUserId = ticket.user?.id;

View File

@@ -94,6 +94,7 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => {
modalOpen={transferTicketModalOpen} modalOpen={transferTicketModalOpen}
onClose={handleCloseTransferTicketModal} onClose={handleCloseTransferTicketModal}
ticketid={ticket.id} ticketid={ticket.id}
ticketWhatsappId={ticket.whatsappId}
/> />
</> </>
); );

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect, useContext } from "react";
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
import Button from "@material-ui/core/Button"; import Button from "@material-ui/core/Button";
@@ -23,6 +23,9 @@ import api from "../../services/api";
import ButtonWithSpinner from "../ButtonWithSpinner"; import ButtonWithSpinner from "../ButtonWithSpinner";
import toastError from "../../errors/toastError"; import toastError from "../../errors/toastError";
import useQueues from "../../hooks/useQueues"; import useQueues from "../../hooks/useQueues";
import useWhatsApps from "../../hooks/useWhatsApps";
import { AuthContext } from "../../context/Auth/AuthContext";
import { Can } from "../Can";
const useStyles = makeStyles((theme) => ({ const useStyles = makeStyles((theme) => ({
maxWidth: { maxWidth: {
@@ -34,7 +37,7 @@ const filterOptions = createFilterOptions({
trim: true, trim: true,
}); });
const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => { const TransferTicketModal = ({ modalOpen, onClose, ticketid, ticketWhatsappId }) => {
const history = useHistory(); const history = useHistory();
const [options, setOptions] = useState([]); const [options, setOptions] = useState([]);
const [queues, setQueues] = useState([]); const [queues, setQueues] = useState([]);
@@ -43,8 +46,12 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => {
const [searchParam, setSearchParam] = useState(""); const [searchParam, setSearchParam] = useState("");
const [selectedUser, setSelectedUser] = useState(null); const [selectedUser, setSelectedUser] = useState(null);
const [selectedQueue, setSelectedQueue] = useState(''); const [selectedQueue, setSelectedQueue] = useState('');
const [selectedWhatsapp, setSelectedWhatsapp] = useState(ticketWhatsappId);
const classes = useStyles(); const classes = useStyles();
const { findAll: findAllQueues } = useQueues(); const { findAll: findAllQueues } = useQueues();
const { loadingWhatsapps, whatsApps } = useWhatsApps();
const { user: loggedInUser } = useContext(AuthContext);
useEffect(() => { useEffect(() => {
const loadQueues = async () => { const loadQueues = async () => {
@@ -107,6 +114,10 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => {
} }
} }
if(selectedWhatsapp) {
data.whatsappId = selectedWhatsapp;
}
await api.put(`/tickets/${ticketid}`, data); await api.put(`/tickets/${ticketid}`, data);
setLoading(false); setLoading(false);
@@ -177,6 +188,24 @@ const TransferTicketModal = ({ modalOpen, onClose, ticketid }) => {
))} ))}
</Select> </Select>
</FormControl> </FormControl>
<Can
role={loggedInUser.profile}
perform="ticket-options:transferWhatsapp"
yes={() => (!loadingWhatsapps &&
<FormControl variant="outlined" className={classes.maxWidth} style={{ marginTop: 20 }}>
<InputLabel>{i18n.t("transferTicketModal.fieldConnectionLabel")}</InputLabel>
<Select
value={selectedWhatsapp}
onChange={(e) => setSelectedWhatsapp(e.target.value)}
label={i18n.t("transferTicketModal.fieldConnectionPlaceholder")}
>
{whatsApps.map((whasapp) => (
<MenuItem key={whasapp.id} value={whasapp.id}>{whasapp.name}</MenuItem>
))}
</Select>
</FormControl>
)}
/>
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
<Button <Button

View File

@@ -10,6 +10,7 @@ const rules = {
"user-modal:editProfile", "user-modal:editProfile",
"user-modal:editQueues", "user-modal:editQueues",
"ticket-options:deleteTicket", "ticket-options:deleteTicket",
"ticket-options:transferWhatsapp",
"contacts-page:deleteContact", "contacts-page:deleteContact",
], ],
}, },

View File

@@ -249,7 +249,9 @@ const messages = {
title: "Transfer Ticket", title: "Transfer Ticket",
fieldLabel: "Type to search for users", fieldLabel: "Type to search for users",
fieldQueueLabel: "Transfer to queue", fieldQueueLabel: "Transfer to queue",
fieldConnectionLabel: "Transfer to connection",
fieldQueuePlaceholder: "Please select a queue", fieldQueuePlaceholder: "Please select a queue",
fieldConnectionPlaceholder: "Please select a connection",
noOptions: "No user found with this name", noOptions: "No user found with this name",
buttons: { buttons: {
ok: "Transfer", ok: "Transfer",

View File

@@ -252,7 +252,9 @@ const messages = {
title: "Transferir Ticket", title: "Transferir Ticket",
fieldLabel: "Escriba para buscar usuarios", fieldLabel: "Escriba para buscar usuarios",
fieldQueueLabel: "Transferir a la cola", fieldQueueLabel: "Transferir a la cola",
fieldConnectionLabel: "Transferir to conexión",
fieldQueuePlaceholder: "Seleccione una cola", fieldQueuePlaceholder: "Seleccione una cola",
fieldConnectionPlaceholder: "Seleccione una conexión",
noOptions: "No se encontraron usuarios con ese nombre", noOptions: "No se encontraron usuarios con ese nombre",
buttons: { buttons: {
ok: "Transferir", ok: "Transferir",

View File

@@ -251,7 +251,9 @@ const messages = {
title: "Transferir Ticket", title: "Transferir Ticket",
fieldLabel: "Digite para buscar usuários", fieldLabel: "Digite para buscar usuários",
fieldQueueLabel: "Transferir para fila", fieldQueueLabel: "Transferir para fila",
fieldConnectionLabel: "Transferir para conexão",
fieldQueuePlaceholder: "Selecione uma fila", fieldQueuePlaceholder: "Selecione uma fila",
fieldConnectionPlaceholder: "Selecione uma conexão",
noOptions: "Nenhum usuário encontrado com esse nome", noOptions: "Nenhum usuário encontrado com esse nome",
buttons: { buttons: {
ok: "Transferir", ok: "Transferir",