Merge branch 'testeA'

pull/1/head
adriano 2022-01-26 00:38:36 -03:00
commit 09cbd542d2
5 changed files with 81 additions and 88 deletions

View File

@ -9,7 +9,7 @@ const reportRoutes = express.Router();
//reportRoutes.get("/reports/:userId", /*isAuth,*/ ReportController.reportUser); //reportRoutes.get("/reports/:userId", /*isAuth,*/ ReportController.reportUser);
reportRoutes.get("/reports", /*isAuth,*/ ReportController.reportUserByDateStartDateEnd); reportRoutes.get("/reports", /*isAuth,*/ ReportController.reportUserByDateStartDateEnd);
//reportRoutes.get("/reports", /*isAuth,*/ ReportController.reportAll); //reportRoutes.get("/reports", /*isAuth,*/ ReportController.reportAll);

View File

@ -7,37 +7,58 @@ import Queue from "../../models/Queue";
import Message from "../../models/Message"; import Message from "../../models/Message";
import { userInfo } from "os"; import { userInfo } from "os";
import { Op } from "sequelize"; import { Op, where } from "sequelize";
import { Sequelize } from "sequelize"; import { Sequelize } from "sequelize";
import moment from 'moment'; import moment from 'moment';
import { startOfDay, endOfDay, parseISO, getDate} from "date-fns"; import { startOfDay, endOfDay, parseISO, getDate} from "date-fns";
import { string } from "yup/lib/locale";
//Report by user, startDate, endDate //Report by user, startDate, endDate
const ShowTicketReport = async (id: string | number, startDate: string, endDate: string): Promise<Ticket[]> => { const ShowTicketReport = async (id: string | number, startDate: string, endDate: string): Promise<Ticket[]> => {
let where_clause = {}
const ticket = await Ticket.findAll({ if(id=='0'){
where: { where_clause = {
userid: id,
//createdAt: {
// [Op.between]: [+new Date('2022-01-24').toISOString(), +new Date().toISOString()]
//},
createdAt: { createdAt: {
[Op.gte]: startDate+' 00:00:00.000000', [Op.gte]: startDate+' 00:00:00.000000',
[Op.lte]: endDate +' 23:59:59.999999' [Op.lte]: endDate +' 23:59:59.999999'
} },
}
}
else{
where_clause = {
userid: id,
createdAt: {
[Op.gte]: startDate+' 00:00:00.000000',
[Op.lte]: endDate +' 23:59:59.999999'
},
}
}
},
const ticket = await Ticket.findAll({
where: where_clause ,
//attributes: ['id', 'status', 'createdAt', 'updatedAt'],
attributes: ['id', 'status', [Sequelize.fn("DATE_FORMAT",Sequelize.col("Ticket.createdAt"),"%d/%m/%Y %H:%i:%s"),"createdAt"],
[Sequelize.fn("DATE_FORMAT",Sequelize.col("Ticket.updatedAt"),"%d/%m/%Y %H:%i:%s"),"updatedAt"]],
attributes: ['id', 'status', 'createdAt', 'updatedAt'],
include: [ include: [
{ {
model: Message, model: Message,
required:true, required:true,
separate: true, separate: true,
attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl','createdAt'],
// attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl','createdAt'],
attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl', [Sequelize.fn("DATE_FORMAT",Sequelize.col("createdAt"),"%d/%m/%Y %H:%i:%s"),"createdAt"]],
order: [ order: [
['createdAt', 'ASC'] ['createdAt', 'ASC']
] ]

View File

@ -8,15 +8,11 @@ import React from 'react';
const MTable = (props) => { const MTable = (props) => {
const [selectedRow, setSelectedRow] = useState(null); const [selectedRow, setSelectedRow] = useState(null);
console.log('rederizou....................: ',props.data)
const dataLoad = props.data.map((dt) => { return { ...dt }}); const dataLoad = props.data.map((dt) => { return { ...dt }});
const columnsLoad = props.columns.map((column) => { return { ...column }}); const columnsLoad = props.columns.map((column) => { return { ...column }});
console.log('dataLoad....................: ',dataLoad)
console.log('columnsLoad....................: ',columnsLoad)
useEffect(() => { useEffect(() => {
@ -29,7 +25,8 @@ const MTable = (props) => {
<MaterialTable <MaterialTable
title='Relatorio' title='Relatorio'
columns={columnsLoad} columns={columnsLoad}
data={dataLoad} data={dataLoad}
onRowClick={(evt, selectedRow) => { onRowClick={(evt, selectedRow) => {
@ -47,7 +44,9 @@ const MTable = (props) => {
options={{ options={{
search: true, search: true,
selection: false, selection: false,
paging: false, paging: false,
padding: 'dense',
//loadingType: 'linear',
searchFieldStyle: { searchFieldStyle: {
width: 300, width: 300,
}, },

View File

@ -6,75 +6,46 @@ import DialogActions from '@mui/material/DialogActions';
import DataGridTable from '../Table'; import DataGridTable from '../Table';
import MTable from "../MTable"; import MTable from "../MTable";
//let columns = [{ title: 'Chat', field: 'messages.body' },]; let columns = [
// { title: 'Atendente', field: 'user.name' },
const columns = [
{ field: 'id',
title: 'ID',
width: 50,
sortable: false},
{ {
field: 'fromMe', title: 'Atendente/Cliente',
title: 'user/client', field: 'fromMe',
type: 'bool',
width: 100,
flex: 1,
editable: false,
sortable: false
},
{
field: 'body',
title: 'message',
type: 'string',
//width: 150,
flex: 1,
editable: false,
sortable: false
}, },
/* {
field: 'mediaType',
headerName: 'media type',
//width: 110,
flex: 1,
editable: false,
},
{ {
field: 'mediaUrl', title: 'Mensagem',
headerName: 'media url', field: 'body',
type: 'string', cellStyle: {whiteSpace: 'nowrap'},
//width: 110, },
flex: 1,
editable: false, { title: 'Criado', field: 'createdAt' }
},
{ /*cellStyle: {
field: 'read', backgroundColor: '#039be5',
headerName: 'tead', color: '#FFF'
type: 'bool', },
//width: 110, headerStyle: {
flex: 1, backgroundColor: '#039be5',
editable: false, fontSize: 12
},*/ }*/
{
field: 'createdAt', ]
title: 'created at',
type: 'dateTime',
//width: 110,
flex: 1,
editable: false,
sortable: false
}
];
const Modal = (props) => { const Modal = (props) => {
const [open, setOpen] = React.useState(true); const [open, setOpen] = React.useState(true);
const [scroll, setScroll] = React.useState('paper'); const [scroll, setScroll] = React.useState('paper');
const dataChat = props.data.map((dt) => {
return {
'fromMe': dt.fromMe ? 'Atendente' : 'Cliente',
'body': dt.body,
'createdAt': dt.createdAt
}
});
const handleClose = () => { const handleClose = () => {
setOpen(false); setOpen(false);
}; };
@ -104,7 +75,7 @@ const Modal = (props) => {
aria-describedby="scroll-dialog-description" aria-describedby="scroll-dialog-description"
> >
<MTable data={props.data} columns={columns} /> <MTable data={dataChat} columns={columns} />
<DialogActions> <DialogActions>
<Button onClick={handleClose}>Ok</Button> <Button onClick={handleClose}>Ok</Button>

View File

@ -176,14 +176,15 @@ const Report = () => {
const [query, dispatchQ] = useReducer(reducerQ, []) const [query, dispatchQ] = useReducer(reducerQ, [])
useEffect(() => { useEffect(() => {
dispatch({ type: "RESET" }); dispatch({ type: "RESET" });
dispatchQ({ type: "RESET" }) dispatchQ({ type: "RESET" })
setPageNumber(1); setPageNumber(1);
}, [searchParam]); }, [searchParam]);
useEffect(() => { useEffect(() => {
setLoading(true); setLoading(true);
const delayDebounceFn = setTimeout(() => { const delayDebounceFn = setTimeout(() => {
const fetchUsers = async () => { const fetchUsers = async () => {
@ -191,7 +192,7 @@ const Report = () => {
const { data } = await api.get("/users/", { const { data } = await api.get("/users/", {
params: { searchParam, pageNumber }, params: { searchParam, pageNumber },
}); });
dispatch({ type: "LOAD_USERS", payload: data.users }); dispatch({ type: "LOAD_USERS", payload: data.users });
setHasMore(data.hasMore); setHasMore(data.hasMore);
setLoading(false); setLoading(false);
@ -216,9 +217,9 @@ const Report = () => {
const fetchQueries = async () => { const fetchQueries = async () => {
try { try {
const dataQuery = await api.get("/reports/", {params: {userId, startDate, endDate },});
const dataQuery = await api.get("/reports/", {params: {userId, startDate, endDate },});
console.log('fffffffffffffffffffff query: ', dataQuery.data) dispatchQ({ type: "RESET" })
dispatchQ({ type: "LOAD_QUERY", payload: dataQuery.data }); dispatchQ({ type: "LOAD_QUERY", payload: dataQuery.data });
setLoading(false); setLoading(false);
@ -272,8 +273,9 @@ console.log('XXXXXXXXX: ', query)
return ( return (
<MainContainer> <MainContainer>
<Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)' }}> <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)' }}>
<Item><SelectField func={textFieldSelectUser} currencies={users.map((obj)=>{ <Item><SelectField func={textFieldSelectUser} currencies={users.map((obj)=>{