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 => { 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;