import { useEffect, useState } from 'react'; // material-ui import { useTheme } from '@mui/material/styles'; import { Box, Button, FormLabel, Grid, InputLabel, MenuItem, Select, Stack, TextField, Typography } from '@mui/material'; // third-party // import { PatternFormat } from 'react-number-format'; // project import import Avatar from 'components/@extended/Avatar'; import MainCard from 'components/MainCard'; import { // facebookColor, linkedInColor, twitterColor ThemeMode } from 'config'; import axios from 'axios'; // assets import { // FacebookFilled, LinkedinFilled, TwitterSquareFilled, CameraOutlined } from '@ant-design/icons'; import { usePlacesWidget } from 'react-google-autocomplete'; import Loader from 'components/Loader'; import Geocode from 'react-geocode'; import { enqueueSnackbar } from 'notistack'; import { useNavigate } from 'react-router'; // import { setLocationType } from 'react-geocode'; // const avatarImage = require.context('assets/images/users', true); // styles & constant // const ITEM_HEIGHT = 48; // const ITEM_PADDING_TOP = 8; // const MenuProps = { // PaperProps: { // style: { // maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP // } // } // }; const CreateCustomer = () => { const theme = useTheme(); const [selectedImage, setSelectedImage] = useState(undefined); const [avatar, setAvatar] = useState(); // avatarImage(`./default.png`) const [businessname, setBusinessname] = useState(''); const [businessno, setBusinessno] = useState(''); // const [role, setRole] = useState(''); const [mobilenumber, setMobilenumber] = useState(''); const [emailaddress, setEmailaddress] = useState(''); const [city, setCity] = useState(''); const [zipcode, setZipcode] = useState(''); const [address, setAddress] = useState(''); const [state, setState] = useState(''); const [suburb, setSuburb] = useState(''); const [latlong, setLatlong] = useState({}); const [profiledetails, setProfiledetails] = useState({}); const [primarycontact, setPrimarycontact] = useState(''); const [firstname, setFirstname] = useState(''); const [doorno, setDoorno] = useState(''); const [landmark, setLandmark] = useState(''); const [tenantinfo, setTenantinfo] = useState({}); const navigate = useNavigate(); Geocode.setApiKey(process.env.REACT_APP_GOOGLE_MAPS_API_KEY); // Geocode.setApiKey('AIzaSyCF4KatYCI3vqz1_H3kiHeyS3yCMfYToh8'); const [loading, setLoading] = useState(false); useEffect(() => { // fetchprofiledetails(localStorage.getItem('appuserid')); // fetchprofiledetails(181); if (localStorage.getItem('tenantid')) { fetchtenantinfo(localStorage.getItem('tenantid')); } }, []); useEffect(() => { try { Geocode.fromAddress(address).then( (response) => { if (response.status == 'OK') { const { lat, lng } = response.results[0].geometry.location; setLatlong({ lat, lng }); console.log(response); } }, (error) => { console.log(error); } ); } catch (err) { console.log(err); } }, [address]); const opentoast = (message) => { enqueueSnackbar(message, { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); // console.log(alertmessage) }; const fetchprofiledetails = async (userid) => { if (userid) { setLoading(true); try { await axios .get(`${process.env.REACT_APP_URL2}/tenants/getclient?id=${userid}`) .then((res) => { console.log(res); if (res.data.message === 'Successful') { let res1 = res.data.details; setProfiledetails(res1); setBusinessname(res1.tenantname); setBusinessno(res1.registrationno); setMobilenumber(res1.contactno); setPrimarycontact(res1.primarycontact); setEmailaddress(res1.primaryemail); setAddress(res1.address); setCity(res1.city); setZipcode(res1.postcode); setState(res1.state); setSuburb(res1.suburb); setLatlong({ lat: res1.latitude, lng: res1.longitude }); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); }); } catch (err) { console.log(err); setLoading(false); } } }; const fetchtenantinfo = async (tid) => { setLoading(true); await axios .get(`${process.env.REACT_APP_URL}/tenants/gettenantinfo/?tenantid=${tid}`) .then((res) => { console.log('fetchtenantinfo', res.data.details); if (res.data.status) { setTenantinfo(res.data.details); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); }); }; useEffect(() => { if (selectedImage) { setAvatar(URL.createObjectURL(selectedImage)); } }, [selectedImage]); 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 || ''); // setAddress(place.formatted_address) }, // inputAutocompleteValue: "country", options: { // componentRestrictions: 'us', // types: ["establishment"] types: ['address' || 'geocode'] } }); const createprofile = async () => { console.log('res', businessname, businessno, mobilenumber, emailaddress, address, city, zipcode); // if (!businessname) { // opentoast('Fill Business name') // } else if (!businessno) { // opentoast('Fill Registration No') // } // else if (!firstname) { opentoast('Fill Full name'); } else if (!mobilenumber) { opentoast('Fill Mobile Number'); } // else if (!emailaddress) { // opentoast('Fill emailaddress') // } else if (!address) { opentoast('Fill Address'); } else if (!city) { opentoast('Fill City'); } else if (!zipcode) { opentoast('Fill post code'); } else if (!suburb) { opentoast('Fill suburb'); } // else if (!emailaddress) { // opentoast('Fill emailaddress') // } else if (!latlong.lat || !latlong.lng) { opentoast('Choose valid address'); } else { let obj = { customerid: 0, configid: 1, firstname: firstname, applocationid: tenantinfo.applolcationid, profileimage: '', dialcode: '+91', contactno: mobilenumber, devicetype: '', deviceid: '', customertoken: '', address: address, suburb: suburb, city: city, state: state, postcode: zipcode, landmark: landmark, doorno: doorno, latitude: latlong.lat.toString(), longitude: latlong.lng.toString(), tenantid: parseInt(localStorage.getItem('tenantid')), email: emailaddress, primaryaddress: 1 }; console.log(obj); setLoading(true); try { await axios .post(`${process.env.REACT_APP_URL}/customers/create`, obj) .then((res) => { console.log(res); if (res.data.status) { enqueueSnackbar(' Created Successfully ', { variant: 'success', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); navigate('/customers'); // setTimeout(()=>{ // fetchprofiledetails(localStorage.getItem('appuserid')); // },2000) } else if (res.data.message == 'Customer Already available') { enqueueSnackbar('Customer Already available', { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); } setLoading(false); }) .catch((err) => { console.log(err); setLoading(false); enqueueSnackbar(err.message, { variant: 'error', anchorOrigin: { vertical: 'top', horizontal: 'right' }, autoHideDuration: 2000 }); }); } catch (err) { console.log(err); setLoading(false); } } }; // const [experience, setExperience] = useState('0'); // const handleChange = (event) => { // setExperience(event.target.value); // }; return ( <> {loading && } Create Customer {/* Upload setSelectedImage(e.target.files?.[0])} /> Role setRole(e.target.value)} value={role} autoComplete='off' /> */} {/* Business Name setBusinessname(e.target.value)} value={businessname} autoComplete='off' /> Registration No setBusinessno(e.target.value)} value={businessno} autoComplete='off' /> */} Name setFirstname(e.target.value)} value={firstname} autoComplete="off" /> {/* */} Phone Number { }} onChange={(e) => { if (e.target.value.toString().length <= 10) { setMobilenumber(e.target.value); } }} value={mobilenumber} autoComplete="off" // disabled sx={{ cursor: 'not-allowed' }} /> Email Address setEmailaddress(e.target.value)} value={emailaddress} autoComplete="off" /> Address setAddress(e.target.value)} inputRef={materialRef} /> Location setSuburb(e.target.value)} value={suburb} autoComplete="off" /> City setCity(e.target.value)} value={city} autoComplete="off" /> State setState(e.target.value)} value={state} autoComplete="off" /> Post Code setZipcode(e.target.value)} value={zipcode} autoComplete="off" /> Door No setDoorno(e.target.value)} value={doorno} autoComplete="off" /> Landmark setLandmark(e.target.value)} value={landmark} autoComplete="off" /> ); }; export default CreateCustomer;