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
} variant="outlined" fullWidth={isMobile} onClick={() => navigate('/nearle/riders')}>
Back to Milers
}
>
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
} variant="outlined" fullWidth={isMobile} onClick={() => navigate('/nearle/riders')}>
Back to Milers
>
);
};
export default EditRider;