Add series management and ticketing features: Introduce series event functionality in event creation, enhance event display with series information, and implement ticketing options for public events. Update layouts and improve form handling for better user experience.
This commit is contained in:
parent
c3a29fa47c
commit
a88aa62198
24 changed files with 2897 additions and 44 deletions
62
server/api/admin/series/[id].put.js
Normal file
62
server/api/admin/series/[id].put.js
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
import Series from '../../../models/series.js'
|
||||
import Event from '../../../models/event.js'
|
||||
import { connectDB } from '../../../utils/mongoose.js'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
await connectDB()
|
||||
|
||||
const id = getRouterParam(event, 'id')
|
||||
const body = await readBody(event)
|
||||
|
||||
if (!id) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: 'Series ID is required'
|
||||
})
|
||||
}
|
||||
|
||||
// Find and update the series
|
||||
const series = await Series.findOne({ id: id })
|
||||
|
||||
if (!series) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
statusMessage: 'Series not found'
|
||||
})
|
||||
}
|
||||
|
||||
// Update series fields
|
||||
if (body.title !== undefined) series.title = body.title
|
||||
if (body.description !== undefined) series.description = body.description
|
||||
if (body.type !== undefined) series.type = body.type
|
||||
if (body.totalEvents !== undefined) series.totalEvents = body.totalEvents
|
||||
if (body.isActive !== undefined) series.isActive = body.isActive
|
||||
|
||||
await series.save()
|
||||
|
||||
// Also update all related events with the new series information
|
||||
await Event.updateMany(
|
||||
{ 'series.id': id, 'series.isSeriesEvent': true },
|
||||
{
|
||||
$set: {
|
||||
'series.title': series.title,
|
||||
'series.description': series.description,
|
||||
'series.type': series.type,
|
||||
'series.totalEvents': series.totalEvents
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: series
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error updating series:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
statusMessage: error.message || 'Failed to update series'
|
||||
})
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue