Updated the tickets to allow agents to also view theirs
This commit is contained in:
@@ -143,6 +143,7 @@ export default function TicketDisplay({ user, ticket, onClose }: Props) {
|
|||||||
label: `${u.name} - ${u.email}`,
|
label: `${u.name} - ${u.email}`,
|
||||||
})),
|
})),
|
||||||
]}
|
]}
|
||||||
|
disabled={user.type === "agent"}
|
||||||
value={
|
value={
|
||||||
assignedTo
|
assignedTo
|
||||||
? {
|
? {
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ export default function Sidebar({
|
|||||||
isMinimized={isMinimized}
|
isMinimized={isMinimized}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{["admin", "developer"].includes(userType || "") && (
|
{["admin", "developer", "agent"].includes(userType || "") && (
|
||||||
<Nav
|
<Nav
|
||||||
disabled={disableNavigation}
|
disabled={disableNavigation}
|
||||||
Icon={BsClipboardData}
|
Icon={BsClipboardData}
|
||||||
|
|||||||
@@ -44,7 +44,10 @@ export const getServerSideProps = withIronSessionSsr(({ req, res }) => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldRedirectHome(user) || user.type !== "developer") {
|
if (
|
||||||
|
shouldRedirectHome(user) ||
|
||||||
|
["admin", "developer", "agent"].includes(user.type)
|
||||||
|
) {
|
||||||
res.setHeader("location", "/");
|
res.setHeader("location", "/");
|
||||||
res.statusCode = 302;
|
res.statusCode = 302;
|
||||||
res.end();
|
res.end();
|
||||||
@@ -93,6 +96,8 @@ export default function Tickets() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const filters = [];
|
const filters = [];
|
||||||
|
if (user?.type === "agent")
|
||||||
|
filters.push((x: Ticket) => x.assignedTo === user.id);
|
||||||
if (typeFilter) filters.push((x: Ticket) => x.type === typeFilter);
|
if (typeFilter) filters.push((x: Ticket) => x.type === typeFilter);
|
||||||
if (statusFilter) filters.push((x: Ticket) => x.status === statusFilter);
|
if (statusFilter) filters.push((x: Ticket) => x.status === statusFilter);
|
||||||
if (assigneeFilter)
|
if (assigneeFilter)
|
||||||
@@ -101,7 +106,7 @@ export default function Tickets() {
|
|||||||
setFilteredTickets(
|
setFilteredTickets(
|
||||||
[...filters.reduce((d, f) => d.filter(f), tickets)].sort(sortByDate),
|
[...filters.reduce((d, f) => d.filter(f), tickets)].sort(sortByDate),
|
||||||
);
|
);
|
||||||
}, [tickets, typeFilter, statusFilter, assigneeFilter, dateSorting]);
|
}, [tickets, typeFilter, statusFilter, assigneeFilter, dateSorting, user]);
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
columnHelper.accessor("id", {
|
columnHelper.accessor("id", {
|
||||||
@@ -170,6 +175,23 @@ export default function Tickets() {
|
|||||||
}),
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const getAssigneeValue = () => {
|
||||||
|
if (user && user.type === "agent")
|
||||||
|
return { value: user.id, label: `${user.name} - ${user.email}` };
|
||||||
|
|
||||||
|
if (assigneeFilter) {
|
||||||
|
const assigneeUser = users.find((x) => x.id === assigneeFilter);
|
||||||
|
return assigneeUser
|
||||||
|
? {
|
||||||
|
value: assigneeFilter,
|
||||||
|
label: `${assigneeUser.name} - ${assigneeUser.email}`,
|
||||||
|
}
|
||||||
|
: null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
const table = useReactTable({
|
const table = useReactTable({
|
||||||
data: filteredTickets,
|
data: filteredTickets,
|
||||||
columns: columns,
|
columns: columns,
|
||||||
@@ -265,20 +287,16 @@ export default function Tickets() {
|
|||||||
options={[
|
options={[
|
||||||
{ value: "me", label: "Assigned to me" },
|
{ value: "me", label: "Assigned to me" },
|
||||||
...users
|
...users
|
||||||
.filter((x) => ["admin", "developer"].includes(x.type))
|
.filter((x) =>
|
||||||
|
["admin", "developer", "agent"].includes(x.type),
|
||||||
|
)
|
||||||
.map((u) => ({
|
.map((u) => ({
|
||||||
value: u.id,
|
value: u.id,
|
||||||
label: `${u.name} - ${u.email}`,
|
label: `${u.name} - ${u.email}`,
|
||||||
})),
|
})),
|
||||||
]}
|
]}
|
||||||
value={
|
disabled={user.type === "agent"}
|
||||||
assigneeFilter
|
value={getAssigneeValue()}
|
||||||
? {
|
|
||||||
value: assigneeFilter,
|
|
||||||
label: `${users.find((u) => u.id === assigneeFilter)?.name} - ${users.find((u) => u.id === assigneeFilter)?.email}`,
|
|
||||||
}
|
|
||||||
: null
|
|
||||||
}
|
|
||||||
onChange={(value) =>
|
onChange={(value) =>
|
||||||
value
|
value
|
||||||
? setAssigneeFilter(
|
? setAssigneeFilter(
|
||||||
|
|||||||
Reference in New Issue
Block a user