Implement event feedback functionality: Add EventFeedback model to Prisma schema, enabling users to submit ratings and comments for events. Update EventsPageSection and AdminPanel components to support feedback management, including UI for submitting feedback and viewing existing feedbacks. Refactor registration logic to retrieve all user registrations for improved feedback handling.

This commit is contained in:
Julien Froidefond
2025-12-10 06:11:32 +01:00
parent 44be5d2e98
commit 3bd43e777e
19 changed files with 2818 additions and 33 deletions

View File

@@ -170,17 +170,14 @@ export default function EventsPageSection({
}
// Charger les inscriptions depuis l'API seulement si on n'a pas de données initiales
// On charge pour tous les événements (passés et à venir) pour permettre le feedback
const checkRegistrations = async () => {
const upcomingOnlyEvents = events.filter(
(e) => getEventStatus(e) === "UPCOMING"
);
const registrationChecks = upcomingOnlyEvents.map(async (event) => {
const registrationChecks = events.map(async (event) => {
try {
const response = await fetch(`/api/events/${event.id}/register`);
const data = await response.json();
return { eventId: event.id, registered: data.registered || false };
} catch (err) {
console.error("Error checking registration:", err);
} catch {
return { eventId: event.id, registered: false };
}
});
@@ -500,8 +497,14 @@ export default function EventsPageSection({
</button>
)}
{getEventStatus(event) === "PAST" && (
<button className="w-full px-4 py-2 border border-gray-600/50 bg-gray-900/20 text-gray-500 uppercase text-xs tracking-widest rounded cursor-not-allowed">
Événement terminé
<button
onClick={(e) => {
e.stopPropagation();
router.push(`/feedback/${event.id}`);
}}
className="w-full px-4 py-2 border border-pixel-gold/50 bg-black/40 text-white uppercase text-xs tracking-widest rounded hover:bg-pixel-gold/10 hover:border-pixel-gold transition"
>
Donner un feedback
</button>
)}
</div>