import { useEffect, useState } from 'react'; // material-ui import { useLocation, useNavigate } from 'react-router-dom'; import { Box, Button, Grid, InputLabel, MenuItem, Select, Stack, TextField, Typography, useMediaQuery, useTheme } from '@mui/material'; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; // project import import MainCard from 'components/MainCard'; import axios from 'axios'; import Loader from 'components/Loader'; import { enqueueSnackbar } from 'notistack'; import CircularLoader from 'components/CircularLoader'; import { fetchAppLocations } from 'pages/api/api'; const AVAILABILITY_OPTIONS = ['Available', 'Assigned', 'On_Break', 'Offline']; const EditRider = () => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); const location = useLocation(); const [riderdata, setRiderdata] = useState(null); const navigate = useNavigate(); const [hubs, setHubs] = useState([]); const [loading, setLoading] = useState(false); const fetchRiderData = async (id) => { try { // Doormile /admin/milers/:id returns { userid, displayname, phone, // availabilitystatus, rating, hubid, currentlat, currentlon, // completedorders, cancelledorders } — this form only edits the // fields Doormile's PATCH endpoint actually accepts. const riderdataresponse = await axios.get(`${process.env.REACT_APP_URL}/admin/milers/${id}`); setRiderdata(riderdataresponse.data.data); } catch (error) { console.log('fetchRiderData', error); } }; useEffect(() => { fetchRiderData(location.state.riderdata.userid); fetchAppLocations().then((locations) => { setHubs((locations || []).filter((l) => l.applocationid !== 0)); }); }, []); const updateRider = async () => { setLoading(true); try { const response = await axios.patch(`${process.env.REACT_APP_URL}/admin/milers/${riderdata.userid}`, { displayname: riderdata.displayname, phone: riderdata.phone, availabilitystatus: riderdata.availabilitystatus, hubid: riderdata.hubid }); if (response.status == 200) { enqueueSnackbar('Updated Successfully', { variant: 'success', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); navigate('/nearle/riders'); } else { enqueueSnackbar('Update Failed', { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); } } catch (err) { enqueueSnackbar(err.response?.data?.message || err.message || 'Update Failed', { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); } finally { setLoading(false); } }; return ( <> {loading && ( <> )} Edit Miler } > Name setRiderdata({ ...riderdata, displayname: e.target.value })} placeholder="Name" autoComplete="off" /> Phone Number { if (e.target.value.toString().length <= 10) { setRiderdata({ ...riderdata, phone: e.target.value }); } }} value={riderdata?.phone || ''} autoComplete="off" /> Hub Availability Status ); }; export default EditRider;