import React, { useState } from 'react'; import { Plus, Trash2, Edit3, Check, X, EyeOff, Eye, CreditCard, BookOpen } from 'lucide-react'; import Table from '@/components/Table'; import Popup from '@/components/Popup'; import CheckBox from '@/components/CheckBox'; import InputText from '@/components/InputText'; const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedFees, handleFeeSelection }) => { const [editingFee, setEditingFee] = useState(null); const [newFee, setNewFee] = useState(null); const [formData, setFormData] = useState({}); const [localErrors, setLocalErrors] = useState({}); const [popupVisible, setPopupVisible] = useState(false); const [popupMessage, setPopupMessage] = useState(""); const handleAddFee = () => { setNewFee({ id: Date.now(), name: '', base_amount: '', description: '', validity_start_date: '', validity_end_date: '', discounts: [], type: type }); }; const handleRemoveFee = (id) => { handleDelete(id) .then(() => { setFees(prevFees => prevFees.filter(fee => fee.id !== id)); }) .catch(error => { console.error(error); }); }; const handleSaveNewFee = () => { if ( newFee.name && newFee.base_amount) { handleCreate(newFee) .then((createdFee) => { setFees([createdFee, ...fees]); setNewFee(null); setLocalErrors({}); }) .catch(error => { if (error && typeof error === 'object') { setLocalErrors(error); } else { console.error(error); } }); } else { setPopupMessage("Tous les champs doivent être remplis et valides"); setPopupVisible(true); } }; const handleUpdateFee = (id, updatedFee) => { if ( updatedFee.name && updatedFee.base_amount) { handleEdit(id, updatedFee) .then((updatedFee) => { setFees(fees.map(fee => fee.id === id ? updatedFee : fee)); setEditingFee(null); setLocalErrors({}); }) .catch(error => { if (error && typeof error === 'object') { setLocalErrors(error); } else { console.error(error); } }); } else { setPopupMessage("Tous les champs doivent être remplis et valides"); setPopupVisible(true); } }; const handleToggleActive = (id, isActive) => { const fee = fees.find(fee => fee.id === id); if (!fee) return; const updatedData = { is_active: !isActive, discounts: fee.discounts }; handleEdit(id, updatedData) .then(() => { setFees(prevFees => prevFees.map(fee => fee.id === id ? { ...fee, is_active: !isActive } : fee)); }) .catch(error => { console.error(error); }); }; const handleChange = (e) => { const { name, value } = e.target; let parsedValue = value; if (name === 'discounts') { parsedValue = value.split(',').map(v => parseInt(v, 10)); } if (editingFee) { setFormData((prevData) => ({ ...prevData, [name]: parsedValue, })); } else if (newFee) { setNewFee((prevData) => ({ ...prevData, [name]: parsedValue, })); } }; const renderInputField = (field, value, onChange, placeholder) => (