import {
  Grid,
  Stack,
  Typography,
  Box,
  Tabs,
  Tab,
  Chip,
  Table,
  TableCell,
  TableBody,
  TableHead,
  Avatar,
  TableRow,
  IconButton,
  Tooltip,
  Collapse,
  Divider,
  List,
  ListItem,
  ListItemIcon,
  TextField,
  Button,
  InputAdornment,
  FormControl,
  OutlinedInput,
  Dialog,
  DialogContent,
  Skeleton,
  Popper,
  ClickAwayListener,
  CircularProgress,
  DialogTitle,
  FormLabel,
  DialogActions
} from '@mui/material';

import { Autocomplete as Autocomplete1 } from '@mui/material';
import { PlusOutlined, DeleteOutlined, MoreOutlined } from '@ant-design/icons';
import { SearchOutlined } from '@ant-design/icons';
import { PopupTransition } from 'components/@extended/Transitions';
import { enqueueSnackbar } from 'notistack';
import dayjs from 'dayjs';
import { PhoneOutlined, MailOutlined } from '@ant-design/icons';

import MainCard from 'components/MainCard';

import { CloseOutlined, EyeTwoTone, EditTwoTone } from '@ant-design/icons';
import { useState, useEffect } from 'react';
import axios from 'axios';
import Loader from 'components/Loader';
import Transitions from 'components/@extended/Transitions';
import Autocomplete from 'react-google-autocomplete';

import * as React from 'react';

import PropTypes from 'prop-types';
import TableContainer from '@mui/material/TableContainer';
import TablePagination from '@mui/material/TablePagination';
import TableSortLabel from '@mui/material/TableSortLabel';
import { visuallyHidden } from '@mui/utils';
import { useTheme } from '@mui/material/styles';

import Geocode from 'react-geocode';

