// frontend/src/components/admin/ClassForm.jsx import React, { useState, useEffect } from "react"; import { Plus, Trash2, Loader2, Save, X } from "lucide-react"; const DAYS = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", ]; export default function ClassForm({ classData, onSave, onCancel, isLoading }) { // schedule: [{ day, start_time, end_time }] const [formData, setFormData] = useState({ name: "", description: "", coach_email: "", schedule: [{ day: "Monday", start_time: "", end_time: "" }], is_active: true, }); useEffect(() => { if (!classData) return; setFormData({ name: classData.name || "", description: classData.description || "", coach_email: classData.coach_email || "", schedule: Array.isArray(classData.schedule) && classData.schedule.length > 0 ? classData.schedule.map((slot) => ({ day: slot.day || "Monday", start_time: slot.start_time || "", end_time: slot.end_time || "", })) : [{ day: "Monday", start_time: "", end_time: "" }], is_active: classData.is_active !== undefined ? classData.is_active : true, }); }, [classData]); const addScheduleSlot = () => { setFormData((prev) => ({ ...prev, schedule: [ ...prev.schedule, { day: "Monday", start_time: "", end_time: "" }, ], })); }; const removeScheduleSlot = (index) => { setFormData((prev) => ({ ...prev, schedule: prev.schedule.filter((_, i) => i !== index), })); }; const updateScheduleSlot = (index, field, value) => { setFormData((prev) => { const schedule = [...prev.schedule]; schedule[index] = { ...schedule[index], [field]: value }; return { ...prev, schedule }; }); }; const handleSubmit = (e) => { e.preventDefault(); // Transform schedule to a simple structure that backend can later map const transformedSchedule = formData.schedule.map((slot) => ({ day: slot.day, start_time: slot.start_time, end_time: slot.end_time, time: slot.start_time && slot.end_time ? `${slot.start_time}-${slot.end_time}` : "", })); const payload = { name: formData.name, description: formData.description, coach_email: formData.coach_email || null, schedule: transformedSchedule, is_active: formData.is_active, }; onSave(payload); }; return (
{/* Class Name */}
setFormData((prev) => ({ ...prev, name: e.target.value })) } placeholder="e.g., Beginner Karate" required />
{/* Description */}