From 60f4e70bbedaddfd610c831631b59cfa38194154 Mon Sep 17 00:00:00 2001 From: Akshay Date: Wed, 12 Nov 2025 17:26:00 +0530 Subject: [PATCH] fix(events): Update event management routing and data handling - Refactor event page routing to include company slug in URLs - Update event edit page to handle API response changes - Modify event links to use dynamic company slug - Adjust event fetching and error handling in edit page - Update dashboard event statistics to filter by approved events - Fix potential routing issues with event management pages --- .../[slug]/events/[eventSlug]/edit/page.tsx | 24 ++++++++++--------- app/dashboard/company/[slug]/events/page.tsx | 2 +- app/dashboard/company/events/page.tsx | 2 +- components/dashboard/CompanyDashboard.tsx | 6 ++++- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app/dashboard/company/[slug]/events/[eventSlug]/edit/page.tsx b/app/dashboard/company/[slug]/events/[eventSlug]/edit/page.tsx index 0639f8a1..fc40af68 100644 --- a/app/dashboard/company/[slug]/events/[eventSlug]/edit/page.tsx +++ b/app/dashboard/company/[slug]/events/[eventSlug]/edit/page.tsx @@ -24,7 +24,8 @@ import { export default function EditEventPage() { const router = useRouter() const params = useParams() - const slug = params.slug as string + const companySlug = params.slug as string + const eventSlug = params.eventSlug as string const { currentCompany, loading: companyLoading } = useCompanyContext() const [event, setEvent] = useState(null) const [loading, setLoading] = useState(true) @@ -33,28 +34,29 @@ export default function EditEventPage() { const fetchEvent = useCallback(async () => { try { setLoading(true) - const response = await fetch(`/api/events/${slug}`) + const response = await fetch(`/api/events/${eventSlug}`) if (!response.ok) { throw new Error('Failed to fetch event') } const data = await response.json() - setEvent(data.event) + // API returns event directly, not wrapped in { event: ... } + setEvent(data) } catch (error) { console.error('Error fetching event:', error) toast.error('Failed to load event') - router.push('/dashboard/company/events') + router.push(`/dashboard/company/${companySlug}/events`) } finally { setLoading(false) } - }, [slug, router]) + }, [eventSlug, companySlug, router]) useEffect(() => { - if (slug) { + if (eventSlug) { fetchEvent() } - }, [slug, fetchEvent]) + }, [eventSlug, fetchEvent]) const handleSuccess = (updatedEvent: Event) => { setEvent(updatedEvent) @@ -64,7 +66,7 @@ export default function EditEventPage() { const handleDelete = async () => { try { setDeleting(true) - const response = await fetch(`/api/events/${slug}`, { + const response = await fetch(`/api/events/${eventSlug}`, { method: 'DELETE', }) @@ -73,7 +75,7 @@ export default function EditEventPage() { } toast.success('Event deleted successfully!') - router.push('/dashboard/company/events') + router.push(`/dashboard/company/${companySlug}/events`) } catch (error) { console.error('Error deleting event:', error) toast.error('Failed to delete event') @@ -98,7 +100,7 @@ export default function EditEventPage() {

The event you're looking for doesn't exist or you don't have access to it.

- + @@ -111,7 +113,7 @@ export default function EditEventPage() { {/* Header */}
- + diff --git a/app/dashboard/company/events/page.tsx b/app/dashboard/company/events/page.tsx index cce7d92d..630139a1 100644 --- a/app/dashboard/company/events/page.tsx +++ b/app/dashboard/company/events/page.tsx @@ -264,7 +264,7 @@ export default function CompanyEventsPage() { {event.registered || 0}
- + diff --git a/components/dashboard/CompanyDashboard.tsx b/components/dashboard/CompanyDashboard.tsx index c5cdf052..0c55e630 100644 --- a/components/dashboard/CompanyDashboard.tsx +++ b/components/dashboard/CompanyDashboard.tsx @@ -104,6 +104,10 @@ export function CompanyDashboard({ company }: CompanyDashboardProps) { (e: any) => e.approval_status === 'pending' ) || [] + const approvedEvents = eventsData.events?.filter( + (e: any) => e.approval_status === 'approved' + ) || [] + const upcomingEventsData = eventsData.events ?.filter((e: any) => { const eventDate = new Date(e.date) @@ -114,7 +118,7 @@ export function CompanyDashboard({ company }: CompanyDashboardProps) { /* eslint-enable @typescript-eslint/no-explicit-any */ setStats({ - totalEvents: company.total_events || 0, + totalEvents: approvedEvents.length, totalHackathons: company.total_hackathons || 0, totalRegistrations: analyticsData.summary?.total_registrations || 0, totalViews: analyticsData.summary?.total_views || 0,