72 lines
1.6 KiB
TypeScript
72 lines
1.6 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,
|
||
|
order: [["id", "ASC"]],
|
||
|
})
|
||
|
|
||
|
|
||
|
return users;
|
||
|
};
|
||
|
|
||
|
export default ListUserOnlineOffline;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|