Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
e5eb70c
Refactor discount handling: replace DiscountParsed with DiscountReque…
dpiyumal2319 Oct 4, 2025
81e8c3b
Refactor event-related types: replace parsed types with request types…
dpiyumal2319 Oct 4, 2025
ca9b916
Add EventProvider for managing event and organization data across com…
dpiyumal2319 Oct 4, 2025
717122c
Refactor EventProvider: integrate organization context and switch org…
dpiyumal2319 Oct 4, 2025
fea71c8
Pre implemeted discount crud
dpiyumal2319 Oct 4, 2025
3224065
Add DiscountFormDialog component for creating and editing discounts
dpiyumal2319 Oct 5, 2025
6e026c1
Refactor Discount components to use IDs instead of indices for CRUD o…
dpiyumal2319 Oct 5, 2025
9a31610
Add sharing functionality for discounts with new DiscountShareDialog …
dpiyumal2319 Oct 5, 2025
a117fd3
Enhance DiscountCard with confirmation dialog for deletion and improv…
dpiyumal2319 Oct 5, 2025
abd3af0
Add usage progress bar and improve discount details display in Discou…
dpiyumal2319 Oct 5, 2025
b1089fb
Refactor EventProvider to manage discounts and improve discount fetch…
dpiyumal2319 Oct 5, 2025
e45307d
Update event schemas to use UUIDs for IDs and adjust seat generation …
dpiyumal2319 Oct 5, 2025
26b57d2
Implement session management features with SessionsManager and Sessio…
dpiyumal2319 Oct 6, 2025
5865d88
Add session management functions to EventProvider and SessionsManager
dpiyumal2319 Oct 6, 2025
25a1e55
Add session management functions to EventProvider and SessionsManager
dpiyumal2319 Oct 7, 2025
dc0373c
Add redirect functionality for creating new sessions in SessionsManager
dpiyumal2319 Oct 7, 2025
f9406b6
Refactor session creation UI by removing Card component and integrati…
dpiyumal2319 Oct 7, 2025
184a541
Add SessionCard and SessionShareDialog components for session managem…
dpiyumal2319 Oct 7, 2025
a9d8613
Refactor discount-related components to use DTOs instead of request t…
dpiyumal2319 Oct 7, 2025
c85bca7
Enhance session page with status handling and tooltips for session type
dpiyumal2319 Oct 7, 2025
fc53f1e
Refactor session action types and add layout update functionality
dpiyumal2319 Oct 7, 2025
71b7391
Add LocationEditDialog component for managing venue details in sessions
dpiyumal2319 Oct 7, 2025
ca2fbac
Add PhysicalLayoutEditor and VenueMap components for enhanced event s…
dpiyumal2319 Oct 7, 2025
dabbafb
feat: add OnlineConfigEditorBase component for managing online event …
dpiyumal2319 Oct 7, 2025
247fd5a
feat: add dialogs for editing session time, layout, location, and sta…
dpiyumal2319 Oct 7, 2025
04676ff
feat: add components for session management including seating layout,…
dpiyumal2319 Oct 7, 2025
46fa52c
feat: enhance session management components with improved layout and …
dpiyumal2319 Oct 7, 2025
fba2b65
feat: implement EditLayoutPage for managing session seating layout an…
dpiyumal2319 Oct 8, 2025
eaccecf
feat: enhance ChangeStatusDialog with detailed status information and…
dpiyumal2319 Oct 8, 2025
970a850
feat: add dialog open state management to VenueInformation and Locati…
dpiyumal2319 Oct 8, 2025
869451e
feat: refactor venue update handling and remove unused map center logic
dpiyumal2319 Oct 8, 2025
a39faa4
feat: add discount management UI components and enhance session statu…
dpiyumal2319 Oct 8, 2025
609dd11
feat: enhance discount management components with shareable functiona…
dpiyumal2319 Oct 8, 2025
dc9d6f8
feat: add discountedTotal field to baseDiscountSchema for improved di…
dpiyumal2319 Oct 8, 2025
ccd9500
feat: implement event update actions with cover photo management and …
dpiyumal2319 Oct 8, 2025
5b1fc3d
feat: enhance event settings page with cover photo management and for…
dpiyumal2319 Oct 8, 2025
0e76d6b
feat: add category selection to event settings and implement event de…
dpiyumal2319 Oct 8, 2025
1e752ef
feat: enhance error handling with custom ApiError class and improve t…
dpiyumal2319 Oct 9, 2025
fdea0b0
feat: add DailySalesChart component and integrate revenue analytics i…
dpiyumal2319 Oct 9, 2025
8fd5b3c
feat: add revenue analytics fetching and integrate into SessionAnalyt…
dpiyumal2319 Oct 9, 2025
49b9dc5
feat: add discount analytics components and integrate into DiscountMa…
dpiyumal2319 Oct 9, 2025
f9c75d1
feat: enhance session and event analytics with tier sales metrics and…
dpiyumal2319 Oct 9, 2025
963de36
feat: implement session performance grid and card components for enha…
dpiyumal2319 Oct 9, 2025
c809ce4
feat: remove EventTracker component from layout for cleaner event ove…
dpiyumal2319 Oct 9, 2025
bd3e77d
feat: update text formatting in DailySalesChart and clean up imports …
dpiyumal2319 Oct 9, 2025
d01c766
feat: integrate AI-powered event overview generation and enhance imag…
dpiyumal2319 Oct 9, 2025
ebe2e4f
feat: add order management components and enhance order details display
dpiyumal2319 Oct 9, 2025
8dd63ac
feat: implement tier management functionality with create, update, an…
dpiyumal2319 Oct 10, 2025
80e428d
feat: restore tier creation and update functionality with proper API …
dpiyumal2319 Oct 10, 2025
3b92df2
feat: add CounterAnimation component and integrate total sessions and…
dpiyumal2319 Oct 10, 2025
832a31a
feat: simplify ticket sold value calculation in analytics views
dpiyumal2319 Oct 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@dnd-kit/modifiers": "^9.0.0",
"@google-analytics/data": "^5.2.0",
"@hookform/resolvers": "^5.2.1",
"@icons-pack/react-simple-icons": "^13.8.0",
"@next/third-parties": "^15.5.2",
"@radix-ui/react-accordion": "^1.2.11",
"@radix-ui/react-alert-dialog": "^1.1.14",
Expand Down
40 changes: 2 additions & 38 deletions src/app/(home-app)/events/[event_id]/_components/Sessions.tsx
Original file line number Diff line number Diff line change
@@ -1,49 +1,13 @@
'use client';

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

