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 (
{/* Header Bar */}
Left Logo

Somaiya Scheduler

Right Logo
{/* Navigation Bar */} {/* Main Content */}

Department Email Management

setSearchTerm(e.target.value)} />
{editingDepartment || isAddingNew ? (

{isAddingNew ? 'Add New Department' : `Editing: ${editingDepartment.department}`}

{isAddingNew && ( <>
setNewDepartment(e.target.value)} placeholder="Enter department name" />
)}
{newEmails.map((email, index) => (
handleNewEmailChange(index, e.target.value)} placeholder="Enter email" /> {newEmails.length > 1 && ( )}
))}
) : ( <>
{filteredDepartments.length === 0 ? (

No departments found

) : ( filteredDepartments.map((dept) => (

{dept.department}

    {dept.emails.map((email, idx) => (
  • {email}
  • ))}
)) )}
)}
{/* Footer */}
); }; export default Page6;