Backend and frontend updates: auth, email, payments, events, tickets; carrousel images; mobile event detail layout; i18n

This commit is contained in:
Michilis
2026-02-02 20:58:21 +00:00
parent bafd1425c4
commit 4a84ad22c7
44 changed files with 1323 additions and 472 deletions

View File

@@ -136,6 +136,8 @@ eventsRouter.get('/', async (c) => {
// Get ticket counts for each event
const eventsWithCounts = await Promise.all(
result.map(async (event: any) => {
// Count confirmed AND checked_in tickets (checked_in were previously confirmed)
// This ensures check-in doesn't affect capacity/spots_left
const ticketCount = await dbGet<any>(
(db as any)
.select({ count: sql<number>`count(*)` })
@@ -143,7 +145,7 @@ eventsRouter.get('/', async (c) => {
.where(
and(
eq((tickets as any).eventId, event.id),
eq((tickets as any).status, 'confirmed')
sql`${(tickets as any).status} IN ('confirmed', 'checked_in')`
)
)
);
@@ -172,7 +174,8 @@ eventsRouter.get('/:id', async (c) => {
return c.json({ error: 'Event not found' }, 404);
}
// Get ticket count
// Count confirmed AND checked_in tickets (checked_in were previously confirmed)
// This ensures check-in doesn't affect capacity/spots_left
const ticketCount = await dbGet<any>(
(db as any)
.select({ count: sql<number>`count(*)` })
@@ -180,7 +183,7 @@ eventsRouter.get('/:id', async (c) => {
.where(
and(
eq((tickets as any).eventId, id),
eq((tickets as any).status, 'confirmed')
sql`${(tickets as any).status} IN ('confirmed', 'checked_in')`
)
)
);
@@ -217,6 +220,8 @@ eventsRouter.get('/next/upcoming', async (c) => {
return c.json({ event: null });
}
// Count confirmed AND checked_in tickets (checked_in were previously confirmed)
// This ensures check-in doesn't affect capacity/spots_left
const ticketCount = await dbGet<any>(
(db as any)
.select({ count: sql<number>`count(*)` })
@@ -224,7 +229,7 @@ eventsRouter.get('/next/upcoming', async (c) => {
.where(
and(
eq((tickets as any).eventId, event.id),
eq((tickets as any).status, 'confirmed')
sql`${(tickets as any).status} IN ('confirmed', 'checked_in')`
)
)
);