2022-07-25 18:18:27 +00:00
|
|
|
import React from "react";
|
|
|
|
|
2022-07-25 21:38:21 +00:00
|
|
|
import TicketsManagerStyled from "./TicketsManager.style";
|
|
|
|
import TicketsTabs from "./TicketsTabs/TicketsTabs";
|
2022-07-26 20:51:57 +00:00
|
|
|
import TicketsList from "./TicketsList/TicketsList";
|
2022-07-25 21:38:21 +00:00
|
|
|
import NewTicketModal from "../../NewTicketModal";
|
2022-07-25 18:18:27 +00:00
|
|
|
|
|
|
|
import { AuthContext } from "../../../context/Auth/AuthContext";
|
2022-07-26 20:51:57 +00:00
|
|
|
import TicketSearch from "../TicketSearch/TicketSearch";
|
2022-07-25 18:18:27 +00:00
|
|
|
|
|
|
|
const TicketsManager = () => {
|
|
|
|
const [valueTab, setValueTab] = React.useState("open");
|
|
|
|
const [searchParam, setSearchParam] = React.useState("");
|
|
|
|
|
|
|
|
const [newTicketModalOpen, setNewTicketModalOpen] = React.useState(false);
|
|
|
|
const [showAllTickets, setShowAllTickets] = React.useState(false);
|
|
|
|
const { user } = React.useContext(AuthContext);
|
|
|
|
|
|
|
|
const userQueueIds = user.queues.map((q) => q.id);
|
|
|
|
const [selectedQueueIds, setSelectedQueueIds] = React.useState(userQueueIds || []);
|
|
|
|
|
|
|
|
let searchTimeout;
|
|
|
|
const handleSearch = (e) => {
|
|
|
|
const searchedTerm = e.target.value.toLowerCase();
|
|
|
|
|
|
|
|
clearTimeout(searchTimeout);
|
|
|
|
|
|
|
|
if (searchedTerm === "") {
|
|
|
|
setSearchParam(searchedTerm);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
searchTimeout = setTimeout(() => {
|
|
|
|
setSearchParam(searchedTerm);
|
|
|
|
}, 200);
|
|
|
|
};
|
|
|
|
|
|
|
|
React.useEffect(() => {
|
|
|
|
if (user.profile.toUpperCase() === "ADMIN") {
|
|
|
|
setShowAllTickets(true);
|
|
|
|
}
|
|
|
|
}, [user.profile]);
|
|
|
|
return (
|
|
|
|
<TicketsManagerStyled>
|
2022-07-26 20:51:57 +00:00
|
|
|
|
2022-07-25 18:18:27 +00:00
|
|
|
<TicketsTabs setValueTab={setValueTab} valueTab={valueTab} />
|
2022-07-26 20:51:57 +00:00
|
|
|
<TicketSearch handleSearch={handleSearch} setNewTicketModalOpen={setNewTicketModalOpen}/>
|
2022-07-25 21:38:21 +00:00
|
|
|
<TicketsList
|
2022-07-26 20:51:57 +00:00
|
|
|
showAll={showAllTickets}
|
2022-07-25 21:38:21 +00:00
|
|
|
status={valueTab}
|
|
|
|
selectedQueueIds={selectedQueueIds}
|
|
|
|
searchParam={searchParam}
|
|
|
|
/>
|
|
|
|
|
2022-07-25 18:18:27 +00:00
|
|
|
<NewTicketModal
|
|
|
|
modalOpen={newTicketModalOpen}
|
|
|
|
onClose={(e) => setNewTicketModalOpen(false)}
|
|
|
|
/>
|
|
|
|
</TicketsManagerStyled>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default TicketsManager;
|