All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m38s
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
'use server'
|
|
|
|
import { revalidatePath } from 'next/cache'
|
|
import { auth } from '@/lib/auth'
|
|
import { eventFeedbackService } from '@/services/events/event-feedback.service'
|
|
import {
|
|
ValidationError,
|
|
NotFoundError,
|
|
} from '@/services/errors'
|
|
|
|
export async function createFeedback(eventId: string, data: {
|
|
rating: number
|
|
comment?: string | null
|
|
}) {
|
|
try {
|
|
const session = await auth()
|
|
|
|
if (!session?.user?.id) {
|
|
return { success: false, error: 'Non authentifié' }
|
|
}
|
|
|
|
const feedback = await eventFeedbackService.validateAndCreateFeedback(
|
|
session.user.id,
|
|
eventId,
|
|
{ rating: data.rating, comment: data.comment }
|
|
)
|
|
|
|
revalidatePath(`/feedback/${eventId}`)
|
|
revalidatePath('/events')
|
|
|
|
return { success: true, data: feedback }
|
|
} catch (error) {
|
|
console.error('Error saving feedback:', error)
|
|
|
|
if (error instanceof ValidationError) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
if (error instanceof NotFoundError) {
|
|
return { success: false, error: error.message }
|
|
}
|
|
|
|
return { success: false, error: 'Erreur lors de l\'enregistrement du feedback' }
|
|
}
|
|
}
|
|
|