import { useEffect, useState } from "react"; import CustomTable, { Column } from "../../components/CustomTable/customTable"; import AddManagerModal from "../../components/AddManagerModal/addManagerModal"; import EditManagerModal from "../../components/EditManagerModal/editManagerModal"; import { useDispatch, useSelector } from "react-redux"; import { RootState, AppDispatch } from "../../redux/store/store"; import { managerList, addManager, updateManager, } from "../../redux/slices/managerSlice"; import { useForm } from "react-hook-form"; import { addStationDetails, stationDetailList, updateStationDetails, } from "../../redux/slices/managerStationSlice"; import AddManagerStationModal from "../../components/AddManagerStationModal/addmanagerStationModal"; import EditManagerStationModal from "../../components/EditManagerStationModal/editManagerStationModal"; export default function ManagerStationDetails() { const [addModalOpen, setAddModalOpen] = useState(false); const [editModalOpen, setEditModalOpen] = useState(false); const { reset } = useForm(); const [deleteModal, setDeleteModal] = useState(false); const [viewModal, setViewModal] = useState(false); const [rowData, setRowData] = useState(null); const dispatch = useDispatch(); const managerStationDetails = useSelector( (state: RootState) => state.managerStationReducer.stationDetails ); useEffect(() => { dispatch(stationDetailList()); }, [dispatch]); const handleClickOpen = () => { setRowData(null); setAddModalOpen(true); }; const handleCloseModal = () => { setAddModalOpen(false); setEditModalOpen(false); setRowData(null); reset(); }; const handleAddManager = async (data: { stationId: string; connectorType: string; power: string; price: string; }) => { try { // Add manager with stationId await dispatch(addStationDetails(data)); // Dispatch action to add manager await dispatch(stationDetailList()); // Fetch the updated list handleCloseModal(); // Close the modal } catch (error) { console.error("Error adding manager", error); } }; // Handle updating an existing manager const handleUpdate = async ( id: number, connectorType: string, power: string, price: string ) => { try { await dispatch( updateStationDetails({ id, connectorType, power, price, isAvailable: false, }) ); await dispatch(stationDetailList()); handleCloseModal(); } catch (error) { console.error("Update failed", error); } }; const categoryColumns: Column[] = [ { id: "srno", label: "Sr No" }, { id: "stationName", label: "Station Name" }, { id: "registeredAddress", label: "Station Location" }, { id: "connectorType", label: "Connector Type" }, { id: "power", label: "Max Power(KW)" }, { id: "price", label: "Price" }, { id: "isAvailable", label: "Is Available", align: "center" }, { id: "action", label: "Action", align: "center" }, ]; const categoryRows = managerStationDetails?.length ? managerStationDetails.map((managerStation, index) => { return { id: managerStation.id, srno: index + 1, stationName: managerStation?.stationName ?? "NA", registeredAddress: managerStation.registeredAddress, connectorType: managerStation.connectorType, power: managerStation.power, price: managerStation.price ?? "NA", isAvailable: managerStation?.isAvailable ? "Yes" : "No", }; }) : []; return ( <> {/* Custom Table to show manager list */} setEditModalOpen(true)} tableType="manager-station" handleClickOpen={handleClickOpen} /> {/* Add Manager Modal */} {/* Edit Manager Modal */} ); }