Skip to content

Commit ee65ab6

Browse files
authored
Merge pull request #29 from Evently-Event-Management/28-add-ui-for-crud-operations-on-event-sub-entities-discounts-sessions-tiers
28-add-ui-for-crud-operations-on-event-sub-entities-discounts-sessions-tiers
2 parents f42ce55 + 69772b3 commit ee65ab6

93 files changed

Lines changed: 9344 additions & 1238 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package-lock.json

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"@dnd-kit/modifiers": "^9.0.0",
1515
"@google-analytics/data": "^5.2.0",
1616
"@hookform/resolvers": "^5.2.1",
17+
"@icons-pack/react-simple-icons": "^13.8.0",
1718
"@next/third-parties": "^15.5.2",
1819
"@radix-ui/react-accordion": "^1.2.11",
1920
"@radix-ui/react-alert-dialog": "^1.1.14",

src/app/(home-app)/events/[event_id]/_components/Sessions.tsx

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,13 @@
11
'use client';
22

3-
import {PaginatedResponse} from '@/types/paginatedResponse';
43
import React, {useEffect, useState} from 'react';
54
import {SessionInfoBasicDTO} from "@/types/event";
6-
import {getEventSessions, getEventSessionsInRange} from '@/lib/actions/public/eventActions';
5+
import {getEventSessionsInRange} from '@/lib/actions/public/eventActions';
76
import {CalendarIcon} from "lucide-react";
87
import {Button} from "@/components/ui/button";
98
import {SessionItem} from "@/app/(home-app)/events/[event_id]/_components/SessionItem";
109
import {DatePicker} from "@/components/ui/datepicker";
1110

12-
const Sessions = ({eventId}: { eventId: string }) => {
13-
const [page, setPage] = useState(0);
14-
const [sessionsData, setSessionsData] = useState<PaginatedResponse<SessionInfoBasicDTO> | null>(null);
15-
const [isLoading, setIsLoading] = useState(true);
16-
17-
useEffect(() => {
18-
const fetchSessions = async () => {
19-
setIsLoading(true);
20-
const data = await getEventSessions({eventId, page});
21-
setSessionsData(data);
22-
setIsLoading(false);
23-
};
24-
fetchSessions();
25-
}, [eventId, page]);
26-
27-
if (isLoading) return <div>Loading sessions...</div>;
28-
if (!sessionsData || sessionsData.empty) return <div>No sessions found.</div>;
29-
30-
return (
31-
<div className="max-w-7xl mx-auto space-y-4">
32-
<h2 className="text-2xl font-bold text-foreground flex items-center gap-2">
33-
<CalendarIcon className="w-6 h-6"/> Sessions
34-
</h2>
35-
<div className="space-y-2">
36-
{sessionsData.content.map(session => <SessionItem key={session.id} session={session}/>)}
37-
</div>
38-
<div className="flex justify-between items-center">
39-
<Button onClick={() => setPage(p => p - 1)} disabled={sessionsData.first}>Previous</Button>
40-
<span>Page {sessionsData.number + 1} of {sessionsData.totalPages}</span>
41-
<Button onClick={() => setPage(p => p + 1)} disabled={sessionsData.last}>Next</Button>
42-
</div>
43-
</div>
44-
);
45-
};
46-
4711
const SessionsNoPagination = ({eventId}: { eventId: string }) => {
4812
// Default dates: one week ago to three months ahead
4913
const now = new Date();
@@ -118,4 +82,4 @@ const SessionsNoPagination = ({eventId}: { eventId: string }) => {
11882
);
11983
};
12084

121-
export default SessionsNoPagination;
85+
export default SessionsNoPagination;

src/app/(home-app)/events/[event_id]/layout.tsx

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
import React, {Suspense} from 'react';
2-
import {EventHero, ReviewEventHeroSkeleton} from "@/app/(home-app)/events/[event_id]/_components/EventHero";
3-
import {Separator} from "@/components/ui/separator";
4-
import {getEventSummery, getEventTotalViews} from "@/lib/actions/public/server/eventActions";
5-
import {EventTracker} from "@/app/(home-app)/events/[event_id]/_components/EventTracker";
6-
import {EventOverview} from "@/app/manage/_components/review/EventOverview";
1+
import React, { Suspense } from 'react';
2+
import { EventHero, ReviewEventHeroSkeleton } from "@/app/(home-app)/events/[event_id]/_components/EventHero";
3+
import { Separator } from "@/components/ui/separator";
4+
import { getEventSummery, getEventTotalViews } from "@/lib/actions/public/server/eventActions";
5+
import { EventOverview } from "@/app/manage/_components/review/EventOverview";
6+
import { EventTracker } from './_components/EventTracker';
77

88

9-
export default async function Layout({params, children}: {
9+
export default async function Layout({ params, children }: {
1010
params: Promise<{ event_id: string }>
1111
children: React.ReactNode;
1212
}) {
13-
const {event_id} = await params;
13+
const { event_id } = await params;
1414
const eventSummery = await getEventSummery(event_id);
1515
const viewsData = await getEventTotalViews(event_id);
1616

1717
return (
1818
<div>
1919
<div className="min-h-screen p-4 sm:p-6 md:p-8">
2020
<div className="max-w-7xl mx-auto space-y-8">
21-
<EventTracker event={{
22-
title: eventSummery.title,
23-
id: eventSummery.id,
24-
organization_id: eventSummery.organization?.id || '',
25-
}}/>
26-
<Suspense fallback={<ReviewEventHeroSkeleton/>}>
21+
<Suspense fallback={<ReviewEventHeroSkeleton />}>
22+
<EventTracker event={{
23+
title: eventSummery.title,
24+
id: eventSummery.id,
25+
organization_id: eventSummery.organization?.id || '',
26+
}} />
2727
<EventHero event={eventSummery}
28-
viewCount={viewsData.success ? viewsData.viewCount : undefined}/>
29-
<Separator className={'border-3 my-2'}/>
30-
<EventOverview overview={eventSummery.overview}/>
28+
viewCount={viewsData.success ? viewsData.viewCount : undefined} />
29+
<Separator className={'border-3 my-2'} />
30+
<EventOverview overview={eventSummery.overview} />
3131
</Suspense>
32-
<Separator className={'border-3 my-2'}/>
32+
<Separator className={'border-3 my-2'} />
3333
{children}
3434
</div>
3535
</div>

0 commit comments

Comments
 (0)