projeto-hit/backend/src/services/UserServices/ListUserParamiterService.ts

57 lines
1.2 KiB
TypeScript
Raw Normal View History

import { Op, Sequelize } from "sequelize";
import Queue from "../../models/Queue";
import User from "../../models/User";
import UserQueue from "../../models/UserQueue";
import { List } from "whatsapp-web.js"
interface Request {
userId?: string | number;
profile?: string;
profiles?: Array<string>;
raw?: boolean;
userIds?: string | number;
}
const ListUser = async ({ profile, userId, raw, userIds, profiles }: Request): Promise<User[]> => {
let where_clause = {};
if (userId && profile) {
where_clause = {
[Op.and]: [{ userId: userId }, { profile: profile }]
};
} else if (userId) {
where_clause = {
[Op.and]: [{ userId: userId }]
};
} else if (profile) {
where_clause = {
profile: profile
};
} else if (userIds) {
where_clause = {
id: { [Op.in]: userIds }
};
} else if (profiles) {
where_clause = {
profile: { [Op.in]: profiles }
};
}
const users = await User.findAll({
where: where_clause,
raw,
attributes: ["id", "name", "email", "positionCompany"],
include: [
{ model: Queue, as: "queues", attributes: ["id", "name", "color"] }
],
order: [["id", "ASC"]],
group: ["User.id"]
});
return users;
};
export default ListUser;