import React, { useState } from 'react'; import { Link } from 'react-router-dom'; import { PencilSquareIcon, TrashIcon, Squares2X2Icon, } from '@heroicons/react/24/solid'; import ConfirmDialog from './components/Shared/ConfirmDialog'; import AreaModal from './components/Area/AreaModal'; import { useDataContext } from './contexts/DataContext'; import { Area } from './entities/Area'; const Areas: React.FC = () => { const { areas, isLoading, isError, createArea, updateArea, deleteArea } = useDataContext(); const [isAreaModalOpen, setIsAreaModalOpen] = useState(false); const [selectedArea, setSelectedArea] = useState(null); const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false); const [areaToDelete, setAreaToDelete] = useState(null); const handleSaveArea = async (areaData: Area) => { try { if (areaData.id) { await updateArea(areaData.id, { name: areaData.name, description: areaData.description, }); } else { await createArea({ name: areaData.name, description: areaData.description, }); } } catch (error) { console.error('Error saving area:', error); } finally { setIsAreaModalOpen(false); setSelectedArea(null); } }; const handleEditArea = (area: Area) => { setSelectedArea(area); setIsAreaModalOpen(true); }; const handleCreateArea = () => { setSelectedArea(null); setIsAreaModalOpen(true); }; const openConfirmDialog = (area: Area) => { setAreaToDelete(area); setIsConfirmDialogOpen(true); }; const handleDeleteArea = async () => { if (!areaToDelete) return; try { await deleteArea(areaToDelete.id); setIsConfirmDialogOpen(false); setAreaToDelete(null); } catch (error) { console.error('Error deleting area:', error); } }; const closeConfirmDialog = () => { setIsConfirmDialogOpen(false); setAreaToDelete(null); }; if (isLoading) { return (
Loading areas...
); } if (isError) { return (
An error occurred while fetching areas.
); } return (
{/* Areas Header */}

Areas

{/* Areas List */} {areas.length === 0 ? (

No areas found.

) : (
    {areas.map((area) => (
  • {/* Area Content */}
    {area.name} {area.description && (

    {area.description}

    )}
    {/* Action Buttons */}
  • ))}
)} {/* AreaModal */} {isAreaModalOpen && ( setIsAreaModalOpen(false)} onSave={handleSaveArea} area={selectedArea} /> )} {/* ConfirmDialog */} {isConfirmDialogOpen && areaToDelete && ( )}
); }; export default Areas;