import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { Link } from 'react-router-dom'; import { FaEdit, FaTrash, FaPlus, FaSave, FaTimes } from 'react-icons/fa'; import './Page6.css'; import image from './components/image.png'; import somaiyatrust from './components/somaiyatrust.png'; import redlines from './components/redlines.png'; const Page6 = () => { const [departments, setDepartments] = useState([]); const [programs, setPrograms] = useState([]); const [newDepartment, setNewDepartment] = useState(''); const [newEmails, setNewEmails] = useState(['']); const [selectedProgram, setSelectedProgram] = useState(''); const [editingDepartment, setEditingDepartment] = useState(null); const [isAddingNew, setIsAddingNew] = useState(false); const [searchTerm, setSearchTerm] = useState(''); useEffect(() => { fetchDepartments(); fetchPrograms(); }, []); const fetchDepartments = async () => { try { const response = await axios.get('http://localhost:5000/api/department-emails'); setDepartments(response.data); } catch (error) { console.error('Error fetching departments:', error); } }; const fetchPrograms = async () => { try { const response = await axios.get('http://localhost:5000/api/programs'); setPrograms(response.data); } catch (error) { console.error('Error fetching programs:', error); } }; const handleAddEmail = () => { setNewEmails([...newEmails, '']); }; const handleNewEmailChange = (index, value) => { const updatedEmails = [...newEmails]; updatedEmails[index] = value; setNewEmails(updatedEmails); }; const handleRemoveEmail = (index) => { const updatedEmails = newEmails.filter((_, i) => i !== index); setNewEmails(updatedEmails); }; const startEditing = (department) => { setEditingDepartment(department); setNewEmails([...department.emails]); setIsAddingNew(false); }; const cancelEditing = () => { setEditingDepartment(null); setIsAddingNew(false); setNewDepartment(''); setNewEmails(['']); setSelectedProgram(''); }; const saveDepartment = async () => { try { const emailsToSave = newEmails.filter(email => email.trim() !== ''); if (emailsToSave.length === 0) { alert('At least one email is required'); return; } if (isAddingNew) { if (!newDepartment.trim()) { alert('Department name is required'); return; } if (!selectedProgram) { alert('Please select a program'); return; } await axios.post('http://localhost:5000/api/department-emails', { department: newDepartment, emails: emailsToSave, program: selectedProgram, }); } else { await axios.put(`http://localhost:5000/api/department-emails/${editingDepartment.department}`, { emails: emailsToSave }); } fetchDepartments(); cancelEditing(); } catch (error) { console.error('Error saving department:', error); alert('Error saving department. Please try again.'); } }; const deleteDepartment = async (departmentName) => { if (window.confirm(`Are you sure you want to delete ${departmentName}?`)) { try { await axios.delete(`http://localhost:5000/api/department-emails/${departmentName}`); fetchDepartments(); } catch (error) { console.error('Error deleting department:', error); alert('Error deleting department. Please try again.'); } } }; const filteredDepartments = departments.filter(dept => dept.department.toLowerCase().includes(searchTerm.toLowerCase()) ); return (
No departments found
) : ( filteredDepartments.map((dept) => (