'use client'; import React, { useState } from 'react'; import { sendFeedback } from '@/app/actions/emailAction'; import { useNotification } from '@/context/NotificationContext'; import { useEstablishment } from '@/context/EstablishmentContext'; import { useTranslations } from 'next-intl'; import WisiwigTextArea from '@/components/Form/WisiwigTextArea'; import InputText from '@/components/Form/InputText'; import Button from '@/components/Form/Button'; import SelectChoice from '@/components/Form/SelectChoice'; import logger from '@/utils/logger'; export default function FeedbackPage() { const t = useTranslations('feedback'); const { showNotification } = useNotification(); const { selectedEstablishmentId, establishments, user } = useEstablishment(); // Récupérer les infos complètes de l'établissement sélectionné const selectedEstablishment = establishments?.find( (e) => e.id === selectedEstablishmentId ); const [category, setCategory] = useState(''); const [subject, setSubject] = useState(''); const [message, setMessage] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const categoryChoices = [ { value: 'bug', label: t('category_bug') }, { value: 'feature', label: t('category_feature') }, { value: 'question', label: t('category_question') }, { value: 'other', label: t('category_other') }, ]; const handleSubmit = async () => { if (!category || !subject || !message) { showNotification(t('error_required_fields'), 'error', t('error')); return; } setIsSubmitting(true); // Construire le nom de l'utilisateur (fallback vers l'email si nom indisponible) const userName = user ? user.first_name && user.last_name ? `${user.first_name} ${user.last_name}` : user.username || user.email?.split('@')[0] || '' : ''; const feedbackData = { category, subject, message, establishment: selectedEstablishment ? { id: selectedEstablishment.id, name: selectedEstablishment.name, total_capacity: selectedEstablishment.total_capacity, evaluation_frequency: selectedEstablishment.evaluation_frequency, } : { id: selectedEstablishmentId }, user_email: user?.email || '', user_name: userName, }; try { await sendFeedback(feedbackData); showNotification(t('success_message'), 'success', t('success')); // Réinitialiser les champs après succès setCategory(''); setSubject(''); setMessage(''); } catch (error) { logger.error("Erreur lors de l'envoi du feedback:", { error }); showNotification(t('error_sending'), 'error', t('error')); } finally { setIsSubmitting(false); } }; return (
{t('description')}