projeto-hit/backend/src/controllers/ReportController.ts

144 lines
4.4 KiB
TypeScript
Raw Normal View History

//relatorio
import { Request, Response } from "express";
import AppError from "../errors/AppError";
import ShowTicketReport from "../services/TicketServices/ShowTicketReport";
import ShowMessageReport from "../services/MessageServices/ShowMessageReport";
import onlineUserService from "../services/UserServices/CreateOrUpdateOnlineUserService";
import User from "../models/User";
import Queue from "../models/Queue";
import UserOnlineTime from "../models/UserOnlineTime";
import { Op, Sequelize,literal } from "sequelize";
import format from 'date-fns/format';
import ptBR from 'date-fns/locale/pt-BR';
import { splitDateTime } from "../helpers/SplitDateTime";
import ListUserOnlineOffline from "../services/UserServices/ListUsersOnlineOfflineService";
import ListUserParamiterService from "../services/UserServices/ListUserParamiterService";
import ShowUserServiceReport from "../services/UserServices/ShowUserServiceReport";
type IndexQuery = {
userId: string;
startDate: string;
endDate: string;
};
export const reportUserByDateStartDateEnd = async (req: Request, res: Response): Promise<Response> => {
2022-05-03 21:20:58 +00:00
if (req.user.profile !== "master" && req.user.profile !== "admin") {
throw new AppError("ERR_NO_PERMISSION", 403);
}
const { userId, startDate, endDate } = req.query as IndexQuery
const data_query = await ShowTicketReport(userId, startDate, endDate);
return res.status(200).json(data_query);
};
export const reportUserService= async (req: Request, res: Response): Promise<Response> => {
if (req.user.profile !== "master" && req.user.profile !== "admin") {
throw new AppError("ERR_NO_PERMISSION", 403);
}
const { userId, startDate, endDate } = req.query as IndexQuery
//test del
console.log('startDate: ', startDate)
console.log('endDate: ', endDate)
console.log('userId: ', userId)
let usersProfile = await ListUserParamiterService({profile: 'user'})
const sumUserOlineTime = await ShowUserServiceReport({startDate, endDate, userId});
const closedByUser = await ShowUserServiceReport({startDate, endDate, ticketStatus: 'closed', userId});
const openByUser = await ShowUserServiceReport({startDate, endDate, ticketStatus: 'open', userId});
let dateTime = splitDateTime(new Date(format(new Date(), 'yyyy-MM-dd HH:mm:ss', { locale: ptBR })))
const onlineUsers = await ListUserOnlineOffline({ date: dateTime.fullDate })
console.log('sumUserOlineTime: ',sumUserOlineTime )
console.log('closedByUser: ',closedByUser )
console.log('openByUser: ',openByUser )
console.log('usersProfile: ', usersProfile)
console.log('')
usersProfile.map((user:any) => {
let index = sumUserOlineTime.findIndex((e:any) => e.userId == user.id)
if (index != -1) {
user.sumOnlineTime = sumUserOlineTime[index];
}
index = closedByUser.findIndex((e:any) => e.userId == user.id)
if (index != -1) {
user.sumClosed = closedByUser[index];
}
index = openByUser.findIndex((e:any) => e.userId == user.id)
if (index != -1) {
user.sumOpen = openByUser[index]
}
index = onlineUsers.findIndex((e:any) => e.userId == user.id)
if (index != -1) {
user.statusOnline = onlineUsers[index]
}
if(startDate.length>0 && startDate.split('-').length == 3){
let date = startDate.split('-')
user.startDate = `${date[2]}/${date[1]}/${date[0]}`
}
if(endDate.length>0 && endDate.split('-').length == 3){
let date = endDate.split('-')
user.endDate = `${date[2]}/${date[1]}/${date[0]}`
}
})
console.log('')
console.log('usersProfile2: ',usersProfile)
//
// const data_query = await ShowTicketReport(userId, startDate, endDate);
return res.status(200).json(usersProfile);
};
export const reportMessagesUserByDateStartDateEnd = async (req: Request, res: Response): Promise<Response> => {
if (req.user.profile !== "master" && req.user.profile !== "admin") {
throw new AppError("ERR_NO_PERMISSION", 403);
}
const { userId, startDate, endDate } = req.query as IndexQuery
const data_query_messages = await ShowMessageReport(userId, startDate, endDate);
return res.status(200).json(data_query_messages);
};