const Sessions = ({eventId}: { eventId: string }) => {
const [page, setPage] = useState(0);
const [sessionsData, setSessionsData] = useState<PaginatedResponse<SessionInfoBasicDTO> | null>(null);
const [isLoading, setIsLoading] = useState(true);

useEffect(() => {
const fetchSessions = async () => {
setIsLoading(true);
const data = await getEventSessions({eventId, page});
setSessionsData(data);
setIsLoading(false);
};
fetchSessions();
}, [eventId, page]);

if (isLoading) return <div>Loading sessions...</div>;
if (!sessionsData || sessionsData.empty) return <div>No sessions found.</div>;

return (
<div className="max-w-7xl mx-auto space-y-4">
<h2 className="text-2xl font-bold text-foreground flex items-center gap-2">
<CalendarIcon className="w-6 h-6"/> Sessions
</h2>
<div className="space-y-2">
{sessionsData.content.map(session => <SessionItem key={session.id} session={session}/>)}
</div>
<div className="flex justify-between items-center">
<Button onClick={() => setPage(p => p - 1)} disabled={sessionsData.first}>Previous</Button>
<span>Page {sessionsData.number + 1} of {sessionsData.totalPages}</span>
<Button onClick={() => setPage(p => p + 1)} disabled={sessionsData.last}>Next</Button>
</div>
</div>
);
};

const SessionsNoPagination = ({eventId}: { eventId: string }) => {
// Default dates: one week ago to three months ahead
const now = new Date();
Expand Down Expand Up @@ -118,4 +82,4 @@ const SessionsNoPagination = ({eventId}: { eventId: string }) => {
);
};

export default SessionsNoPagination;
export default SessionsNoPagination;
36 changes: 18 additions & 18 deletions src/app/(home-app)/events/[event_id]/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
import React, {Suspense} from 'react';
import {EventHero, ReviewEventHeroSkeleton} from "@/app/(home-app)/events/[event_id]/_components/EventHero";
import {Separator} from "@/components/ui/separator";
import {getEventSummery, getEventTotalViews} from "@/lib/actions/public/server/eventActions";
import {EventTracker} from "@/app/(home-app)/events/[event_id]/_components/EventTracker";
import {EventOverview} from "@/app/manage/_components/review/EventOverview";
import React, { Suspense } from 'react';
import { EventHero, ReviewEventHeroSkeleton } from "@/app/(home-app)/events/[event_id]/_components/EventHero";
import { Separator } from "@/components/ui/separator";
import { getEventSummery, getEventTotalViews } from "@/lib/actions/public/server/eventActions";
import { EventOverview } from "@/app/manage/_components/review/EventOverview";
import { EventTracker } from './_components/EventTracker';


export default async function Layout({params, children}: {
export default async function Layout({ params, children }: {
params: Promise<{ event_id: string }>
children: React.ReactNode;
}) {
const {event_id} = await params;
const { event_id } = await params;
const eventSummery = await getEventSummery(event_id);
const viewsData = await getEventTotalViews(event_id);

return (
<div>
<div className="min-h-screen p-4 sm:p-6 md:p-8">
<div className="max-w-7xl mx-auto space-y-8">
<EventTracker event={{
title: eventSummery.title,
id: eventSummery.id,
organization_id: eventSummery.organization?.id || '',
}}/>
<Suspense fallback={<ReviewEventHeroSkeleton/>}>
<Suspense fallback={<ReviewEventHeroSkeleton />}>
<EventTracker event={{
title: eventSummery.title,
id: eventSummery.id,
organization_id: eventSummery.organization?.id || '',
}} />
<EventHero event={eventSummery}
viewCount={viewsData.success ? viewsData.viewCount : undefined}/>
<Separator className={'border-3 my-2'}/>
<EventOverview overview={eventSummery.overview}/>
viewCount={viewsData.success ? viewsData.viewCount : undefined} />
<Separator className={'border-3 my-2'} />
<EventOverview overview={eventSummery.overview} />
</Suspense>
<Separator className={'border-3 my-2'}/>
<Separator className={'border-3 my-2'} />
{children}
</div>
</div>
Expand Down
Loading