'use server' import { revalidatePath } from 'next/cache' import { auth } from '@/lib/auth' import { challengeService } from '@/services/challenges/challenge.service' import { ValidationError, NotFoundError, ConflictError, } from '@/services/errors' export async function createChallenge(data: { challengedId: string title: string description: string pointsReward?: number }) { try { const session = await auth() if (!session?.user?.id) { return { success: false, error: 'Vous devez être connecté pour créer un défi' } } const challenge = await challengeService.createChallenge({ challengerId: session.user.id, challengedId: data.challengedId, title: data.title, description: data.description, pointsReward: data.pointsReward || 100, }) revalidatePath('/challenges') revalidatePath('/profile') return { success: true, message: 'Défi créé avec succès', data: challenge } } catch (error) { console.error('Create challenge error:', error) if (error instanceof ValidationError || error instanceof ConflictError) { return { success: false, error: error.message } } if (error instanceof NotFoundError) { return { success: false, error: error.message } } return { success: false, error: 'Une erreur est survenue lors de la création du défi' } } } export async function acceptChallenge(challengeId: string) { try { const session = await auth() if (!session?.user?.id) { return { success: false, error: 'Vous devez être connecté pour accepter un défi' } } const challenge = await challengeService.acceptChallenge( challengeId, session.user.id ) revalidatePath('/challenges') revalidatePath('/profile') return { success: true, message: 'Défi accepté', data: challenge } } catch (error) { console.error('Accept challenge error:', 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: 'Une erreur est survenue lors de l\'acceptation du défi' } } } export async function cancelChallenge(challengeId: string) { try { const session = await auth() if (!session?.user?.id) { return { success: false, error: 'Vous devez être connecté pour annuler un défi' } } const challenge = await challengeService.cancelChallenge( challengeId, session.user.id ) revalidatePath('/challenges') revalidatePath('/profile') return { success: true, message: 'Défi annulé', data: challenge } } catch (error) { console.error('Cancel challenge error:', 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: 'Une erreur est survenue lors de l\'annulation du défi' } } }