const Requests = () => {
  // let dispatch = useDispatch();

  function descendingComparator(a, b, orderBy) {
    if (b[orderBy] < a[orderBy]) {
      return -1;
    }
    if (b[orderBy] > a[orderBy]) {
      return 1;
    }
    return 0;
  }

  function getComparator(order, orderBy) {
    return order === 'desc' ? (a, b) => descendingComparator(a, b, orderBy) : (a, b) => -descendingComparator(a, b, orderBy);
  }

  function stableSort(array, comparator) {
    const stabilizedThis = array.map((el, index) => [el, index]);
    stabilizedThis.sort((a, b) => {
      const order = comparator(a[0], b[0]);
      if (order !== 0) {
        return order;
      }
      return a[1] - b[1];
    });
    return stabilizedThis.map((el) => el[0]);
  }

  const headCells = [
    {
      id: 'sno',
      disablePadding: true,
      label: '#'
    },
    {
      id: 'tenantname',
      numeric: false,
      disablePadding: false,
      label: 'REQUESTOR'
    },
    {
      id: 'contact',
      numeric: false,
      disablePadding: false,
      label: 'BANK'
    },
    {
      id: 'address3',
      disablePadding: false,
      label: 'IFSC'
    },
    {
      id: 'address',
      disablePadding: false,
      label: 'REF NO'
    },
    {
      id: 'amount',
      disablePadding: false,
      label: 'AMOUNT'
    },
    {
      id: 'city',
      disablePadding: false,
      label: 'REASON'
    }
    // {
    //     id: 'action',
    //     disablePadding: false,
    //     label: 'ACTION',
    // }
  ];

  function EnhancedTableHead(props) {
    const { order, orderBy, onRequestSort } = props;
    const createSortHandler = (property) => (event) => {
      onRequestSort(event, property);
    };

    return (
      <TableHead>
        <TableRow>
          {headCells.map((headCell) => (
            <TableCell
              key={headCell.id}
              align={headCell.numeric ? 'right' : 'left'}
              padding={headCell.disablePadding ? 'none' : 'normal'}
              sortDirection={orderBy === headCell.id ? order : false}
            >
              <TableSortLabel
                active={orderBy === headCell.id}
                direction={orderBy === headCell.id ? order : 'asc'}
                onClick={createSortHandler(headCell.id)}
              >
                {headCell.label}
                {orderBy === headCell.id ? (
                  <Box component="span" sx={visuallyHidden}>
                    {order === 'desc' ? 'sorted descending' : 'sorted ascending'}
                  </Box>
                ) : null}
              </TableSortLabel>
            </TableCell>
          ))}
        </TableRow>
      </TableHead>
    );
  }

  EnhancedTableHead.propTypes = {
    numSelected: PropTypes.number.isRequired,
    onRequestSort: PropTypes.func.isRequired,
    onSelectAllClick: PropTypes.func.isRequired,
    order: PropTypes.oneOf(['asc', 'desc']).isRequired,
    orderBy: PropTypes.string.isRequired,
    rowCount: PropTypes.number.isRequired
  };

  function EnhancedTable() {
    const [order, setOrder] = React.useState('asc');
    const [orderBy, setOrderBy] = React.useState('calories');
    const [selected, setSelected] = React.useState([]);
    const [page, setPage] = React.useState(0);
    const [rowsPerPage, setRowsPerPage] = React.useState(10);
    const [expandopen, setExpandopen] = React.useState('');
    const [editexpandopen, setEditexpandopen] = React.useState('');
    const [clientname, setClientname] = useState('');
    const [emailaddress, setEmailaddress] = useState('');
    const [mobilenumber, setMobilenumber] = useState('');
    const [regno, setRegno] = useState('');
    const [address, setAddress] = useState('');
    const [city, setCity] = useState('');
    const [zipcode, setZipcode] = useState('');
    const [contactname, setContactname] = useState('');
    const [state1, setState1] = useState('');
    const [suburb, setSuburb] = useState('');
    const [currenttenantid, setCurrenttenantid] = useState('');
    const [latlong, setLatlong] = useState({});
    Geocode.setApiKey(process.env.REACT_APP_GOOGLE_MAPS_API_KEY);
    // const [alertmessage, setAlertmessage] = useState('');
    // const [toast, setToast] = useState(false);
    const [rolesarr, setRolesarr] = useState([]);
    const [roleslist, setRoleslist] = useState([]);
    const [rolestab, setRolestab] = useState(0);
    const [anchorEl, setAnchorEl] = React.useState(null);
    const [open, setOpen] = useState('');
    const [approveid, setApproveid] = useState(false);
    const [disableid, setDisableid] = useState(false);
    const [loading1, setLoading1] = useState(false);

    const [refno, setRefno] = useState('');
    const [requestor, setRequestor] = useState('');
    const [bankname, setBankname] = useState('');
    const [amount, setAmount] = useState('');
    const [accountno, setAccountno] = useState('');
    const [ifsc, setIfsc] = useState('');
    const [reason, setReason] = useState('');

    const handleClick1 = (event, result) => {
      if (result) {
        setAnchorEl(event.currentTarget);

        setOpen((val) => (val == result ? '' : result));
        console.log(open, event.currentTarget, result);
      }
    };

    const handleClickAway = () => {
      setOpen('');
    };
    useEffect(() => {
      setRolesarr([
        {
          sno: 1,
          role: '',
          cost: '',
          serviceid: 0,
          tenantid: 0,
          categoryid: 0,
          subcategoryid: 0,
          servicecode: '',
          servicename: '',
          unitid: 0,
          unitname: '',
          serviceamount: '',
          discountid: 0,
          taxpercent: 0,
          taxamount: 0,
          servicevalue: 0,
          categoryname: ''
        }
      ]);
      console.log(rolesarr);
      // fetchroleslist();
    }, []);

    // useEffect(() => {

    //     if (alertmessage && toast) {
    //         dispatch(
    //             openSnackbar({
    //                 open: true,
    //                 message: alertmessage,
    //                 variant: 'alert',
    //                 anchorOrigin: { vertical: 'top', horizontal: 'right' },
    //                 alert: {
    //                     color: 'error',

    //                 }
    //             })
    //         )
    //     }
    // }, [toast])
    const opentoast = (message) => {
      enqueueSnackbar(message, {
        variant: 'error',
        anchorOrigin: { vertical: 'top', horizontal: 'right' },
        autoHideDuration: 2000
      });
      console.log(alertmessage);
    };

    // const opentoast = () => {
    //     setToast(true)

    //     setTimeout(() => {
    //         setToast(false)
    //     }, 2000);

    // }

    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]);

    useEffect(() => {
      console.log('rolesarr');
      console.log(rolesarr);
    }, [rolesarr]);

    const fetchroleslist = async () => {
      try {
        await axios
          .get(`${process.env.REACT_APP_URL2}/utils/getsubcategory`)
          .then((res) => {
            console.log('res');
            console.log(res);
            if (res.data.message === 'Success') {
              let arr = [];
              res.data.Details.map((val) => {
                arr.push({ ...val, label: val.subcategoryname });
              });
              setLoading(false);
              setRoleslist(arr);
              console.log('roleslist', arr);
            }
          })
          .catch((err) => {
            console.log(err);
            setLoading(false);
          });
      } catch (err) {
        console.log(err);
        setLoading(false);
      }
    };

    const addarr = () => {
      let arr = rolesarr;
      if (arr[arr.length - 1].role && arr[arr.length - 1].cost) {
        arr.push({
          sno: arr.length + 1,
          cost: '',
          role: '',
          serviceid: 0,
          tenantid: 0,
          categoryid: 0,
          subcategoryid: 0,
          servicecode: '',
          servicename: '',
          unitid: 0,
          unitname: '',
          serviceamount: '',
          discountid: 0,
          taxpercent: 0,
          taxamount: 0,
          servicevalue: 0,
          categoryname: ''
        });
        setRolesarr([...arr]);
      } else {
        // setAlertmessage('Fill all Previous Details');
        opentoast('Fill all Previous Details');
      }
    };
    const deletearr = async (sno, val1) => {
      console.log(val1);
      let arr = rolesarr;

      if (val1.serviceid !== 0 && rolesarr.length > 1) {
        console.log([
          {
            serviceid: val1.serviceid,
            tenantid: val1.tenantid,
            categoryid: val1.categoryid,
            subcategoryid: val1.subcategoryid,
            servicecode: val1.servicecode,
            servicename: val1.servicename,
            unitid: val1.unitid,
            unitname: val1.unitname,
            serviceamount: val1.servicevalue
          }
        ]);
        try {
          await axios
            .delete(`${process.env.REACT_APP_URL2}/tenants/delete/services`, {
              data: [
                {
                  serviceid: val1.serviceid,
                  tenantid: val1.tenantid,
                  categoryid: val1.categoryid,
                  subcategoryid: val1.subcategoryid,
                  servicecode: val1.servicecode,
                  servicename: val1.servicename,
                  unitid: val1.unitid,
                  unitname: val1.unitname,
                  serviceamount: val1.servicevalue
                }
              ]
            })
            .then((res) => {
              console.log('res');
              console.log(res);
              if (res.data.message === 'Deleted successful') {
                enqueueSnackbar('Client pricing Deleted', {
                  variant: 'success',
                  anchorOrigin: { vertical: 'top', horizontal: 'right' },
                  autoHideDuration: 2000
                });
                arr.splice(sno - 1, 1);
                arr.map((val, i) => {
                  val.sno = i + 1;
                });
                console.log(arr);
                setRolesarr([...arr]);
              }
            })
            .catch((err) => {
              console.log(err);
              setLoading(false);
            });
        } catch (err) {
          console.log(err);
          setLoading(false);
        }
      } else if (rolesarr.length > 1) {
        arr.splice(sno - 1, 1);
        arr.map((val, i) => {
          val.sno = i + 1;
        });
        console.log(arr);
        setRolesarr([...arr]);
      } else if (rolesarr.length === 1) {
        setRolesarr([
          {
            sno: 1,
            role: '',
            cost: '',
            serviceid: val1.serviceid,
            tenantid: 0,
            categoryid: 0,
            subcategoryid: 0,
            servicecode: '',
            servicename: '',
            unitid: 0,
            unitname: '',
            serviceamount: '',
            discountid: 0,
            taxpercent: 0,
            taxamount: 0,
            servicevalue: 0,
            categoryname: ''
          }
        ]);
      }
    };

    const fetchclientbyid = async (tenantid1) => {
      try {
        // await axios.get(`${process.env.REACT_APP_URL}/tenants/gettenant/?tenantid=${tenantid1}`)
        setLoading1(true);
        await axios
          .get(`${process.env.REACT_APP_URL2}/tenants/getclient?id=${tenantid1}`)

          .then((res) => {
            console.log(res);
            if (res.data.message === 'Successful') {
              console.log(res.data.details);
              setEmailaddress(res.data.details.primaryemail);
              setMobilenumber(res.data.details.contactno);
              setClientname(res.data.details.tenantname);
              setRegno(res.data.details.registrationno);
              setAddress(res.data.details.address);
              setCity(res.data.details.city);
              setZipcode(res.data.details.postcode);
              setContactname(res.data.details.primarycontact);
              setCurrenttenantid(tenantid1);
              setLatlong({
                lat: res.data.details.latitude,
                lng: res.data.details.longitude
              });
            }
            if (tabvalue === 0) {
              setLoading1(false);
            }
          })
          .catch((err) => {
            console.log(err);
            setLoading1(false);
          });
      } catch (err) {
        console.log(err);
        setLoading1(false);
      }
    };

    const fetchclientpricing = async (tenantid1) => {
      try {
        // await axios.get(`${process.env.REACT_APP_URL}/tenants/gettenant/?tenantid=${tenantid1}`)
        setLoading1(true);
        await axios
          .get(`${process.env.REACT_APP_URL2}/tenants/getclient?id=${tenantid1}`)

          .then((res) => {
            console.log('res id');
            console.log(res);
            if (res.data.message === 'Successful') {
              let arr = [];
              if (res.data.details.tenantservice.length === 0) {
                setRolesarr([
                  {
                    sno: 1,
                    role: '',
                    cost: '',
                    serviceid: 0,
                    tenantid: 0,
                    categoryid: 0,
                    subcategoryid: 0,
                    servicecode: '',
                    servicename: '',
                    unitid: 0,
                    unitname: '',
                    serviceamount: '',
                    discountid: 0,
                    taxpercent: 0,
                    taxamount: 0,
                    servicevalue: 0,
                    categoryname: ''
                  }
                ]);
              } else {
                // res.data.details.map((val, i) => {
                //     arr.push({
                //         sno: i + 1,
                //         role: val.servicename,
                //         cost: val.serviceamount,
                //         serviceid: val.serviceid,
                //         tenantid: val.tenantid,
                //         categoryid: val.categoryid,
                //         subcategoryid: val.subcategoryid,
                //         servicecode: val.servicecode,
                //         servicename: val.servicename,
                //         unitid: val.unitid,
                //         unitname: val.unitname,
                //         serviceamount: val.serviceamount,
                //         discountid: val.discountid,
                //         taxpercent: val.taxpercent,
                //         taxamount: val.taxamount,
                //         servicevalue: val.servicevalue
                //     })
                // })
                res.data.details.tenantservice.map((val, i) => {
                  arr.push({
                    sno: i + 1,
                    role: val.servicename,
                    cost: val.serviceamount,
                    serviceid: val.serviceid,
                    tenantid: val.tenantid,
                    categoryid: val.categoryid,
                    subcategoryid: val.subcategoryid,
                    servicecode: val.servicecode,
                    servicename: val.servicename,
                    unitid: val.unitid,
                    unitname: val.unitname,
                    serviceamount: val.serviceamount,
                    discountid: val.discountid,
                    taxpercent: val.taxpercent,
                    taxamount: val.taxamount,
                    servicevalue: val.servicevalue,
                    categoryname: val.categoryname,
                    subcategoryname: val.subcategoryname
                  });
                });
                setRolesarr([...arr]);
              }
              console.log('res');
              console.log(res);
            }
            // setExpandopen((expandopen === rowsno) ? '' : rowsno)
            // setEditexpandopen('');
            // setLoading(false)
            // setLoading1(false)
            if (tabvalue === 1) {
              setLoading1(false);
            }
          })
          .catch((err) => {
            console.log(err);
            // setLoading(false)
            setLoading1(false);
          });
      } catch (err) {
        console.log(err);
        // setLoading(false)
        setLoading1(false);
      }
    };

    const clientupdate = async () => {
      if (!clientname) {
        // setAlertmessage('Fill Business name');
        opentoast('Fill Business name');
      } else if (!regno) {
        // setAlertmessage('Fill Business No.');
        opentoast('Fill Business No.');
      } else if (!emailaddress) {
        // setAlertmessage('Fill Email address');
        opentoast('Fill Email address');
      } else if (!mobilenumber) {
        // setAlertmessage('Fill Mobile number');
        opentoast('Fill Mobile number');
      } else if (!contactname) {
        // setAlertmessage('Fill Contact name');
        opentoast('Fill Contact name');
      } else if (!address) {
        // setAlertmessage('Fill Address');
        opentoast('Fill Address');
      } else if (!city) {
        // setAlertmessage('Fill City name');
        opentoast('Fill City name');
      } else if (!zipcode) {
        // setAlertmessage('Fill Zip code');
        opentoast('Fill Zip code');
      } else if (!latlong.lat || !latlong.lng) {
        setAlertmessage('Fill correct address');
        opentoast('Fill correct address');
      } else if ((approveid || disableid) && !(rolesarr[0].role && rolesarr[0].cost)) {
        opentoast('Fill client pricing');
      } else {
        let obj = {
          tenantid: currenttenantid,
          registrationno: regno,
          tenantname: clientname,
          primaryemail: emailaddress,
          primarycontact: contactname,
          contactno: mobilenumber,
          address: address,
          suburb: suburb,
          city: city,
          state: state1,
          postcode: zipcode,
          latitude: latlong.lat.toString(),
          longitude: latlong.lng.toString(),
          approved: (approveid && tabvalue === 1) || (!approveid && tabvalue === 0 && !disableid) ? 1 : 0
        };
        console.log(obj);

        try {
          setLoading(true);
          await axios
            .put(`${process.env.REACT_APP_URL2}/tenants/update`, obj)
            .then((res) => {
              console.log('res:', res);
              if (res.data.message === 'Update successful') {
                // dispatch(
                //     openSnackbar({
                //         open: true,
                //         message: 'Client Detail Updated Successfully',
                //         variant: 'alert',
                //         anchorOrigin: { vertical: 'top', horizontal: 'right' },
                //         alert: {
                //             color: 'success'
                //         }
                //     })
                // )
                enqueueSnackbar('Client Details Updated Successfully', {
                  variant: 'success',
                  anchorOrigin: { vertical: 'top', horizontal: 'right' },
                  autoHideDuration: 3000
                });
                setLoading(true);

                setTimeout(() => {
                  clientdetailspending();
                  clientdetailsapproved();
                  setTabvalue(0);
                  setLoading(false);
                }, 2000);
              }
              setLoading(false);
            })
            .catch((err) => {
              console.log(err);
              setLoading(false);
            });
        } catch (err) {
          console.log(err);
          setLoading(false);
        }
      }
    };

    const rolepricesubmit = async () => {
      console.log('submit');
      let arr = [];
      let objcheck = false;
      rolesarr.map((val) => {
        if (!val.role || !val.cost) {
          objcheck = true;
        }
        arr.push({
          serviceid: val.serviceid,
          tenantid: currenttenantid,
          categoryid: val.categoryid,
          subcategoryid: val.subcategoryid,
          servicecode: val.servicecode,
          servicename: val.servicename,
          unitid: val.unitid,
          unitname: val.unitname,
          serviceamount: parseFloat(val.serviceamount),
          categoryname: val.categoryname,
          subcategoryname: val.servicename
          // discountid: val.discountid,
          // taxpercent: val.taxpercent,
          // taxamount: val.taxamount,
          // servicevalue: parseFloat(val.servicevalue),
        });
      });
      console.log(arr);
      if (!objcheck) {
        try {
          setLoading(true);
          // await axios.post(`${process.env.REACT_APP_URL2}/tenants/createservice`, arr)tenants/update/services
          await axios
            .put(`${process.env.REACT_APP_URL2}/tenants/update/services`, arr)
            .then((res) => {
              console.log('res:', res);
              if (res.data.message === 'Update successful') {
                enqueueSnackbar('Service Updated Successfully', {
                  variant: 'success',
                  anchorOrigin: { vertical: 'top', horizontal: 'right' },
                  autoHideDuration: 2000
                });
              }
              setLoading(false);
            })
            .catch((err) => {
              console.log(err);
              setLoading(false);
            });
        } catch (err) {
          console.log(err);
          setLoading(false);
        }
      } else {
        enqueueSnackbar('Fill all Details', {
          variant: 'error',
          anchorOrigin: { vertical: 'top', horizontal: 'right' },
          autoHideDuration: 2000
        });
      }
    };

    const createrequest = () => {
      if (!refno) {
        // setAlertmessage('Fill Business name');
        opentoast('Fill Reference No');
      } else if (!requestor) {
        // setAlertmessage('Fill Business No.');
        opentoast('Fill Requestor');
      } else if (!bankname) {
        // setAlertmessage('Fill Email address');
        opentoast('Fill Bank Name');
      } else if (!amount) {
        // setAlertmessage('Fill Mobile number');
        opentoast('Fill Amount');
      } else if (!accountno) {
        // setAlertmessage('Fill Contact name');
        opentoast('Fill Account No');
      } else if (!ifsc) {
        // setAlertmessage('Fill Address');
        opentoast('Fill IFSC');
      } else if (!reason) {
        // setAlertmessage('Fill City name');
        opentoast('Fill Reason');
      } else {
        let obj = {
          requestid: 0,
          requestdate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
          referenceno: refno,
          Apptypeid: 22,
          requesttype: 'staffexpenses',
          reason: reason,
          requestor: requestor,
          amount: amount,
          Accountno: accountno,
          bankname: bankname,
          ifsccode: ifsc
        };

        console.log(obj);
      }
    };

    // const rolepriceupdate = async () => {
    //     console.log('submit')
    //     let arr = [];
    //     let objcheck = false;
    //     rolesarr.map((val) => {
    //         if (!val.role || !val.cost) {
    //             objcheck = true;
    //         }
    //         arr.push({
    //             serviceid: 0,
    //             tenantid: currenttenantid,
    //             categoryid: val.categoryid,
    //             subcategoryid: val.subcategoryid,
    //             servicecode: val.servicecode,
    //             servicename: val.servicename,
    //             unitid: val.unitid,
    //             unitname: val.unitname,
    //             serviceamount: parseFloat(val.serviceamount),
    //             discountid: val.discountid,
    //             taxpercent: val.taxpercent,
    //             taxamount: val.taxamount,
    //             servicevalue: parseFloat(val.servicevalue),

    //         })
    //     })
    //     console.log(arr)
    //     if (!objcheck) {
    //         try {
    //             setLoading(true)
    //             // await axios.post(`${process.env.REACT_APP_URL2}/clients/createservice`, arr)
    //             await axios.post(`${process.env.REACT_APP_URL2}/tenants/createservice`, arr)

    //                 // await axios.post(`${process.env.REACT_APP_URL2}/clients/createservice`, arr)
    //                 .then((res) => {
    //                     console.log('res:', res);
    //                     if (res.data.message === "Successful") {

    //                         enqueueSnackbar('Service created Successfully', { variant: 'success',anchorOrigin: { vertical: 'top', horizontal: 'right' },
    //                         autoHideDuration: 3000 })
    //                     }
    //                     setLoading(false)
    //                 }).catch((err) => {
    //                     console.log(err)
    //                     setLoading(false)
    //                 })

    //         } catch (err) {
    //             console.log(err);
    //             setLoading(false)
    //         }
    //     } else {

    //         enqueueSnackbar('Fill all Details', { variant: 'error',anchorOrigin: { vertical: 'top', horizontal: 'right' },
    //         autoHideDuration: 2000 })
    //     }
    // }

    const handleRequestSort = (event, property) => {
      const isAsc = orderBy === property && order === 'asc';
      setOrder(isAsc ? 'desc' : 'asc');
      setOrderBy(property);
    };

    const handleSelectAllClick = (event) => {
      if (event.target.checked) {
        const newSelected = rows.map((n) => n.name);
        setSelected(newSelected);
        return;
      }
      setSelected([]);
    };

    const handleClick = (event, name) => {
      const selectedIndex = selected.indexOf(name);
      let newSelected = [];

      if (selectedIndex === -1) {
        newSelected = newSelected.concat(selected, name);
      } else if (selectedIndex === 0) {
        newSelected = newSelected.concat(selected.slice(1));
      } else if (selectedIndex === selected.length - 1) {
        newSelected = newSelected.concat(selected.slice(0, -1));
      } else if (selectedIndex > 0) {
        newSelected = newSelected.concat(selected.slice(0, selectedIndex), selected.slice(selectedIndex + 1));
      }

      setSelected(newSelected);
    };

    const handleChangePage = (event, newPage) => {
      setPage(newPage);
    };

    const handleChangeRowsPerPage = (event) => {
      setRowsPerPage(parseInt(event.target.value, 10));
      setPage(0);
    };

    //   const handleChangeDense = (event) => {
    //     setDense(event.target.checked);
    //   };

    const isSelected = (name) => selected.indexOf(name) !== -1;

    // Avoid a layout jump when reaching the last page with empty rows.
    const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;

    const visibleRows = React.useMemo(
      () => stableSort(rows, getComparator(order, orderBy)).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage),
      [order, orderBy, page, rowsPerPage]
    );

    return (
      <>
        <Dialog
          // maxWidth={false}
          fullWidth={true}
          open={dialogopen}
          onClose={dialogclose}
          scroll={'paper'}
          // fullScreen
          maxWidth="sm"
          TransitionComponent={PopupTransition}
        >
          <DialogTitle>Create Request</DialogTitle>

          <DialogContent dividers={true}>
            <MainCard sx={{ height: '100%' }}>
              <Grid
                container
                spacing={2.5}
                // sx={{ pl: { xs: 0, sm: 5, md: 6, lg: 10, xl: 12 }, p: 2 }}
              >
                {/* <Grid item xs={12} sm={5} md={4} lg={4} xl={3}> */}
                {/* <MainCard title={<Box sx={{ p: 1 }}>Client</Box>} sx={{ height: '100%' }}>

                                    <Grid container spacing={3}> */}
                <Grid item xs={12} sm={6}>
                  {/* <Stack spacing={2} alignItems="center" sx={{ width: '100%' }}> */}
                  <FormLabel>Reference No</FormLabel>
                  <TextField
                    type="number"
                    // label='Reference No'
                    fullWidth
                    sx={{ width: '100%' }}
                    value={refno}
                    onChange={(e) => {
                      setRefno(e.target.value);
                      console.log(e);
                    }}
                  />
                </Grid>
                <Grid item xs={12} sm={6}>
                  <FormLabel>Requestor</FormLabel>
                  <TextField
                    value={requestor}
                    onChange={(e) => setRequestor(e.target.value)}
                    // label='Business No.'
                    fullWidth
                    sx={{ width: '100%' }}
                  />
                  {/* </Stack> */}
                </Grid>

                <Grid item xs={12} sm={6}>
                  {/* <List component="nav" aria-label="main mailbox folders" sx={{ py: 0 }}>
                                    <Stack direction={'column'} spacing={2} sx={{ width: '100%' }}> */}

                  <FormLabel>Bank Name</FormLabel>

                  <TextField
                    // type='email'
                    value={bankname}
                    sx={{ width: '100%' }}
                    onChange={(e) => setBankname(e.target.value)}
                    // label='Email'
                  />
                </Grid>
                <Grid item xs={12} sm={6}>
                  <FormLabel>Amount</FormLabel>

                  <TextField
                    type="number"
                    value={amount}
                    // placeholder='Mobile Number'
                    // InputProps={{
                    //     startAdornment: <InputAdornment position="start">+1</InputAdornment>,
                    // }}
                    sx={{ width: '100%' }}
                    onChange={(e) => setAmount(e.target.value)}
                  />
                  {/* </Stack>
                                </List> */}
                </Grid>
                {/* </Grid>
                                </MainCard>
                            </Grid> */}
                <Grid item xs={12} sm={6}>
                  {/* <Stack spacing={2} alignItems="center" sx={{ width: '100%' }}> */}
                  <FormLabel>Account No</FormLabel>

                  <TextField
                    type="number"
                    // label='Business name'
                    fullWidth
                    sx={{ width: '100%' }}
                    value={accountno}
                    onChange={(e) => {
                      setAccountno(e.target.value);
                      console.log(e);
                    }}
                  />
                </Grid>
                <Grid item xs={12} sm={6}>
                  <FormLabel>IFSC Code</FormLabel>

                  <TextField
                    value={ifsc}
                    onChange={(e) => setIfsc(e.target.value)}
                    // label='Business No.'
                    fullWidth
                    sx={{ width: '100%' }}
                  />
                  {/* </Stack> */}
                </Grid>
                <Grid item xs={12} sm={6}>
                  <FormLabel>Reason</FormLabel>

                  <TextField
                    value={reason}
                    onChange={(e) => setReason(e.target.value)}
                    // label='Business No.'
                    fullWidth
                    sx={{ width: '100%' }}
                  />
                  {/* </Stack> */}
                </Grid>
              </Grid>
            </MainCard>
          </DialogContent>
          <DialogActions>
            <Grid container>
              <Grid item xs={12}>
                <Stack direction={'row'} justifyContent={'flex-end'} spacing={2} sx={{ p: 2 }}>
                  <Button
                    variant="contained"
                    onClick={() => {
                      createrequest();
                    }}
                  >
                    Update
                  </Button>
                  <Button
                    variant="contained"
                    onClick={() => {
                      dialogclose();
                    }}
                    color="error"
                  >
                    Close
                  </Button>
                </Stack>
              </Grid>
            </Grid>
          </DialogActions>
        </Dialog>
        <Box
          sx={{
            width: '100%'
          }}
        >
          <TableContainer sx={{ width: '100%', borderBottom: 1, borderColor: 'divider' }}>
            <Table sx={{ minWidth: 750 }} aria-labelledby="tableTitle" size={'medium'}>
              <EnhancedTableHead
                numSelected={selected.length}
                order={order}
                orderBy={orderBy}
                onSelectAllClick={handleSelectAllClick}
                onRequestSort={handleRequestSort}
                rowCount={rows.length}
              />

              {loading && (
                <>
                  <TableBody>
                    {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((item) => (
                      <TableRow key={item}>
                        <TableCell>
                          <Skeleton animation="wave" />
                        </TableCell>
                        <TableCell>
                          <Stack direction={'row'} spacing={1}>
                            <Skeleton variant="circular" width={40} height={40} />
                            <Stack direction={'column'}>
                              <Skeleton animation="wave" width={100} />
                              <Skeleton animation="wave" width={100} />
                            </Stack>
                          </Stack>
                        </TableCell>
                        <TableCell>
                          <Skeleton animation="wave" />
                        </TableCell>
                        <TableCell>
                          <Skeleton animation="wave" />
                        </TableCell>
                        <TableCell>
                          <Skeleton animation="wave" />
                        </TableCell>
                        <TableCell>
                          <Skeleton animation="wave" />
                        </TableCell>
                      </TableRow>
                    ))}
                  </TableBody>
                </>
              )}

              <TableBody>
                {visibleRows.map((row, index) => {
                  const isItemSelected = isSelected(row.sno);
                  const labelId = `enhanced-table-checkbox-${index}`;
                  return (
                    <>
                      <TableRow
                        hover
                        onClick={(event) => handleClick(event, row.sno)}
                        role="checkbox"
                        aria-checked={isItemSelected}
                        tabIndex={-1}
                        key={row.sno}
                        // selected={isItemSelected}
                        sx={{ cursor: 'pointer' }}
                      >
                        {/* <TableCell padding="checkbox">
                                                <Checkbox
                                                    color="primary"
                                                    checked={isItemSelected}
                                                    inputProps={{
                                                        'aria-labelledby': labelId,
                                                    }}
                                                />
                                            </TableCell> */}
                        <TableCell component="th" id={labelId} scope="row" padding="none">
                          {row.sno}
                        </TableCell>

                        <TableCell align="left" sx={{ paddingLeft: '0px !important' }}>
                          <Stack direction="row" alignItems="center" spacing={1} justifyContent="flex-start">
                            <Avatar
                              alt=""
                              size="sm"
                              sx={{
                                width: '25px',
                                height: '25px'
                              }}
                            ></Avatar>
                            <Stack direction="column">
                              <Typography variant="caption">{row.requestor}</Typography>
                              {/* <Typography variant='caption' color="textSecondary">
                                                            {row.primaryemail}
                                                        </Typography> */}
                            </Stack>
                          </Stack>
                        </TableCell>
                        <TableCell align="left">
                          <Typography variant="caption"> {row.accountno}</Typography>
                          <Typography variant="h6"> {row.bankname}</Typography>
                        </TableCell>
                        <TableCell>{row.ifsccode}</TableCell>
                        <TableCell align="left">
                          {/* <Tooltip title={row.address}>
                                                    <Typography variant="caption" color="textSecondary">
                                                        {row.address.slice(0, 15)}...
                                                    </Typography>
                                                </Tooltip> */}
                          {row.referenceno}
                        </TableCell>
                        <TableCell>{row.amount}</TableCell>
                        <TableCell>{row.reason}</TableCell>
                        {/*
                                            <TableCell >
                                                {row.reason}

                                            </TableCell> */}
                      </TableRow>

                      <TableRow>
                        <TableCell
                          style={{ paddingBottom: 0, paddingTop: 0, paddingLeft: 0, paddingRight: 0 }}
                          colSpan={8}
                          sx={{ width: '100%' }}
                        >
                          <Collapse in={expandopen === row.sno} timeout="auto" unmountOnExit>
                            <Transitions type="slide" direction="down" in={true}>
                              <MainCard sx={{ height: '100%' }}>
                                {loading1 ? (
                                  <>
                                    <MainCard>
                                      {/* <TableRow>
                                                                        <Typography>Loading...</Typography>
                                                                    </TableRow> */}
                                      <Stack alignItems={'center'}>
                                        <CircularProgress />
                                      </Stack>
                                    </MainCard>
                                  </>
                                ) : (
                                  <>
                                    <Tabs value={rolestab} onChange={(e, i) => setRolestab(i)}>
                                      <Tab label="client Details" />
                                      <Tab label="Client Pricing" />
                                    </Tabs>
                                    {rolestab === 0 && (
                                      <>
                                        <Grid container spacing={2.5} sx={{ pl: { xs: 0, sm: 5, md: 6, lg: 10, xl: 12 }, p: 2 }}>
                                          <Grid item xs={12} sm={5} md={4} lg={4} xl={3}>
                                            <MainCard sx={{ height: '100%' }}>
                                              <Grid container spacing={3}>
                                                <Grid item xs={12}>
                                                  <Stack spacing={2.5} alignItems="center">
                                                    <Avatar alt="Avatar 1" size="xl" />
                                                    <Stack spacing={0.5} alignItems="center">
                                                      <Typography variant="h5">{clientname}</Typography>
                                                      <Typography color="secondary">{regno}</Typography>
                                                    </Stack>
                                                  </Stack>
                                                </Grid>
                                                {/* <Grid item xs={12}>
                                                                                                <Divider />
                                                                                            </Grid> */}
                                                {/* <Grid item xs={12}>
                                                                                                <Stack direction="row" justifyContent="space-around" alignItems="center">
                                                                                                    <Stack spacing={0.5} alignItems="center">
                                                                                                        <Typography variant="h5">All orders</Typography>
                                                                                                        <Chip label={4} color="primary" variant="light" size="small" />
                                                                                                    </Stack>
                                                                                                    <Divider orientation="vertical" flexItem />
                                                                                                    <Stack spacing={0.5} alignItems="center">
                                                                                                        <Typography variant="h5">Covered orders</Typography>
                                                                                                        <Chip label={2} color="success" variant="light" size="small" />
                                                                                                    </Stack>
                                                                                                </Stack>
                                                                                            </Grid> */}
                                                <Grid item xs={12}>
                                                  <Divider />
                                                </Grid>
                                                <Grid item xs={12}>
                                                  <List component="nav" aria-label="main mailbox folders" sx={{ py: 0 }}>
                                                    <ListItem>
                                                      <ListItemIcon>
                                                        <MailOutlined />
                                                      </ListItemIcon>
                                                      {/* <ListItemSecondaryAction> */}
                                                      <Typography align="right">{emailaddress}</Typography>
                                                      {/* </ListItemSecondaryAction> */}
                                                    </ListItem>
                                                    <ListItem>
                                                      <ListItemIcon>
                                                        <PhoneOutlined />
                                                      </ListItemIcon>
                                                      {/* <ListItemSecondaryAction> */}
                                                      <Typography align="left">
                                                        {/* <PatternFormat displayType="text"  */}
                                                        +1 {mobilenumber}
                                                      </Typography>
                                                      {/* </ListItemSecondaryAction> */}
                                                    </ListItem>
                                                    {/* <ListItem>
                                                                                    <ListItemIcon>
                                                                                        <EnvironmentOutlined />
                                                                                    </ListItemIcon>
                                                                                    <ListItemSecondaryAction>
                                                                                        <Typography align="right">city</Typography>
                                                                                    </ListItemSecondaryAction>

                                                                                {/* </ListItem> */}
                                                  </List>
                                                </Grid>
                                              </Grid>
                                            </MainCard>
                                          </Grid>
                                          <Grid item xs={12} sm={7} md={8} lg={8} xl={9}>
                                            {/* <Stack spacing={2.5}> */}
                                            <MainCard title={<Box sx={{ p: 1 }}>Contact Details</Box>} sx={{ height: '100%' }}>
                                              <List sx={{ py: 0 }}>
                                                <ListItem
                                                // divider={!matchDownMD}
                                                >
                                                  <Grid container spacing={3}>
                                                    <Grid item xs={12} md={6}>
                                                      <Stack spacing={0.5}>
                                                        <Typography color="secondary"> Contact Name</Typography>
                                                        <Typography>{contactname}</Typography>
                                                      </Stack>
                                                    </Grid>
                                                    <Grid item xs={12} md={6}>
                                                      {/* <Stack spacing={0.5}>
                                                                                        <Typography color="secondary">Contact number</Typography>
                                                                                        <Typography>
                                                                                            {mobilenumber}
                                                                                        </Typography>
                                                                                    </Stack> */}
                                                    </Grid>
                                                  </Grid>
                                                </ListItem>

                                                <ListItem>
                                                  <Stack spacing={0.5}>
                                                    <Typography color="secondary">Address</Typography>
                                                    <Typography>{address}</Typography>
                                                  </Stack>
                                                </ListItem>
                                                <ListItem
                                                // divider={!matchDownMD}
                                                >
                                                  <Grid container spacing={3}>
                                                    <Grid item xs={12} md={6}>
                                                      <Stack spacing={0.5}>
                                                        <Typography color="secondary">City</Typography>
                                                        <Typography>{city}</Typography>
                                                      </Stack>
                                                    </Grid>
                                                    <Grid item xs={12} md={6}>
                                                      <Stack spacing={0.5}>
                                                        <Typography color="secondary">Zip Code</Typography>
                                                        <Typography>
                                                          {/* <PatternFormat displayType="text" format="### ###" mask="_" defaultValue={zipcode} /> */}
                                                          {zipcode}
                                                        </Typography>
                                                      </Stack>
                                                    </Grid>
                                                  </Grid>
                                                </ListItem>
                                              </List>
                                            </MainCard>

                                            {/* </Stack> */}
                                          </Grid>
                                        </Grid>
                                      </>
                                    )}
                                    {rolestab === 1 && (
                                      <>
                                        <Grid container sx={{ p: 1 }}>
                                          <Grid item xs={12}>
                                            <MainCard sx={{ height: '100%', p: 1 }}>
                                              {/* <MainCard sx={{ height: '100%' }}> */}
                                              {rolesarr[0].role ? (
                                                <>
                                                  <TableContainer sx={{ width: '100%', borderBottom: 1, borderColor: 'divider' }}>
                                                    <Table sx={{ width: '100%' }}>
                                                      <TableHead>
                                                        <TableRow>
                                                          <TableCell>#</TableCell>
                                                          <TableCell sx={{ width: '30%' }}>Category</TableCell>

                                                          <TableCell sx={{ width: '30%' }}>Skill</TableCell>

                                                          <TableCell sx={{ width: '30%' }}>Cost/Hr</TableCell>

                                                          {/* <TableCell sx={{ width: '10px' }}></TableCell> */}
                                                        </TableRow>
                                                      </TableHead>
                                                      <TableBody>
                                                        {rolesarr.map((val1) => {
                                                          return (
                                                            <>
                                                              <TableRow>
                                                                <TableCell>{val1.sno}</TableCell>
                                                                <TableCell>{val1.categoryname}</TableCell>
                                                                <TableCell>{val1.role}</TableCell>
                                                                <TableCell>{val1.cost}</TableCell>
                                                              </TableRow>
                                                            </>
                                                          );
                                                        })}
                                                      </TableBody>
                                                    </Table>
                                                  </TableContainer>
                                                </>
                                              ) : (
                                                <>
                                                  <Typography>No Data found</Typography>
                                                </>
                                              )}
                                              {/* <Grid item xs={12}>
                                                                                <Button
                                                                                    color="primary"
                                                                                    endIcon={<PlusOutlined />}

                                                                                    onClick={() => addarr()}

                                                                                    sx={{ m: 2 }}
                                                                                    variant="dashed" size="extraSmall"
                                                                                >
                                                                                    ADD SKILL
                                                                                </Button>
                                                                            </Grid> */}
                                              {/* <Grid item xs={12}>
                                                                                <Grid container justifyContent={'flex-end'}>
                                                                                    <Grid item>

                                                                                        <Button
                                                                                            variant='contained'
                                                                                            size='small'
                                                                                            onClick={rolepricesubmit}
                                                                                        >
                                                                                            SUBMIT
                                                                                        </Button>
                                                                                    </Grid>
                                                                                </Grid>

                                                                            </Grid> */}
                                              {/* </MainCard> */}
                                            </MainCard>
                                          </Grid>
                                        </Grid>
                                      </>
                                    )}
                                  </>
                                )}
                              </MainCard>
                            </Transitions>
                          </Collapse>

                          {/* edit page collapse */}

                          <Collapse in={editexpandopen === row.sno} timeout="auto" unmountOnExit>
                            <Transitions type="slide" direction="down" in={true}>
                              {loading1 ? (
                                <>
                                  <MainCard>
                                    {/* <TableRow>
                                                                        <Typography>Loading...</Typography>
                                                                    </TableRow> */}
                                    <Stack alignItems={'center'}>
                                      <CircularProgress />
                                    </Stack>
                                  </MainCard>
                                </>
                              ) : (
                                <>
                                  <MainCard sx={{ height: '100%' }}>
                                    <Tabs value={rolestab} onChange={(e, i) => setRolestab(i)}>
                                      <Tab label="client Details" />
                                      <Tab label="Client Pricing" />
                                    </Tabs>
                                    {rolestab === 0 && (
                                      <>
                                        <MainCard sx={{ height: '100%' }}>
                                          <Grid
                                            container
                                            spacing={2.5}
                                            // sx={{ pl: { xs: 0, sm: 5, md: 6, lg: 10, xl: 12 }, p: 2 }}
                                          >
                                            <Grid item xs={12} sm={5} md={4} lg={4} xl={3}>
                                              <MainCard title={<Box sx={{ p: 1 }}>Client</Box>} sx={{ height: '100%' }}>
                                                <Grid container spacing={3}>
                                                  <Grid item xs={12}>
                                                    {/* <Stack spacing={2.5} alignItems="center" sx={{width:'100%'}}> */}
                                                    {/* <Avatar alt="Avatar 1" size="xl" /> */}
                                                    <Stack spacing={2} alignItems="center" sx={{ width: '100%' }}>
                                                      {/* <Typography variant="h5">Client name</Typography> */}
                                                      <TextField
                                                        type="text"
                                                        label="Business name"
                                                        fullWidth
                                                        sx={{ width: '100%' }}
                                                        value={clientname}
                                                        onChange={(e) => setClientname(e.target.value)}
                                                      />

                                                      <TextField
                                                        type="number"
                                                        value={regno}
                                                        onChange={(e) => setRegno(e.target.value)}
                                                        label="Business No."
                                                        // placeholder='Registration Number'
                                                        fullWidth
                                                        sx={{ width: '100%' }}
                                                      />
                                                    </Stack>
                                                    {/* </Stack> */}
                                                  </Grid>

                                                  <Grid item xs={12}>
                                                    <List component="nav" aria-label="main mailbox folders" sx={{ py: 0 }}>
                                                      <Stack direction={'column'} spacing={2} sx={{ width: '100%' }}>
                                                        <TextField
                                                          type="email"
                                                          value={emailaddress}
                                                          // startAdornment={<MailOutlined />}
                                                          sx={{ width: '100%' }}
                                                          onChange={(e) => setEmailaddress(e.target.value)}
                                                          label="Email"
                                                        />

                                                        <TextField
                                                          type="number"
                                                          value={mobilenumber}
                                                          placeholder="Mobile Number"
                                                          InputProps={{
                                                            startAdornment: <InputAdornment position="start">+1</InputAdornment>
                                                          }}
                                                          sx={{ width: '100%' }}
                                                          onChange={(e) => setMobilenumber(e.target.value)}
                                                        />
                                                        {/* </Typography> */}
                                                        {/* </ListItemSecondaryAction> */}
                                                        {/* </ListItem> */}
                                                      </Stack>
                                                    </List>
                                                  </Grid>
                                                </Grid>
                                              </MainCard>
                                            </Grid>
                                            <Grid item xs={12} sm={7} md={8} lg={8} xl={9}>
                                              {/* <Stack spacing={2.5}> */}
                                              <MainCard title={<Box sx={{ p: 1 }}>Contact Details</Box>} sx={{ height: '100%' }}>
                                                {/* <List sx={{ py: 0 }}>
                                                                            <ListItem
                                                                            // divider={!matchDownMD}
                                                                            > */}
                                                <Grid container spacing={3}>
                                                  <Grid item xs={12}>
                                                    <Stack spacing={0.5}>
                                                      {/* <Typography color="secondary"> Contact Name</Typography> */}
                                                      <TextField
                                                        type="text"
                                                        value={contactname}
                                                        onChange={(e) => setContactname(e.target.value)}
                                                        label="Contact Name"
                                                      />
                                                      {/* <Typography>name</Typography> */}
                                                    </Stack>
                                                  </Grid>

                                                  {/* </Grid> */}
                                                  {/* </ListItem>
                                                                            <ListItem> */}
                                                  {/* <Grid container spacing={3}> */}
                                                  <Grid item xs={12}>
                                                    <Stack spacing={0.5}>
                                                      {/* <Typography color="secondary">Address</Typography> */}
                                                      {/* {((row.sno === 1)) && */}

                                                      <>
                                                        {/* <TextField
                                                                                                    id={`address22${row.sno}`}
                                                                                                    label='Address'
                                                                                                    type='text'
                                                                                                    value={address}
                                                                                                    onChange={(e) => setAddress(e.target.value)}
                                                                                                    inputRef={materialRef}


                                                                                                /> */}
                                                      </>

                                                      {/* } */}

                                                      <Autocomplete
                                                        className="automap"
                                                        apiKey={process.env.REACT_APP_GOOGLE_MAPS_API_KEY}
                                                        style={{
                                                          width: '100%',
                                                          height: '40px',
                                                          borderRadius: '5px',
                                                          border: '1px solid #e0e0e0',
                                                          textIndent: '10px',
                                                          outline: 'none'
                                                          //  ':hover': {
                                                          //     border: '1px solid #00b0ff !important',
                                                          //     backgroundColor:'blue'
                                                          //   }
                                                        }}
                                                        onPlaceSelected={(place) => {
                                                          setAddress(place.formatted_address);
                                                          let city1, state, zipcode1, 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':
                                                                  state = 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 || '');
                                                          setState1(state || '');
                                                          setZipcode(zipcode1 || '');
                                                          setSuburb(suburb1 || '');
                                                        }}
                                                        options={{
                                                          types: ['address' || 'geocode']
                                                        }}
                                                        placeholder="Address"
                                                        value={address}
                                                        onChange={(e) => setAddress(e.target.value)}
                                                      />
                                                    </Stack>
                                                  </Grid>
                                                  {/* </Grid> */}
                                                  {/* </ListItem>
                                                                            <ListItem
                                                                            // divider={!matchDownMD}
                                                                            > */}
                                                  {/* <Grid container spacing={3}> */}
                                                  <Grid item xs={12} md={6}>
                                                    <Stack spacing={0.5}>
                                                      {/* <Typography color="secondary">City</Typography> */}
                                                      {/* <Typography>City</Typography> */}
                                                      <TextField
                                                        label="City"
                                                        type="text"
                                                        value={city}
                                                        onChange={(e) => setCity(e.target.value)}
                                                      />
                                                      {/* <Typography>{'data.address'}</Typography> */}
                                                    </Stack>
                                                  </Grid>
                                                  <Grid item xs={12} md={6}>
                                                    <Stack spacing={0.5}>
                                                      {/* <Typography color="secondary">Zip Code</Typography> */}
                                                      {/* <Typography>
                                                                                            <PatternFormat displayType="text" format="### ###" mask="_" defaultValue={666666} />
                                                                                        </Typography> */}
                                                      <TextField
                                                        label="Zip Code"
                                                        // type="number"
                                                        value={zipcode}
                                                        onChange={(e) => setZipcode(e.target.value)}
                                                      />
                                                    </Stack>
                                                  </Grid>
                                                  <Grid item xs={12}>
                                                    <Stack direction={'row'} justifyContent={'flex-end'}>
                                                      <Button
                                                        variant="contained"
                                                        onClick={() => {
                                                          clientupdate();
                                                          if (approveid) {
                                                            rolepricesubmit();
                                                          }
                                                        }}
                                                      >
                                                        Update {approveid ? '& Approve' : ''}
                                                        {disableid ? '& Disable' : ''}
                                                      </Button>
                                                    </Stack>
                                                  </Grid>
                                                </Grid>
                                                {/* </ListItem>

                                                                        </List> */}
                                              </MainCard>

                                              {/* </Stack> */}
                                            </Grid>
                                          </Grid>
                                        </MainCard>
                                      </>
                                    )}
                                    {rolestab === 1 && (
                                      <>
                                        <Grid
                                          container
                                          //  sx={{ pl: { xs: 0, sm: 5, md: 6, lg: 10, xl: 12 }, p: 2 }}
                                        >
                                          <Grid item xs={12}>
                                            <MainCard sx={{ height: '100%', p: 1 }}>
                                              <MainCard sx={{ height: '100%' }}>
                                                <TableContainer sx={{ width: '100%', borderBottom: 1, borderColor: 'divider' }}>
                                                  <Table sx={{ width: '100%' }}>
                                                    <TableHead>
                                                      <TableRow>
                                                        <TableCell>#</TableCell>
                                                        <TableCell>Category</TableCell>

                                                        <TableCell sx={{ width: '40%' }}>Skill</TableCell>

                                                        <TableCell sx={{ width: '40%' }}>Cost/Hr</TableCell>

                                                        <TableCell sx={{ width: '10px' }}></TableCell>
                                                      </TableRow>
                                                    </TableHead>
                                                    <TableBody>
                                                      {rolesarr.map((val1) => {
                                                        return (
                                                          <>
                                                            <TableRow>
                                                              <TableCell>{val1.sno}</TableCell>
                                                              {/* <TableCell>{val1.sno}</TableCell> */}
                                                              <TableCell>{val1.categoryname}</TableCell>

                                                              <TableCell>
                                                                <Autocomplete1
                                                                  // margin="normal"
                                                                  fullWidth
                                                                  id="venuetype33"
                                                                  variant="outlined"
                                                                  error={true}
                                                                  freeSolo
                                                                  options={roleslist.sort(
                                                                    (a, b) => -b.categoryname.localeCompare(a.categoryname)
                                                                  )}
                                                                  groupBy={(option) => option.categoryname}
                                                                  getOptionLabel={(option) => option.subcategoryname}
                                                                  isOptionEqualToValue={(option, value) =>
                                                                    option.subcategoryid === value.subcategoryid
                                                                  }
                                                                  onChange={(e, val) => {
                                                                    if (val) {
                                                                      console.log('eval', e);
                                                                      // console.log(skillsarr)
                                                                      // let res = rolesarr.find((val2) => val2.role === val.servicename);
                                                                      let res = rolesarr.find(
                                                                        (val2) => val2.subcategoryid === val.subcategoryid
                                                                      );

                                                                      console.log(val);
                                                                      if (!res) {
                                                                        let arr = rolesarr;
                                                                        arr[val1.sno - 1].role = val.subcategoryname;
                                                                        arr[val1.sno - 1].categoryname = val.categoryname;

                                                                        // arr[val1.sno - 1].Staffroleid = 0;

                                                                        arr[val1.sno - 1].categoryid = val.categoryid;
                                                                        arr[val1.sno - 1].subcategoryid = val.subcategoryid;
                                                                        // arr[val1.sno - 1].servicename = val.servicename;
                                                                        arr[val1.sno - 1].servicename = val.subcategoryname;
                                                                        // arr[val1.sno - 1].servicecode = val.servicecode;

                                                                        // arr[val1.sno - 1].unitid = val.serviceunit;
                                                                        arr[val1.sno - 1].unitid = val.unitid;
                                                                        // arr[val1.sno - 1].serviceid = val.serviceid;

                                                                        // arr[val1.sno - 1].unitname = val.serviceunitname;
                                                                        arr[val1.sno - 1].unitname = val.unitname;

                                                                        // setSkillsarr([...arr]);
                                                                        setRolesarr([...arr]);
                                                                      } else {
                                                                        // setAlertmessage('select different skill')
                                                                        opentoast('select different skill');
                                                                      }
                                                                    }
                                                                    console.log(val);
                                                                  }}
                                                                  renderInput={(params) => (
                                                                    <TextField
                                                                      {...params}
                                                                      placeholder="Choose a Skill"
                                                                      defaultValue={val1.role}
                                                                      variant="outlined"
                                                                      sx={{
                                                                        input: {
                                                                          '&::placeholder': {
                                                                            opacity: 0.9
                                                                          }
                                                                        }
                                                                      }}
                                                                    />
                                                                  )}
                                                                  // renderGroup={(params) => (
                                                                  //     <li key={params.key}>

                                                                  //       <h5>{params.group}</h5>
                                                                  //       <p>{params.children}</p>

                                                                  //     </li>
                                                                  //   )}
                                                                  // options={roleslist}
                                                                  value={{
                                                                    categoryid: val1.categoryid,
                                                                    categoryname: '',
                                                                    cost: val1.serviceamount,
                                                                    label: val1.servicename,
                                                                    status: 0,
                                                                    subcategoryid: val1.subcategoryid,
                                                                    subcategoryname: val1.servicename,
                                                                    unitid: val1.unitid,
                                                                    unitname: val1.unitname
                                                                  }}
                                                                  // textContent={val1.servicename}

                                                                  disabled={loading ? true : false}
                                                                />
                                                              </TableCell>

                                                              <TableCell>
                                                                <TextField
                                                                  type="number"
                                                                  // sx={{ width: '150px' }}
                                                                  onChange={(e) => {
                                                                    let arr = rolesarr;
                                                                    if (e.target.value < 1000) {
                                                                      arr[val1.sno - 1].cost = e.target.value;
                                                                      arr[val1.sno - 1].servicevalue = e.target.value;
                                                                      arr[val1.sno - 1].serviceamount = e.target.value;

                                                                      setRolesarr([...arr]);
                                                                    }

                                                                    // forceUpdate()
                                                                    console.log(e.target.value);
                                                                  }}
                                                                  value={val1.cost}
                                                                  autoComplete="off"
                                                                  fullWidth
                                                                />
                                                              </TableCell>

                                                              <TableCell>
                                                                <IconButton onClick={() => deletearr(val1.sno, val1)} color="error">
                                                                  <DeleteOutlined />
                                                                </IconButton>
                                                              </TableCell>
                                                            </TableRow>
                                                          </>
                                                        );
                                                      })}
                                                    </TableBody>
                                                  </Table>
                                                </TableContainer>
                                                <Grid item xs={12}>
                                                  <Button
                                                    color="primary"
                                                    endIcon={<PlusOutlined />}
                                                    onClick={() => addarr()}
                                                    sx={{ m: 2 }}
                                                    variant="dashed"
                                                    size="extraSmall"
                                                  >
                                                    ADD SKILL
                                                  </Button>
                                                </Grid>
                                                <Grid item xs={12}>
                                                  <Grid container justifyContent={'flex-end'}>
                                                    <Grid item>
                                                      {/* <Stack direction={'row'} justifyContent={'flex-end'}> */}
                                                      <Button variant="contained" size="small" onClick={rolepricesubmit}>
                                                        Update
                                                      </Button>
                                                    </Grid>
                                                  </Grid>
                                                  {/* </Stack> */}
                                                </Grid>
                                              </MainCard>
                                            </MainCard>
                                          </Grid>
                                        </Grid>
                                      </>
                                    )}
                                  </MainCard>
                                </>
                              )}
                            </Transitions>
                          </Collapse>
                        </TableCell>
                      </TableRow>
                    </>
                  );
                })}
                {emptyRows > 0 && (
                  <TableRow
                    style={{
                      height: 53 * emptyRows
                    }}
                  >
                    <TableCell colSpan={6} />
                  </TableRow>
                )}
              </TableBody>
            </Table>
          </TableContainer>
          <TablePagination
            rowsPerPageOptions={[10, 25, 50, 100]}
            component="div"
            count={rows.length}
            rowsPerPage={rowsPerPage}
            page={page}
            onPageChange={handleChangePage}
            onRowsPerPageChange={handleChangeRowsPerPage}
          />
          {/* </Paper> */}
          {/* <FormControlLabel
            control={<Switch checked={dense} onChange={handleChangeDense} />}
            label="Dense padding"
          /> */}
          {/* <AlertCustomerDelete title={'uuuu'} open={open} handleClose={handleClose} /> */}
        </Box>
      </>
    );
  }

  const [tabvalue, setTabvalue] = useState(0);
  const [rows, setRows] = useState([]);
  const [clientapproved, setClientApproved] = useState([]);
  const [clientpending, setClientPending] = useState([]);
  const [loading, setLoading] = useState(false);
  const [searchword, setSearchword] = useState('');
  const [dialogopen, setDialogopen] = useState(false);
  const theme = useTheme();
  // const [expandopen, setExpandopen] = React.useState('');

  // const setinitial = (val)=>{
  //       if(val){

  //         console.log(val);
  //         setClientname(val.tenantname)
  //       }else{
  //         setClientname('')
  //       }
  //      console.log(clientname)

  // }

  useEffect(() => {
    if (localStorage.getItem('partnerid')) {
      clientdetailspending(localStorage.getItem('partnerid'));
      clientdetailsapproved(localStorage.getItem('partnerid'));
    }
  }, []);

  useEffect(() => {
    // if (searchword) {
    // if (tabvalue === 0) {
    //     let arr = clientapproved.filter((val) => {
    //         return (val.tenantname.toLowerCase().includes(searchword.toLowerCase())
    //             || val.primarycontact.toLowerCase().includes(searchword.toLowerCase())
    //             || val.primaryemail.toLowerCase().includes(searchword.toLowerCase())
    //             || val.city.toString().toLowerCase().includes(searchword.toLowerCase())
    //         )
    //     })
    //     console.log(arr)
    //     setRows([...arr])
    // }
    // if (tabvalue === 1) {
    //     let arr = clientpending.filter((val) => {
    //         return (val.tenantname.toLowerCase().includes(searchword.toLowerCase())
    //             || val.primarycontact.toLowerCase().includes(searchword.toLowerCase())
    //             || val.primaryemail.toLowerCase().includes(searchword.toLowerCase())
    //             || val.city.toString().toLowerCase().includes(searchword.toLowerCase())
    //         )
    //     })
    //     console.log(arr)
    //     setRows([...arr])
    // }
    // }
  }, [searchword, tabvalue]);

  const handleChangetab = (e, i) => {
    setTabvalue(i);
    if (i === 1) setRows(clientapproved);
    if (i === 0) setRows(clientpending);
  };

  const clientdetailsapproved = async (tid) => {
    setLoading(true);
    try {
      await axios
        .get(`${process.env.REACT_APP_URL}/payments/requests/getpaymentrequest/?partnerid=${tid}&status=1`)

        .then((res) => {
          if (res.data.message === 'Successful') {
            let arr = [];
            res.data.details.map((val, i) => {
              arr = [...arr, { ...val, sno: i + 1 }];
            });
            // setArr(arr)
            setClientApproved(arr);
            console.log(res.data.details);
            setLoading(false);
          }
        })
        .catch((err) => {
          console.log(err);
          setLoading(false);
        });
    } catch (err) {
      console.log(err);
      setLoading(false);
    }
  };

  const clientdetailspending = async (tid) => {
    setLoading(true);
    try {
      await axios
        .get(`${process.env.REACT_APP_URL}/payments/requests/getpaymentrequest/?partnerid=${tid}&status=0`)

        .then((res) => {
          if (res.data.message === 'Success') {
            let arr = [];
            res.data.details.map((val, i) => {
              arr = [...arr, { ...val, sno: i + 1 }];
            });
            // setArr(arr)
            setClientPending(arr);
            setRows(arr);
            console.log(res.data.details);
            setLoading(false);
          }
        })
        .catch((err) => {
          console.log(err);
          setLoading(false);
        });
    } catch (err) {
      console.log(err);
      setLoading(false);
    }
  };

  const dialogclose = () => {
    setDialogopen(false);
  };

  return (
    <>
      {loading && <Loader />}

      <Grid container rowSpacing={2} columnSpacing={2.75}>
        <Grid
          item
          xs={12}
          // sx={{ mb: -2.25 }}
        >
          <Stack direction="row" justifyContent="space-between" alignItems="center">
            <Typography variant="h3">Payment Requests</Typography>
            <Button
              variant="contained"
              onClick={() => {
                // setDialogopen(true)
              }}
            >
              Create Request
            </Button>
          </Stack>
        </Grid>
        <Grid item xs={12}>
          <Box sx={{ overflow: 'auto', border: 1, borderColor: 'grey.200', borderRadius: 2, backgroundColor: '#fff', minHeight: 400 }}>
            {/* <Box
                            sx={{
                                p: 1,
                                width: '100%'
                            }}
                        > */}

            <Stack
              // direction={{xs:'column',md:'row'}}
              // alignItems={{xs:'flex-end',md:'center'}}
              alignItems="center"
              justifyContent="space-between"
              direction="row"
              sx={{
                //  borderBottom: 1, borderColor: 'divider',
                p: 2,
                // m:2,
                width: '100%'
              }}
            >
              <Tabs value={tabvalue} onChange={handleChangetab} variant="scrollable" scrollButtons="auto">
                <Tab
                  label="Pending"
                  icon={<Chip label={clientpending.length} color="primary" variant="light" size="small" />}
                  iconPosition="end"
                />
                <Tab
                  label="Paid"
                  iconPosition="end"
                  // icon={<ListIcon />}
                  icon={<Chip label={clientapproved.length} color="primary" variant="light" size="small" />}
                />
              </Tabs>

              <FormControl sx={{ width: 250, display: { xs: 'none', md: 'flex' } }}>
                <OutlinedInput
                  size="small"
                  id="header-search"
                  startAdornment={
                    <InputAdornment position="start" sx={{ mr: -0.5 }}>
                      <SearchOutlined />
                    </InputAdornment>
                  }
                  aria-describedby="header-search-text"
                  inputProps={{
                    'aria-label': 'weight'
                  }}
                  placeholder="Search"
                  value={searchword}
                  onChange={(e) => {
                    setSearchword(e.target.value);
                  }}
                  autoComplete="off"
                />
              </FormControl>
            </Stack>
            {/* </Box> */}
            <EnhancedTable />
          </Box>
        </Grid>
      </Grid>
    </>
  );
};

export default Requests;
