import * as React from 'react'; import { useEffect, useState, useRef, Fragment } from 'react'; import { FormControl, InputAdornment, Grid, Typography, Stack, Box, Button, TextField, Autocomplete, CardActions, Chip, Avatar, Divider, DialogTitle, DialogContent, Checkbox, DialogActions, CircularProgress, ButtonGroup, FormLabel, IconButton, Drawer, InputLabel, Select, MenuItem, Switch, CardHeader, Card, OutlinedInput, FormGroup, FormControlLabel } from '@mui/material'; import CloseIcon from '@mui/icons-material/Close'; import { Empty } from 'antd'; import { FaPhoneAlt } from 'react-icons/fa'; import { GiDoorHandle } from 'react-icons/gi'; import { FaLandmarkDome } from 'react-icons/fa6'; import ClearIcon from '@mui/icons-material/Clear'; import { useNavigate } from 'react-router'; import { MdLocationCity } from 'react-icons/md'; import { TbMapPinCode } from 'react-icons/tb'; import { FaLocationDot } from 'react-icons/fa6'; import axios from 'axios'; import { useTheme } from '@mui/material/styles'; import Geocode from 'react-geocode'; import Loader from 'components/Loader'; import * as geolib from 'geolib'; import MainCard from 'components/MainCard'; import { FaUser } from 'react-icons/fa6'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import Dialog from '@mui/material/Dialog'; import dayjs from 'dayjs'; import { enqueueSnackbar } from 'notistack'; var utc = require('dayjs/plugin/utc'); dayjs.extend(utc); import LocationOnIcon from '@mui/icons-material/LocationOn'; import parse from 'autosuggest-highlight/parse'; import { debounce } from '@mui/material/utils'; import CardContent from 'themes/overrides/CardContent'; import { PhoneAndroid } from '@mui/icons-material'; import { SearchOutlined, CloseOutlined } from '@ant-design/icons'; import PhoneInput from 'react-phone-number-input/input'; import MyLocationIcon from '@mui/icons-material/MyLocation'; import HighlightOffIcon from '@mui/icons-material/HighlightOff'; import { Paper } from '@mui/material'; import { MdAddShoppingCart, MdMyLocation, MdLocationOn, MdSchedule, MdLocalShipping, MdAttachMoney, MdNotes, MdCheckCircle, MdReceiptLong, MdInventory2, MdStraighten, MdPersonPin, MdPerson, MdHistoryToggleOff } from 'react-icons/md'; // ============================================================================ // Design tokens — shared with the rest of the redesigned operator pages. // ============================================================================ const DT = { radiusPill: 999, radiusCard: 16, shadowSoft: '0 14px 40px rgba(15, 23, 42, 0.10)', shadowMd: '0 8px 24px rgba(15, 23, 42, 0.08)', shadowPop: '0 18px 50px rgba(15, 23, 42, 0.18)', textPrimary: '#0f172a', textSecondary: '#64748b', textMuted: '#94a3b8', borderSubtle: '#e2e8f0', divider: '#f1f5f9', surface: '#ffffff', surfaceAlt: '#f8fafc' }; const dtA = (c, suffix) => `${c}${suffix}`; const tint = (c) => dtA(c, '08'); const soft = (c) => dtA(c, '18'); const ring = (c) => dtA(c, '26'); const edge = (c) => dtA(c, '55'); const BRAND = '#662582'; const BRAND_LIGHT = '#9255AB'; // Soft card section header — coloured banner above each form section. const SectionHeader = ({ color, icon, title, subtitle, action }) => ( {icon} {title} {subtitle && ( {subtitle} )} {action} ); // Section wrapper Paper used as the outer card for each form block. const SectionCard = ({ children, sx = {} }) => ( {children} ); // Popup paper for Autocomplete dropdowns — matches the rest of the design. const SoftPaper = (props) => ( ); function loadScript(src, position, id) { if (!position) { return; } const script = document.createElement('script'); script.setAttribute('async', ''); script.setAttribute('id', id); script.src = src; position.appendChild(script); } const Createorder1 = () => { Geocode.setApiKey(process.env.REACT_APP_GOOGLE_MAPS_API_KEY); // ================================================= || GoogleMaps (Drawer) || ================================================= const [value, setValue] = React.useState(null); const [value1, setValue1] = React.useState(null); const [inputValue, setInputValue] = React.useState(''); const [inputValue1, setInputValue1] = React.useState(''); const [inputValue2, setInputValue2] = React.useState(''); const [inputValue3, setInputValue3] = React.useState(''); const [options, setOptions] = React.useState([]); const [options1, setOptions1] = React.useState([]); const loaded = React.useRef(false); const loaded1 = React.useRef(false); const [mobilenumber, setMobilenumber] = useState(''); const [emailaddress, setEmailaddress] = useState(''); const [city, setCity] = useState(''); const [city1, setCity1] = useState(''); const [zipcode, setZipcode] = useState(''); const [zipcode1, setZipcode1] = useState(''); const [state, setState] = useState(''); const [state1, setState1] = useState(''); const [suburb, setSuburb] = useState(''); const [suburb1, setSuburb1] = useState(''); const [pickContactName, setPickContactName] = useState(''); const [dropContactName, setDropContactName] = useState(''); const [pickdoorno, setPickDoorno] = useState(''); const [dropDoorno, setDropDoorno] = useState(''); const [pickLandmark, setPickLandmark] = useState(''); const [dropLandmark, setDropLandmark] = useState(''); const [address, setAddress] = useState(''); const [address1, setAddress1] = useState(''); const [latlong, setLatlong] = useState({}); const [latlong1, setLatlong1] = useState({}); const autocompleteService = useRef(null); const [tenanatLocoId, setTenanatLocoId] = useState(localStorage.getItem('locationid')); const [isLocation, setIsLocation] = useState(false); const textFieldRef1 = useRef(null); const textFieldRef2 = useRef(null); const [collectionamt, setCollectionamt] = useState(0); const [quantity, setQuantity] = useState(1); const handleOkClick1 = () => { // Set focus back to the text field after clicking the "OK" chip if (textFieldRef1.current) { textFieldRef1.current.focus(); } }; const handleOkClick2 = () => { // Set focus back to the text field after clicking the "OK" chip if (textFieldRef2.current) { textFieldRef2.current.focus(); } }; const top100Films = [ { label: 'The Shawshank Redemption', year: 1994 }, { label: 'The Godfather', year: 1972 }, { label: 'The Godfather: Part II', year: 1974 }, { label: 'The Dark Knight', year: 2008 }, { label: '12 Angry Men', year: 1957 } ]; // // // ====================================================== || address (pick)|| ====================================================== // useEffect(() => { // if (address) { // try { // Geocode.fromAddress(address).then( // (response) => { // if (response.status == 'OK') { // const { lat, lng } = response.results[0].geometry.location; // console.log({ lat, lng }); // setLatlong({ // lat, // lng // }); // console.log(response); // if (response.results[0].address_components) { // let place = response.results[0]; // let cityA, zipcodeA, stateA, suburbA; // for (let i = 0; i < place.address_components.length; i++) { // for (let j = 0; j < place.address_components[i].types.length; j++) { // switch (place.address_components[i].types[j]) { // case 'locality': // cityA = place.address_components[i].long_name; // break; // case 'administrative_area_level_1': // stateA = place.address_components[i].long_name; // break; // case 'postal_code': // zipcodeA = place.address_components[i].long_name; // break; // case 'sublocality': // suburbA = place.address_components[i].long_name; // break; // } // } // } // setCity(cityA || ''); // setState(stateA || ''); // setZipcode(zipcodeA || ''); // setSuburb(suburbA || ''); // console.log({ lat, lng, cityA, stateA, zipcodeA, suburbA }); // setPickCust({ // ...pickCust // // city: cityA, // // state: stateA, // // postcode: zipcodeA, // // suburb: suburbA // // latitude: lat, // // longitude: lng // }); // // setStartPoint({ latitude: lat, longitude: lng }); // } // } // }, // (error) => { // console.log(error); // } // ); // } catch (err) { // console.log(err); // } // } // }, [address]); // // // ====================================================== || address 1 (drop)|| ====================================================== // useEffect(() => { // if (address) { // try { // Geocode.fromAddress(address1).then( // (response) => { // if (response.status == 'OK') { // const { lat, lng } = response.results[0].geometry.location; // setLatlong1({ // lat, // lng // }); // console.log(response); // if (response.results[0].address_components) { // let place = response.results[0]; // let cityB, zipcodeB, stateB, suburbB; // for (let i = 0; i < place.address_components.length; i++) { // for (let j = 0; j < place.address_components[i].types.length; j++) { // switch (place.address_components[i].types[j]) { // case 'locality': // cityB = place.address_components[i].long_name; // break; // case 'administrative_area_level_1': // stateB = place.address_components[i].long_name; // break; // case 'postal_code': // zipcodeB = place.address_components[i].long_name; // break; // case 'sublocality': // suburbB = place.address_components[i].long_name; // break; // } // } // } // setCity(cityB || ''); // setState(stateB || ''); // setZipcode(zipcodeB || ''); // setSuburb(suburbB || ''); // console.log({ lat, lng, cityB, stateB, zipcodeB, suburbB }); // setDropCust({ // ...dropCust // // city: cityB, // // state: stateB, // // postcode: zipcodeB, // // suburb: suburbB // // latitude: lat, // // longitude: lng // }); // // setEndPoint({ latitude: lat, longitude: lng }); // } // } // }, // (error) => { // console.log(error); // } // ); // } catch (err) { // console.log(err); // } // } // }, [address1]); if (typeof window !== 'undefined' && !loaded.current) { if (!document.querySelector('#google-maps')) { loadScript( `https://maps.googleapis.com/maps/api/js?key=${process.env.REACT_APP_GOOGLE_MAPS_API_KEY}&libraries=places&location=10.3656,77.9690&radius=50000&components=country:IN&strictbounds=true`, document.querySelector('head'), 'google-maps' ); } loaded.current = true; } // const fetch = React.useMemo( // () => // debounce((request, callback) => { // autocompleteService.current.getPlacePredictions(request, callback); // }, 400), // [] // ); // const fetch1 = React.useMemo( // () => // debounce((request, callback) => { // autocompleteService.current.getPlacePredictions(request, callback); // }, 400), // [] // ); // ====================================================== || options (pick)|| ====================================================== // React.useEffect(() => { // let active = true; // if (!autocompleteService.current && window.google) { // autocompleteService.current = new window.google.maps.places.AutocompleteService(); // } // if (!autocompleteService.current) { // return undefined; // } // if (inputValue === '') { // setOptions(value ? [value] : []); // return undefined; // } // fetch({ input: inputValue }, (results) => { // if (active) { // let newOptions = []; // if (value) { // newOptions = [value]; // } // if (results) { // newOptions = [...newOptions, ...results]; // } // setOptions(newOptions); // } // }); // return () => { // active = false; // }; // }, [value, inputValue, fetch]); // // ====================================================== || options1 (drop)|| ====================================================== // React.useEffect(() => { // let active = true; // if (!autocompleteService.current && window.google) { // autocompleteService.current = new window.google.maps.places.AutocompleteService(); // } // if (!autocompleteService.current) { // return undefined; // } // if (inputValue1 === '') { // setOptions1(value1 ? [value1] : []); // return undefined; // } // fetch1({ input: inputValue1 }, (results) => { // if (active) { // let newOptions = []; // if (value1) { // newOptions = [value1]; // } // if (results) { // newOptions = [...newOptions, ...results]; // } // setOptions1(newOptions); // } // }); // return () => { // active = false; // }; // }, [value1, inputValue1, fetch1]); const appId = localStorage.getItem('applocationid'); const navigate = useNavigate(); const [open, setOpen] = useState({}); const [open1, setOpen1] = useState(''); const [open2, setOpen2] = useState(false); const [open3, setOpen3] = useState(false); const [open4, setOpen4] = useState(false); const [shift, setShift] = useState(1); const [clientlist, setClientlist] = useState([]); const [clientdetail, setClientdetail] = useState([]); const [eventname, setEventname] = useState(''); const [startdate, setStartdate] = useState(dayjs().format('MM-DD-YYYY')); const [enddate, setEnddate] = useState(dayjs().add(1, 'day').format('MM-DD-YYYY')); // const [starttime, setStatrttime] = useState(`${dayjs().format('MM-DD-YYYY')} 08:00:00`); const [starttime, setStatrttime] = useState(); // const [endtime, setEndtime] = useState(`${dayjs().format('MM-DD-YYYY')} 20:00:00`); const [endtime, setEndtime] = useState(); const [timeslotarr, setTimeslotarr] = useState([]); const [currentsno, setCurrentsno] = useState(''); const [roleoptions, setRoleoptions] = useState([]); const theme = useTheme(); const [otherinstructions, setOtherinstructions] = useState(''); const [attireslist, setAttireslist] = useState([]); const [serviceaddonslist, setServiceaddonslist] = useState([]); const [orderaddonobj, setOrderaddonobj] = useState([]); const [stafflist, setStafflist] = useState([]); const [loading2, setLoading2] = useState(false); const [loading, setLoading] = useState(false); const [btnLoading, setBtnLoading] = useState(false); const [shiftarr, setShiftarr] = useState([]); const [shiftarr1, setShiftarr1] = useState([]); const [orderarr, setOrderarr] = useState([]); const [alertmessage, setAlertmessage] = useState(''); const [tabstatus, setTabstatus] = useState(''); const [tenantinfo, setTenantinfo] = useState({}); const [searchword, setSearchword] = useState(''); const [clientdetailarr, setClientdetailarr] = useState([]); const [clientdetailbusinessarr, setClientdetailbusinessarr] = useState([]); const [admintoken, setAdmintoken] = useState(); const [tenantlocationlist, setTenantlocationlist] = useState([]); const [tenant, setTenant] = useState({}); const [clientinfo, setClientinfo] = useState({}); const [selectedtime, setSelectedtime] = useState(''); const [tenantlist, setTenantlist] = useState([]); const [tenantid, setTenantid] = useState(); const [tenantlocation, setTenantlocation] = useState(''); const [pickupswitch, setPickupswitch] = useState(true); const [deliverytype, setDeliverytype] = useState('B'); const [dropswitch, setDropswitch] = useState(false); const [startPoint, setStartPoint] = useState({ latitude: 0, longitude: 0 }); const [endPoint, setEndPoint] = useState({ latitude: 0, longitude: 0 }); const [showDistance, setShowDistance] = useState(false); const [distance, setDistance] = useState(0); const [basePrice, setBasePrice] = useState(0); const [pricePerKm, setPricePerKm] = useState(0); const [minKm, setMinKm] = useState(0); const [totalCharge, setTotalCharge] = useState(0); const [subCat, setSubCat] = useState([]); const [subCatName, setSubCatName] = useState('Select '); const [subCatId, setSubCatId] = useState(); const [weight, setWeight] = useState(''); const tid = localStorage.getItem('tenantid'); const [selectedCatChip, setSelectedCatChip] = useState(null); const [isCustomerOpen, setIsCustomerOpen] = useState(false); const [searchCustList, setSearchCustList] = useState(''); const [customerlist, setCustomerlist] = useState([]); const [pickCust, setPickCust] = useState({}); const [dropCust, setDropCust] = useState({}); const [pickordrop, setpickordrop] = useState(0); // 1 ->pick 2 -> drop const [addId1, setAddId1] = useState(0); const [addId2, setAddId2] = useState(0); const [tenantLocations, setTenantlocations] = useState([]); const [appLocaLat, setAppLocaLat] = useState(); const [appLocaLng, setAppLocaLng] = useState(); const [appLocaRadius, setAppLocaRadius] = useState(); const [isNumChange1, setIsNumChange1] = useState(0); const [isNumChange2, setIsNumChange2] = useState(0); const [showCheck1, setShowCheck1] = useState(0); const [showCheck2, setShowCheck2] = useState(0); const [pickNum, setPickNum] = useState(); const [dropNum, setdropNum] = useState(); const [numErr1, setNumErr1] = useState(false); const [numErr2, setNumErr2] = useState(false); const [isSms, setIsSms] = useState(0); useEffect(() => { console.log(isSms); }, [isSms]); const handleChipClick = (chipLabel) => { setSelectedCatChip(chipLabel); }; const chipStyle = (chipLabel) => ({ cursor: 'pointer', backgroundColor: selectedCatChip === chipLabel ? theme.palette.primary.main : 'default', color: selectedCatChip === chipLabel ? '#fff' : '', '&:hover': { backgroundColor: selectedCatChip === chipLabel ? theme.palette.primary.main : theme.palette.primary.light, color: '#fff' } }); const fetchTenantPricing = async () => { try { const pricingResponse = await axios.get(`${process.env.REACT_APP_URL}/tenants/gettenantpricing/?tenantid=${tid}`); console.log('pricingResponse', pricingResponse.data.details); setBasePrice(pricingResponse.data.details.baseprice); setPricePerKm(pricingResponse.data.details.priceperkm); setMinKm(pricingResponse.data.details.minkm); } catch (error) { console.log('fetchTenantPricing error', error); } }; useEffect(() => { fetchTenantPricing(); }, []); useEffect(() => { console.log('startPoint', startPoint); console.log('endPoint', endPoint); if (startPoint.latitude != 0 && startPoint.longitude != 0 && endPoint.latitude != 0 && endPoint.longitude != 0) { // getDistance(); calculateDistance(startPoint, endPoint); } }, [startPoint, endPoint]); const getDistance = () => { const dist = geolib.getPreciseDistance(startPoint, endPoint, 1); console.log(`Distance: ${dist} meters`); const distanceInKm = (dist / 1000).toFixed(2); const roundedDistance = Math.round(distanceInKm); console.log('roundedDistance', roundedDistance); setDistance(roundedDistance.toFixed(2)); if (roundedDistance < minKm) { setTotalCharge(basePrice); } else { const total = (roundedDistance - minKm) * pricePerKm + basePrice; setTotalCharge(total); } setShowDistance(true); if (roundedDistance > appLocaRadius) { setShowDistance(true); setOpen4(true); } }; const calculateDistance = async (pickup, drop) => { const service = new google.maps.DistanceMatrixService(); const getDistanceMatrix = (origins, destinations, travelMode, unitSystem) => { return new Promise((resolve, reject) => { service.getDistanceMatrix( { origins: [new google.maps.LatLng(origins.latitude, origins.longitude)], destinations: [new google.maps.LatLng(destinations.latitude, destinations.longitude)], travelMode: travelMode, unitSystem: unitSystem }, (response, status) => { if (status === 'OK') { resolve(response); } else { reject(new Error(`Error calculating distance: ${status}`)); } } ); }); }; try { // Use await to wait for the promise to resolve const response = await getDistanceMatrix(pickup, drop, 'DRIVING', google.maps.UnitSystem.METRIC); // Handle the response const results = response.rows[0].elements; for (let i = 0; i < results.length; i++) { const element = results[i]; const distance = element.distance.value; console.log('distance in m ', distance); const distanceInKm = (distance / 1000).toFixed(2); console.log('distance in km ', distanceInKm); const roundedDistance = Math.round(distanceInKm); console.log('roundedDistance', roundedDistance); setDistance(roundedDistance); if (roundedDistance < minKm) { setTotalCharge(basePrice); } else { console.log('minKm', minKm); console.log('pricePerKm', pricePerKm); console.log('basePrice', basePrice); const total = (roundedDistance - minKm) * pricePerKm + basePrice; console.log('total', total); setTotalCharge(total); } setShowDistance(true); if (roundedDistance > appLocaRadius) { setShowDistance(true); setOpen4(true); } // Extract the numerical value of the duration const durationMatch = element.duration.text.match(/([\d.]+)/); const duration = durationMatch ? parseInt(durationMatch[0]) : null; // Display only the numerical values console.log(`Distance: ${roundedDistance}, Duration: ${duration}`); } } catch (error) { console.error('Error calculating distance:', error); } }; useEffect(() => { if (timeslotarr[0]) { let arr = []; timeslotarr.map((val) => { if (dayjs().diff(dayjs(`${dayjs(startdate).format('MM-DD-YYYY')} ${dayjs(val).format('HH:mm:ss')}`), 'm') <= 0) { arr.push(val); } }); if (arr[0]) { setOrderarr([ { sno: 1, address: '', customerid: '', deliverytime: dayjs(arr[0]) || '', deliverylocationid: '', clientname: '', contactno: '', latitude: '', longitude: '' } ]); } } }, [timeslotarr]); useEffect(() => { if (searchword) { let arr = clientdetail.filter((val) => { return ( val.address.toLowerCase().includes(searchword.toLowerCase()) || val.firstname.toLowerCase().includes(searchword.toLowerCase()) || val.contactno.toLowerCase().includes(searchword.toLowerCase()) ); }); console.log(arr); setClientdetailarr([...arr]); } else { setClientdetailarr([...clientdetail]); } }, [searchword]); // const { ref: materialRef } = usePlacesWidget({ // apiKey: process.env.REACT_APP_GOOGLE_MAPS_API_KEY, // onPlaceSelected: (place) => { // console.log(place); // // setAddress(place.formatted_address) // let city1, zipcode1, state1, suburb1; // for (let i = 0; i < place.address_components.length; i++) { // for (let j = 0; j < place.address_components[i].types.length; j++) { // switch (place.address_components[i].types[j]) { // case 'locality': // city1 = place.address_components[i].long_name; // break; // case 'administrative_area_level_1': // state1 = place.address_components[i].long_name; // break; // case 'postal_code': // zipcode1 = place.address_components[i].long_name; // break; // case 'sublocality': // suburb1 = place.address_components[i].long_name; // break; // } // } // } // // setCity(city1 || '') // // setState(state1 || ''); // // setZipcode(zipcode1 || ''); // // setSuburb(suburb1 || '') // }, // options: { // types: ['address' || 'geocode'] // } // }); // ==================================================== || fetchtenantinfo || ==================================================== const fetchtenantinfo = async () => { setLoading(true); console.log('tid', tid); await axios .get(`${process.env.REACT_APP_URL}/tenants/gettenantinfo/?tenantid=${tid}`) .then((res) => { console.log('fetchtenantinfo', res); if (res.data.status) { setTenant(res.data.details); setTenantid(res.data.details.tenantid); fetchAppAdminTokens(); setSubCatId(res.data.details.subcategoryid); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); }); }; useEffect(() => { fetchtenantinfo(); }, []); const getsubcategories = async () => { await axios .get(`${process.env.REACT_APP_URL}/utils/getsubcategories/?moduleid=6`) .then((res) => { console.log('subcateRes', res.data.details); if (res.data.status && res.data.details) { setSubCat(res.data.details); } else { setSubCat([]); } }) .catch((err) => { console.log(err); setSubCat([]); }); }; useEffect(() => { getsubcategories(); }, []); // ==================================================== || fetchTiming || ==================================================== const fetchTiming = async () => { setLoading(true); await axios .get(`${process.env.REACT_APP_URL}/utils/getapplocations/?applocationid=${appId}`) .then((res) => { console.log('fetchTiming', res); const { opentime, closetime, latitude, longitude, radius } = res.data.details[0]; if (res.data.status) { setAppLocaLat(latitude); setAppLocaLng(longitude); setAppLocaRadius(radius); setStatrttime(`${dayjs().format('MM-DD-YYYY')} ${opentime}`); setEndtime(`${dayjs().format('MM-DD-YYYY')} ${closetime}`); console.log('starttime', `${dayjs().format('MM-DD-YYYY')} ${opentime}`); console.log('endtime', `${dayjs().format('MM-DD-YYYY')} ${closetime} `); let arr = []; for ( let i = `${dayjs().format('MM-DD-YYYY')} ${opentime}`, j = 0; dayjs(`${dayjs().format('MM-DD-YYYY')} ${closetime} `).diff(i, 'm') >= 0; j++, i = dayjs(i).add(30, 'm') ) { arr.push(i); } console.log('setTimeslotarr', arr); setTimeslotarr(arr); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); }); }; useEffect(() => { fetchTiming(); }, []); // =============================================== || fetchAppAdminTokens (via appId) || =============================================== const fetchAppAdminTokens = async () => { setLoading(true); await axios .get(`${process.env.REACT_APP_URL}/utils/getapplocationconfig/?applocationid=${appId}`) .then((res) => { const userfcmtokemArray = res.data.details.applocationadmins.map((admin) => admin.userfcmtokem); console.log('fetchAppAdminTokens', res); console.log('userfcmtokemArray', userfcmtokemArray); if (res.data.status) { setAdmintoken(userfcmtokemArray); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); }); }; useEffect(() => { if (starttime && endtime) { fetchAppAdminTokens(); } }, [starttime, endtime]); // =============================================== || opentoast || =============================================== const opentoast = (message, variant, time) => { enqueueSnackbar(message, { variant: variant, anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: time ? time : 2000 }); console.log(alertmessage); }; function closeAddressModal() { setOpen2(false); } function closetimemodal() { setOpen3(false); setCurrentsno(''); } // =============================================== || createsubmitobj1 (create orders) || =============================================== const createsubmitobj2 = async () => { let arr = {}; arr = { orders: { applocationid: tenant.applolcationid, cancellled: '', categoryid: +tenant.categoryid, configid: 7, customerid: isNumChange1 == 0 ? +pickCust.customerid || 0 : 0, deliveryaddress: dropCust.address || '', deliverycharge: +totalCharge.toFixed(2) || 0, deliverycity: dropCust.city || '', deliverycontactno: dropCust.contactno || '', deliverycustomer: dropCust.firstname || '', deliveryid: isNumChange2 == 0 ? +dropCust.customerid || 0 : 0, deliverylandmark: dropCust.landmark || '', deliverylat: dropCust.latitude.toString(), deliverylocation: dropCust.suburb || '', deliverylocationid: dropCust.deliverylocationid || 0, deliverylong: dropCust.longitude.toString(), deliverytime: `${dayjs(startdate).format('YYYY-MM-DD')} ${dayjs(selectedtime.$d).format('HH:mm:ss')}`, deliverytype: pickCust.customerid !== 0 || dropCust.customerid !== 0 ? 'B' : 'C', delivered: '', itemcount: 1, kms: distance.toString() || 0, locationid: +tenanatLocoId, //main or branch moduleid: +tenant.moduleid, orderamount: +totalCharge.toFixed(2) || 0, ordercharges: 0.0, orderdate: dayjs().format('YYYY-MM-DD HH:mm:ss'), orderheaderid: 0, orderid: '', // ordernotes: otherinstructions, orderstatus: 'created', ordervalue: +totalCharge.toFixed(2) || 0, partnerid: tenant.partnerid, paymentstatus: 1, paymenttype: 42, pending: '', pickupaddress: pickCust.address || '', pickupcity: pickCust.city || '', pickupcontactno: pickCust.contactno || '', pickupcustomer: pickCust.firstname || '', pickuplandmark: pickCust.landmark || '', pickuplat: pickCust.latitude.toString(), pickuplocation: pickCust.suburb || '', pickuplocationid: pickCust.deliverylocationid || 0, pickuplong: pickCust.longitude.toString(), processing: '', ready: '', remarks: '', smsdelivery: isSms, subcategoryid: +subCatId, taxamount: 0.0, tenantid: tenant.tenantid, tenantuserid: parseInt(localStorage.getItem('userid')), collectionamt: +collectionamt || 0, quantity: +quantity || 1 }, pickup: { address: pickCust.address || '', applocationid: tenant.applolcationid, city: pickCust.city || '', configid: 7, contactno: pickCust.contactno || '', customertoken: '', customerid: isNumChange1 == 0 ? pickCust.customerid || 0 : 0, devicetype: '', deviceid: '', dialcode: '+91', doorno: pickCust.doorno || '', email: pickCust.email || '', firstname: pickCust.firstname || '', landmark: pickCust.landmark || '', latitude: pickCust.latitude.toString() || '', longitude: pickCust.longitude.toString() || '', locationid: pickCust.deliverylocationid || 0, postcode: pickCust.postcode || '', primaryaddress: 1, profileimage: '', state: pickCust.state || '', suburb: pickCust.suburb || '', tenantid: tenant.tenantid }, drop: { address: dropCust.address || '', applocationid: tenant.applolcationid, city: dropCust.city || '', configid: 7, contactno: dropCust.contactno || '', customertoken: '', customerid: isNumChange2 == 0 ? dropCust.customerid || 0 : 0, devicetype: '', deviceid: '', dialcode: '+91', doorno: dropCust.doorno || '', email: dropCust.email || '', firstname: dropCust.firstname || '', landmark: dropCust.landmark || '', latitude: dropCust.latitude.toString(), longitude: dropCust.longitude.toString(), locationid: dropCust.deliverylocationid || 0, postcode: dropCust.postcode || '', primaryaddress: 1, profileimage: '', state: dropCust.state || '', suburb: dropCust.suburb || '', tenantid: tenant.tenantid } }; console.log('createsubmitobj2', arr); if (!pickCust.firstname) { opentoast('Enter Pickup Contact Name ', 'warning', 2000); } else if (!pickCust.contactno) { opentoast('Enter Pickup Contact Number ', 'warning', 2000); } else if (pickCust.contactno.length != 10) { opentoast('Check Pickup Contact Number ', 'error', 2000); } else if (!pickCust.suburb) { opentoast('Enter Pickup Location ', 'warning', 2000); } else if (!pickCust.city) { opentoast('Enter Pickup City ', 'warning', 2000); } else if (!pickCust.postcode) { opentoast('Enter Pickup Postcode ', 'warning', 2000); } else if (!pickCust.landmark) { opentoast('Enter Pickup Landmark ', 'warning', 2000); } else if (!dropCust.firstname) { opentoast('Enter Drop Contact Name ', 'warning', 2000); } else if (!dropCust.contactno) { opentoast('Enter Drop Contact Number', 'warning', 2000); } else if (dropCust.contactno.length !== 10) { opentoast('Check Drop Contact Number ', 'error', 2000); } else if (!dropCust.suburb) { opentoast('Enter Drop Suburb ', 'warning', 2000); } else if (!dropCust.city) { opentoast('Enter Drop City ', 'warning', 2000); } else if (!dropCust.postcode) { opentoast('Enter Drop postcode ', 'warning', 2000); } else if (!dropCust.landmark) { opentoast('Enter Drop Landmark ', 'warning', 2000); } else if (!selectedtime) { opentoast('Choose deliverytime ', 'warning', 2000); } else if (!setSubCatId) { opentoast('Choose SubCategory ', 'warning', 2000); } else { try { const createRes = await axios.post(`${process.env.REACT_APP_URL2}/orders/createorder`, arr); // const createRes = await axios.post(`${process.env.REACT_APP_URL}/orders/createorder`, arr); if (createRes.data.status) { console.log('createRes', createRes); enqueueSnackbar('Order Created Successfully', { variant: 'success', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 1000 }); if (admintoken) { notifyadmin(admintoken); // sendnotifications(); } navigate('/nearle/orders'); } else { opentoast('Something went wrong, Cannot create order', 'warning'); } setLoading(false); console.log(createRes); } catch (error) { console.log('createResErr', error); } } }; useEffect(() => { console.log('shiftarr'); console.log(shiftarr); }, [shiftarr]); const clicked1 = (e) => { setShift(e); }; const dialogopen = (i, result) => { console.log(i, result); setOpen({ shiftsno: result.sno, sno: i.sno }); }; const dialogclose = () => { setOpen(''); }; // ========================================================= || clientdetails || ========================================================= const clientdetails = async () => { setLoading2(true); try { let url = searchCustList == '' ? // ? `${process.env.REACT_APP_URL}/customers/getbytid/?tenantid=${tid}&pageno=1&pagesize=1` `${process.env.REACT_APP_URL}/customers/gettenantcustomers/?tenantid=${tid}&pageno=1&pagesize=20` : `${process.env.REACT_APP_URL}/customers/search/?tenantid=${tid}&keyword=${searchCustList}`; await axios .get(url) .then((res) => { console.log('clientdetails', res.data.details); if (res.data.status && res.data.details) { setClientdetail(res.data.details || []); setCustomerlist(res.data.details || []); let arr = []; res.data.details.map((val) => { arr.push({ label: `${val.firstname} | ${val.contactno}`, ...val }); }); setClientdetailarr(arr); } else { setClientdetail([]); setCustomerlist([]); setClientdetailarr([]); } setLoading2(false); }) .catch((err) => { console.log(err); setLoading2(false); opentoast('server error', 'warning'); }); } catch (err) { console.log(err); setLoading2(false); } }; useEffect(() => { console.log('clientdetails, by search'); clientdetails(); // clientdetailsbusiness(); }, [searchCustList.length > 3, searchCustList == '']); // ========================================================= || clientdetailsbusiness || ========================================================= const clientdetailsbusiness = async () => { setLoading2(true); try { await axios .get(`${process.env.REACT_APP_URL}/customers/getbytid/?tenantid=${tid}&locationid=1`) .then((res) => { console.log('clientdetailsbusiness', res.data.details); if (res.data.status) { setClientdetail(res.data.details); // if (!searchword) { // setClientdetailarr(res.data.details) // } let arr = []; res.data.details.map((val) => { arr.push({ label: `${val.firstname} | ${val.contactno}`, ...val }); }); setClientdetailbusinessarr(arr); } setLoading2(false); }) .catch((err) => { console.log(err); setLoading2(false); opentoast('server error', 'warning'); }); } catch (err) { console.log(err); setLoading2(false); } }; // ================================================== || sendnotifications || ================================================== const sendnotifications = async () => { setLoading(true); await axios .post(`${process.env.REACT_APP_URL}/utils/sendnotifications`, { priority: 'high', registration_ids: admintoken, data: { accessid: process.env.REACT_APP_RIDER_ACCESS_ID }, notification: { title: 'Nearle Merchant', body: 'An Order has been placed successfully,kindly process the same', sound: 'ring' } }) .then((res) => { console.log(res); if (res.data.message == 'Success') { enqueueSnackbar('Notification sent Successfully', { variant: 'success', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 1000 }); } setLoading(false); }) .catch((err) => { console.log(err); enqueueSnackbar(err.message, { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 1000 }); setLoading(false); }); }; // ============================================= || Google Maps Autocomplete(pick) || ============================================= useEffect(() => { // Initialize Google Maps Autocomplete if (inputValue2) { const autocompleteInput = document.getElementById('addressAuto1'); const autocomplete = new window.google.maps.places.Autocomplete(autocompleteInput, { // types: ['(cities)'], // You can adjust the types parameter based on your requirements strictBounds: true, bounds: new window.google.maps.Circle({ // center: new window.google.maps.LatLng(11.0050707, 76.9509083), // radius: 100000 center: new window.google.maps.LatLng(appLocaLat, appLocaLng), radius: appLocaRadius * 1000 }).getBounds() }); let arr = []; // Event listener for autocomplete place changed autocomplete.addListener('place_changed', () => { const place = autocomplete.getPlace(); setInputValue2(`${place.name}, ${place.formatted_address}`); console.log('new place', place); // Do something with the selected place console.log(' pick (new place) lat lng', { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }); // Do something with the selected place // to trigger getDistance setStartPoint({ latitude: place.geometry.location.lat(), longitude: place.geometry.location.lng() }); setValue(place); setAddress(`${place.name} ${place.formatted_address}`); setPickCust({ ...pickCust, address: `${place.name} ${place.formatted_address}` }); const address = { address: `${place.name} ${place.formatted_address}`, street_number: '', route: '', locality: '', sublocality_level_1: '', administrative_area_level_3: '', administrative_area_level_1: '', country: '', postal_code: '' }; place.address_components.forEach((component) => { component.types.forEach((type) => { switch (type) { case 'street_number': address.street_number = component.long_name; break; case 'route': address.route = component.long_name; break; case 'locality': address.locality = component.long_name; break; case 'sublocality_level_1': address.sublocality_level_1 = component.long_name; break; case 'administrative_area_level_3': address.administrative_area_level_3 = component.long_name; break; case 'administrative_area_level_1': address.administrative_area_level_1 = component.long_name; break; case 'country': address.country = component.long_name; break; case 'postal_code': address.postal_code = component.long_name; break; // Add more cases as needed for other types } }); }); // Use address object as per your requirements setPickCust({ ...pickCust, address: address.address, doorno: `${address.street_number} ${address.route}`, suburb: address.sublocality_level_1, city: address.locality, postcode: address.postal_code, latitude: place.geometry.location.lat(), longitude: place.geometry.location.lng() }); console.log('Pick Address:', address); }); } }, [inputValue2]); // ============================================= || Google Maps Autocomplete(Drop) || ============================================= useEffect(() => { if (inputValue3) { // Initialize Google Maps Autocomplete const autocompleteInput = document.getElementById('addressAuto2'); const autocomplete = new window.google.maps.places.Autocomplete(autocompleteInput, { // types: ['(cities)'], // You can adjust the types parameter based on your requirements strictBounds: true, bounds: new window.google.maps.Circle({ // center: new window.google.maps.LatLng(11.0050707, 76.9509083), center: new window.google.maps.LatLng(appLocaLat, appLocaLng), radius: appLocaRadius * 1000 //km to m // radius: 100000 //km to m }).getBounds() }); let arr = []; // Event listener for autocomplete place changed autocomplete.addListener('place_changed', () => { const place = autocomplete.getPlace(); setInputValue3(`${place.name}, ${place.formatted_address}`); console.log('new place', place); // Do something with the selected place console.log('drop (new place) lat lng', { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }); // Do something with the selected place setEndPoint({ latitude: place.geometry.location.lat(), longitude: place.geometry.location.lng() }); setValue1(place); setAddress1(`${place.name} ${place.formatted_address}`); setDropCust({ ...dropCust, address: `${place.name} ${place.formatted_address}` }); const address = { address: `${place.name} ${place.formatted_address}`, street_number: '', route: '', locality: '', sublocality_level_1: '', administrative_area_level_3: '', administrative_area_level_1: '', country: '', postal_code: '' }; place.address_components.forEach((component) => { component.types.forEach((type) => { switch (type) { case 'street_number': address.street_number = component.long_name; break; case 'route': address.route = component.long_name; break; case 'locality': address.locality = component.long_name; break; case 'sublocality_level_1': address.sublocality_level_1 = component.long_name; break; case 'administrative_area_level_3': address.administrative_area_level_3 = component.long_name; break; case 'administrative_area_level_1': address.administrative_area_level_1 = component.long_name; break; case 'country': address.country = component.long_name; break; case 'postal_code': address.postal_code = component.long_name; break; // Add more cases as needed for other types } }); }); // Use address object as per your requirements setDropCust({ ...dropCust, address: address.address, doorno: `${address.street_number} ${address.route}`, suburb: address.sublocality_level_1, city: address.locality, postcode: address.postal_code, latitude: place.geometry.location.lat(), longitude: place.geometry.location.lng() }); console.log('Drop Address:', address); }); } }, [inputValue3]); // ============================================= || gettenantlocations (branches) || ============================================= const gettenantlocations = async () => { try { const res = await axios.get(`${process.env.REACT_APP_URL}/tenants/gettenantlocations/?tenantid=${tid}`); console.log('gettenantlocations', res.data.details); if (res.data && res.data.details) { setTenantlocations(res.data.details); if (res.data.details.length == 1) { setIsLocation(true); setTenanatLocoId(res.data.details[0].locationid); } } else { setTenantlocations([]); } } catch (err) { console.log('gettenantlocations', err); setTenantlocations([]); } }; useEffect(() => { gettenantlocations(); }, []); return ( <> {loading && } Create Order Fill pickup, drop, schedule & pricing details {tenantLocations.length === 1 ? ( {tenantLocations[0].locationname} ) : ( option && option.locationname ? `${option.locationname} (${option.suburb || ''})` : '' } isOptionEqualToValue={(option, value) => option?.locationid === value?.locationid} PaperComponent={SoftPaper} sx={{ width: { xs: '100%', sm: 300 } }} size="small" renderInput={(params) => ( ) }} sx={{ '& .MuiOutlinedInput-root': { borderRadius: DT.radiusPill + 'px', bgcolor: '#fff', fontWeight: 600, '& fieldset': { borderColor: edge(BRAND), borderWidth: 1.5 }, '&:hover fieldset': { borderColor: BRAND }, '&.Mui-focused': { boxShadow: `0 0 0 3px ${ring(BRAND)}` }, '&.Mui-focused fieldset': { borderColor: BRAND, borderWidth: 2 } } }} /> )} onChange={(event, value, reason) => { if (value) { setTenanatLocoId(value.locationid); setIsLocation(true); } if (reason === 'clear') { setIsLocation(false); } }} /> )} {/* ================================================= || Pickup || ================================================= */} } title="Pickup Details" subtitle="Where the order is picked up" action={ } /> {/* ====================================== ||Contact Name (pick) || ====================================== */} ) }} variant="outlined" label="Contact Name" value={pickCust.firstname} onChange={(e) => { setPickCust({ ...pickCust, firstname: e.target.value }); }} /> {/* ====================================== ||Contact Number(pick) || ====================================== */} ) }} variant="outlined" label="Contact Number" value={pickCust.contactno} onChange={(e) => { if (e.target.value.length <= 10) { setPickCust({ ...pickCust, contactno: e.target.value }); } if (pickNum == e.target.value) { setShowCheck1(0); } else { setShowCheck1(1); } if (e.target.value.length < 10) { setNumErr1(true); } else { setNumErr1(false); } }} /> {/* ====================================== || Address (pick) || ====================================== */} {addId1 == 0 ? (
setInputValue2(e.target.value)} InputProps={{ endAdornment: ( { setInputValue2(''); setPickCust({ ...pickCust, doorno: '', suburb: '', city: '', postcode: '', landmark: '' }); setShowDistance(false); setStartPoint({ latitude: 0, longitude: 0 }); }} size="small" > ) }} />
) : ( { setAddId1(0); setPickCust({ ...pickCust, // firstname: '', // contactno: '', doorno: '', suburb: '', city: '', postcode: '', landmark: '' }); setShowDistance(false); setStartPoint({ latitude: 0, longitude: 0 }); }} > ) }} variant="outlined" placeholder="Select" value={pickCust.address} onChange={(e) => { setPickCust({ ...pickCust, address: e.target.value }); if (e.target.value == '') { setAddId1(0); setShowDistance(false); setStartPoint({ latitude: 0, longitude: 0 }); } }} /> )}
{/* ====================================== ||Door No (pick) || ====================================== */} ) }} variant="outlined" label="Door No / Street" value={pickCust.doorno} onChange={(e) => { setPickCust({ ...pickCust, doorno: e.target.value }); }} /> {/* ====================================== || Suburb (pick) || ====================================== */} ) }} variant="outlined" label="Location" value={pickCust.suburb} onChange={(e) => { setPickCust({ ...pickCust, suburb: e.target.value }); }} /> {/* ====================================== || City (pick) || ====================================== */} ) }} variant="outlined" label="City" value={pickCust.city} onChange={(e) => { setPickCust({ ...pickCust, city: e.target.value }); }} /> {/* ====================================== || postcode (pick) || ====================================== */} ) }} variant="outlined" label="Postcode" value={pickCust.postcode} onChange={(e) => { setPickCust({ ...pickCust, postcode: e.target.value }); }} /> {/* ====================================== || Landmark (pick) || ====================================== */} ) }} variant="outlined" label="Landmark" value={pickCust.landmark} onChange={(e) => { setPickCust({ ...pickCust, landmark: e.target.value }); }} /> {/* ====================================== ||Checkbox save for later (pick) || ====================================== */} {showCheck1 == 1 && ( { setIsNumChange1(e.target.checked ? 1 : 0); }} /> } label="Save For Later" /> )}
{/* ================================================= || Drop || ================================================= */} } title="Drop Details" subtitle="Where the order is delivered" action={ } /> Drop Details {/* Customer */} {/* { if (val) { setDropswitch(true); setClientinfo({}); } else { setDropswitch(false); setClientinfo({}); } }} size="small" /> Business */} {/* new2 */} {/* `${option.firstname} (${option.contactno})`} sx={{ mt: 0, mb: 1 }} renderInput={(params) => ( { setSearchCustList(e.target.value); }} InputProps={{ ...params.InputProps, inputProps: { ...params.inputProps, maxLength: 10 } }} /> )} onChange={(e, val, reason) => { if (val) { if (pickCust.customerid === val.customerid) { opentoast('Select Another Customer', 'error'); setSearchCustList(''); } else { console.log('DropClient', val); setDropCust(val); setEndPoint({ latitude: val.latitude, longitude: val.longitude }); setAddId2(1); } } if (reason == 'clear') { setSearchCustList(''); } }} noOptionsText={ /^[0-9]{10}$/.test(searchCustList) ? ( { setDropCust({ ...dropCust, contactno: searchCustList }); handleOkClick2(); setSearchCustList(''); }} /> ) : null } /> */} {/* ====================================== ||Contact Name (drop) || ====================================== */} ) }} value={dropCust.firstname} onChange={(e) => { setDropCust({ ...dropCust, firstname: e.target.value }); }} /> {/* ====================================== ||Contact Number (drop) || ====================================== */} ) }} value={dropCust.contactno} onChange={(e) => { if (e.target.value.length <= 10) { setDropCust({ ...dropCust, contactno: e.target.value }); } if (dropNum == e.target.value) { setShowCheck2(0); } else { setShowCheck2(1); } if (e.target.value.length < 10) { setNumErr2(true); } else { setNumErr2(false); } }} /> {addId2 == 0 ? (
setInputValue3(e.target.value)} InputProps={{ endAdornment: ( { setInputValue3(''); setDropCust({ ...dropCust, doorno: '', suburb: '', city: '', postcode: '', landmark: '' }); setShowDistance(false); setEndPoint({ latitude: 0, longitude: 0 }); }} size="small" > ) }} />
) : ( { setAddId2(0); setDropCust({ ...dropCust, firstname: '', contactno: '', doorno: '', suburb: '', city: '', postcode: '', landmark: '' }); setShowDistance(false); setEndPoint({ latitude: 0, longitude: 0 }); }} > ) }} variant="outlined" placeholder="Select" value={dropCust.address} onChange={(e) => { setPickCust({ ...dropCust, address: e.target.value }); if (e.target.value == '') { setAddId2(0); setShowDistance(false); setEndPoint({ latitude: 0, longitude: 0 }); } }} /> )}
{/* ====================================== ||Door No (drop) || ====================================== */} ) }} value={dropCust.doorno} onChange={(e) => { setDropCust({ ...dropCust, doorno: e.target.value }); }} /> {/* ====================================== ||Suburb (drop) || ====================================== */} ) }} value={dropCust.suburb} onChange={(e) => { setDropCust({ ...dropCust, suburb: e.target.value }); }} /> {/* ====================================== ||City (drop) || ====================================== */} ) }} value={dropCust.city} onChange={(e) => { setDropCust({ ...dropCust, city: e.target.value }); }} /> {/* ====================================== ||Postcode (drop) || ====================================== */} ) }} value={dropCust.postcode} onChange={(e) => { setDropCust({ ...dropCust, postcode: e.target.value }); }} /> {/* ====================================== ||Landmark (drop) || ====================================== */} ) }} value={dropCust.landmark} onChange={(e) => { setDropCust({ ...dropCust, landmark: e.target.value }); }} /> {/* ====================================== ||Checkbox save for later (drop) || ====================================== */} {showCheck2 == 1 && ( { setIsNumChange2(e.target.checked ? 1 : 0); }} /> } label="Save For Later" /> )}
{/* */}
{/* ================================================= || Time || ================================================= */} } title="Schedule" subtitle="Pickup date & time slot" /> Date { let dateres11 = dayjs().diff(dayjs(`${dayjs(e).format('YYYY-MM-DD')}`), 'd'); console.log('dateres11'); console.log(dateres11); setSelectedtime(''); if (dateres11 <= 0) { console.log('startdate', e); setStartdate(e); setEnddate(e); let arr = []; timeslotarr.map((val) => { if ( dayjs().diff(dayjs(`${dayjs(e).format('MM-DD-YYYY')} ${dayjs(val).format('HH:mm:ss')}`), 'm') <= 0 ) { arr.push(val); } }); if (arr[0]) { setOrderarr([ { sno: 1, address: '', customerid: '', deliverytime: dayjs(arr[0]) || '', deliverylocationid: '', clientname: '', contactno: '', latitude: '', longitude: '' } ]); } else { setOrderarr([]); } } else { setAlertmessage('choose Upcoming Date'); opentoast('choose Upcoming Date', 'warning'); setStartdate(NaN); } }} value={dayjs(startdate)} sx={{ width: '100%', mt: 2 }} disablePast /> Time {timeslotarr.map((val, index) => { if ( dayjs().diff(dayjs(`${dayjs(startdate).format('MM-DD-YYYY')} ${dayjs(val).format('HH:mm:ss')}`), 'm') <= 0 ) { const active = dayjs(selectedtime).format('HH:mm') == dayjs(val).format('HH:mm'); return ( { if (distance > appLocaRadius) { setOpen4(true); } else if (showDistance) { setSelectedtime(val); } else { opentoast('Select Pickup and Drop', 'error'); } }} sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.5, px: 1.25, py: 0.5, cursor: 'pointer', borderRadius: 999, border: `1.5px solid ${active ? '#f59e0b' : edge('#f59e0b')}`, bgcolor: active ? '#f59e0b' : tint('#f59e0b'), color: active ? '#fff' : '#f59e0b', fontSize: 12, fontWeight: 800, transition: 'all 0.15s', boxShadow: active ? `0 6px 18px ${ring('#f59e0b')}` : 'none', '&:hover': { borderColor: '#f59e0b', boxShadow: active ? `0 6px 18px ${ring('#f59e0b')}` : `0 0 0 3px ${ring('#f59e0b')}` } }} > {dayjs(val).format('hh:mm A')} ); } })} } title="Distance & Pricing" subtitle="Auto-calculated from pickup → drop" /> {showDistance && ( )} Category `${option.subcategoryname}` || ''} sx={{ my: 2, zIndex: '100' }} fullWidth renderInput={(params) => } onChange={(event, value, reason) => { if (value) { console.log(value); setSubCatName(value.subcategoryname); setSubCatId(value.subcategoryid); } }} /> Weight { handleChipClick('1-10kgs'); setWeight('1-10kgs'); }} /> { handleChipClick('11-20kgs'); setWeight('11-20kgs'); }} /> { handleChipClick('21-30kgs'); setWeight('21-30kgs'); }} /> SMS Delivery { setIsSms(e.target.checked ? 1 : 0); }} />
{/* ============================== || Cash Collect & Quantity || ============================== */} } title="Collection & Quantity" subtitle="Cash to collect on delivery, total items" /> setCollectionamt(e.target.value)} inputProps={{ min: 0 }} /> setQuantity(e.target.value)} inputProps={{ min: 1 }} /> {/* ================================================= || Notes || ================================================= */} } title="Notes" subtitle="Add anything the rider should know" /> setOtherinstructions(e.target.value)} /> {!showDistance && ( Set pickup & drop to enable )}
{/* Select Time {timeslotarr.map((val) => { if ( dayjs().diff(dayjs(`${dayjs(startdate).format('MM-DD-YYYY')} ${dayjs(val).format('HH:mm:ss')}`), 'm') <= 0 // && currentsno ) { return ( <> { setSelectedtime(dayjs(val).format('hh:mm A')); }} /> ); } })} */} {/* ============================================= || saved address Dialog || ============================================= */} setIsCustomerOpen(false)} fullWidth maxWidth="sm" PaperProps={{ sx: { borderRadius: 3 } }} > Saved Locations Pick a saved customer for {pickordrop === 1 ? 'Pickup' : 'Drop'} setSearchCustList(e.target.value)} sx={{ flex: 1, '& .MuiOutlinedInput-input': { p: '6px 4px', fontSize: 13, fontWeight: 600 }, '& fieldset': { border: 'none' } }} endAdornment={ searchCustList && ( setSearchCustList('')} sx={{ p: 0.25, color: BRAND }}> ) } autoComplete="off" /> {customerlist.length === 0 ? ( No saved locations {searchCustList ? 'Try a different keyword.' : 'Save a customer from the order form to reuse it later.'} ) : ( {customerlist.map((address, index) => { const isUsed = pickCust.customerid === address.customerid; return ( { if (isUsed) return; setIsCustomerOpen(false); if (pickordrop === 1) { setAddId1(1); setStartPoint({ latitude: address.latitude, longitude: address.longitude }); setPickCust(address); setPickNum(address.contactno); } else { setAddId2(1); setEndPoint({ latitude: address.latitude, longitude: address.longitude }); setDropCust(address); setdropNum(address.contactno); } }} sx={{ display: 'flex', alignItems: 'flex-start', gap: 1.25, p: 1.5, borderRadius: 2, border: '1px solid', borderColor: isUsed ? edge('#94a3b8') : DT.borderSubtle, bgcolor: isUsed ? DT.surfaceAlt : '#fff', cursor: isUsed ? 'not-allowed' : 'pointer', opacity: isUsed ? 0.6 : 1, transition: 'all 0.15s', '&:hover': isUsed ? {} : { borderColor: edge(BRAND), bgcolor: tint(BRAND), boxShadow: DT.shadowSoft } }} > {String(address.firstname || '?').charAt(0).toUpperCase()} {address.firstname} {address.contactno} {isUsed && ( Already used )} {address.address} ); })} )} setOpen4(false)} PaperProps={{ sx: { borderRadius: 3 } }}> Out of Service Area This drop point is outside the supported radius Service is not available at this location. Try a different drop point within the coverage zone.
); }; export default Createorder1;