From 2594c6a3151f30febb466b81ca1619ffa5dce09d Mon Sep 17 00:00:00 2001 From: Nurfog Date: Mon, 14 Sep 2026 15:35:30 -0300 Subject: [PATCH] feat: vistas y botones de tickets solo para equipo --- frontend/src/app/(app)/tickets/[id]/page.tsx | 5 +++++ frontend/src/app/(app)/tickets/page.tsx | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/(app)/tickets/[id]/page.tsx b/frontend/src/app/(app)/tickets/[id]/page.tsx index e3628d7..cea699e 100644 --- a/frontend/src/app/(app)/tickets/[id]/page.tsx +++ b/frontend/src/app/(app)/tickets/[id]/page.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { useParams } from "next/navigation"; +import { useAuth } from "@/lib/auth"; import { getTicket, getComments, @@ -30,6 +31,8 @@ const STATUS_OPTIONS = [ export default function TicketDetailPage() { const params = useParams(); const id = Number(params.id); + const { user } = useAuth(); + const isTeam = user?.role === "admin" || user?.role === "agent"; const [ticket, setTicket] = useState(null); const [comments, setComments] = useState([]); @@ -165,6 +168,7 @@ export default function TicketDetailPage() { + {isTeam && (
{/* Status Change (dropdown controlado por React: sin bootstrap.js) */}
@@ -262,6 +266,7 @@ export default function TicketDetailPage() { )}
+ )} {error && ( diff --git a/frontend/src/app/(app)/tickets/page.tsx b/frontend/src/app/(app)/tickets/page.tsx index 334579b..4a18929 100644 --- a/frontend/src/app/(app)/tickets/page.tsx +++ b/frontend/src/app/(app)/tickets/page.tsx @@ -24,6 +24,7 @@ export default function TicketsPage() { const numericId = parseInt(user?.idUsuario ?? "", 10); const hasNumericId = !isNaN(numericId); + const isTeam = user?.role === "admin" || user?.role === "agent"; const fetchTickets = useCallback(async () => { setLoading(true); @@ -31,7 +32,7 @@ export default function TicketsPage() { const data = await getTickets({ status: statusFilter || undefined, priority: priorityFilter || undefined, - requesterId: view === "mine" && hasNumericId ? numericId : undefined, + requesterId: view === "mine" || !isTeam ? (hasNumericId ? numericId : undefined) : undefined, assigneeId: view === "assigned" && hasNumericId ? numericId @@ -50,7 +51,7 @@ export default function TicketsPage() { } finally { setLoading(false); } - }, [statusFilter, priorityFilter, search, page, view, numericId, hasNumericId]); + }, [statusFilter, priorityFilter, search, page, view, numericId, hasNumericId, isTeam]); useEffect(() => { fetchTickets(); @@ -69,6 +70,7 @@ export default function TicketsPage() { {/* Filters */} + {isTeam ? (
{( @@ -93,6 +95,11 @@ export default function TicketsPage() { ))}
+ ) : ( +
+ Mis tickets +
+ )}