import React, { useState, useEffect, useReducer, useContext} from "react"; import MainContainer from "../../components/MainContainer"; import api from "../../services/api"; import SelectField from "../../components/Report/SelectField"; //import { data } from '../../components/Report/MTable/data'; import DatePicker1 from '../../components/Report/DatePicker' import DatePicker2 from '../../components/Report/DatePicker' //import { Button } from "@material-ui/core"; import MTable from "../../components/Report/MTable"; import PropTypes from 'prop-types'; import Box from '@mui/material/Box'; import { AuthContext } from "../../context/Auth/AuthContext"; import { Can } from "../../components/Can"; const reducerQ = (state, action) =>{ if(action.type === 'LOAD_QUERY'){ console.log('----------------action.payload: ', action.payload) const queries = action.payload const newQueries = [] queries.forEach((query) => { const queryIndex = state.findIndex((q) => q.id === query.id) if(queryIndex !== -1){ state[queryIndex] = query } else{ newQueries.push(query) } }) return [...state, ...newQueries] } if (action.type === "RESET") { return []; } } const reducer = (state, action) => { if (action.type === "LOAD_USERS") { const users = action.payload; const newUsers = []; users.forEach((user) => { const userIndex = state.findIndex((u) => u.id === user.id); if (userIndex !== -1) { state[userIndex] = user; } else { newUsers.push(user); } }); return [...state, ...newUsers]; } if (action.type === "RESET") { return []; } }; function Item(props) { const { sx, ...other } = props; return ( (theme.palette.mode === 'dark' ? '#101010' : '#fff'), color: (theme) => (theme.palette.mode === 'dark' ? 'grey.300' : 'grey.800'), border: '1px solid', borderColor: (theme) => theme.palette.mode === 'dark' ? 'grey.800' : 'grey.300', p: 1, m: 1, borderRadius: 2, fontSize: '0.875rem', fontWeight: '700', ...sx, }} {...other} /> ); } Item.propTypes = { sx: PropTypes.oneOfType([ PropTypes.arrayOf( PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool]), ), PropTypes.func, PropTypes.object, ]), }; let columnsData = [ { title: 'Atendente', field: 'user.name' }, { title: 'Contato', field: 'contact.number' }, { title: 'Assunto', field: 'queue.name' }, { title: 'Status', field: 'status' }, { title: 'Criado', field: 'createdAt' }, { title: 'Atualizado', field: 'updatedAt', /*cellStyle: { backgroundColor: '#039be5', color: '#FFF' }, headerStyle: { backgroundColor: '#039be5', fontSize: 12 }*/ }, ]; /*const currencies = [ { value: '1', label: 'Adriano', }, { value: '2', label: 'Aguinaldo', }, { value: '3', label: 'Maria', }, { value: '4', label: 'Suely', }, { value: '0', label: '', }, ];*/ const Report = () => { const { user: userA } = useContext(AuthContext); //-------- const [searchParam] = useState(""); //const [loading, setLoading] = useState(false); //const [hasMore, setHasMore] = useState(false); const [pageNumber, setPageNumber] = useState(1); const [users, dispatch] = useReducer(reducer, []); //const [columns, setColums] = useState([]) const [startDate, setDatePicker1] = useState(new Date()) const [endDate, setDatePicker2] = useState(new Date()) const [userId, setUser] = useState(null) const [query, dispatchQ] = useReducer(reducerQ, []) useEffect(() => { dispatch({ type: "RESET" }); dispatchQ({ type: "RESET" }) setPageNumber(1); }, [searchParam]); useEffect(() => { //setLoading(true); const delayDebounceFn = setTimeout(() => { const fetchUsers = async () => { try { const { data } = await api.get("/users/", { params: { searchParam, pageNumber }, }); dispatch({ type: "LOAD_USERS", payload: data.users }); //setHasMore(data.hasMore); //setLoading(false); } catch (err) { console.log(err); } }; fetchUsers(); }, 500); return () => clearTimeout(delayDebounceFn); }, [searchParam, pageNumber]); useEffect(() => { //setLoading(true); const delayDebounceFn = setTimeout(() => { const fetchQueries = async () => { try { const dataQuery = await api.get("/reports/", {params: {userId, startDate, endDate },}); dispatchQ({ type: "RESET" }) dispatchQ({ type: "LOAD_QUERY", payload: dataQuery.data }); //setLoading(false); } catch (err) { console.log(err); } }; fetchQueries(); }, 500); return () => clearTimeout(delayDebounceFn); }, [userId, startDate, endDate]); // Get from child 1 const datePicker1Value = (data) => { console.log('DATE1: ',(data)); setDatePicker1(data) } // Get from child 2 const datePicker2Value = (data) => { console.log('DATE2: ',(data)); setDatePicker2(data) } // Get from child 3 const textFieldSelectUser = (data) => { console.log('textField: ',data); setUser(data) } return ( ( { return {'value': obj.id, 'label': obj.name} })}/> {/* */} )} /> ) }; export default Report;