projeto-hit/backend/src/services/UserServices/ListUsersOnlineOfflineServi...

79 lines
2.0 KiB
TypeScript

import UserOnlineTime from "../../models/UserOnlineTime";
import { Op, Sequelize } from "sequelize";
interface Request {
userId?: string | number;
status?: string;
date: string;
}
const ListUserOnlineOffline = async ({date, userId, status}: Request): Promise<UserOnlineTime[]> => {
let where_clause = {}
if(userId && status){
where_clause = {
[Op.and]: [
{userId: userId},
{status: status},
{
"$createdAt$": Sequelize.where(Sequelize.fn("date", Sequelize.col("createdAt")), `${date}`)
},
]
}
}
else if(userId){
where_clause = {
[Op.and]: [
{userId: userId},
{
"$createdAt$": Sequelize.where(Sequelize.fn("date", Sequelize.col("createdAt")), `${date}`)
},
]
}
}
else if(status){
where_clause = {
[Op.and]: [
{status: status},
{
"$createdAt$": Sequelize.where(Sequelize.fn("date", Sequelize.col("createdAt")), `${date}`)
},
]
}
}
else{
where_clause = {
[Op.and]: [
{
"$createdAt$": Sequelize.where(Sequelize.fn("date", Sequelize.col("createdAt")), `${date}`)
},
]
}
}
const users = await UserOnlineTime.findAll({
where: where_clause,
raw:true,
attributes: ['id', 'userId', 'status',
[Sequelize.fn("DATE_FORMAT",Sequelize.col("UserOnlineTime.onlineTime"),"%Y-%m-%d %H:%i:%s"),"onlineTime"],
[Sequelize.fn("DATE_FORMAT",Sequelize.col("UserOnlineTime.createdAt"),"%Y-%m-%d %H:%i:%s"),"createdAt"],
[Sequelize.fn("DATE_FORMAT",Sequelize.col("UserOnlineTime.updatedAt"),"%Y-%m-%d %H:%i:%s"),"updatedAt"]],
order: [["id", "ASC"]],
})
return users;
};
export default ListUserOnlineOffline;