-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathonline.js
43 lines (42 loc) · 1.06 KB
/
online.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Online {
constructor() {
this.users = [];
}
getUserById = (id) => {
return this.users.find(
(item) => JSON.stringify(id) === JSON.stringify(item._id)
);
};
addUserOnline = (user) => {
this.users.push({ ...user });
};
pullUserOffline = (id) => {
this.users = this.users.filter(
(item) => JSON.stringify(item._id) !== JSON.stringify(id)
);
};
getUsers = (page, limit) => {
return {
list:
limit > -1
? this.fixList().slice((page - 1) * limit, page * limit)
: this.fixList(),
total: this.users.length,
totalRoleUser: this.users.filter((item) => item.isAdmin === false).length,
totalRoleAdmin: this.users.filter((item) => item.isAdmin === true).length,
};
};
fixList = () => {
let arr = [];
this.users.forEach((user) => {
if (
!arr.some((userSome) => {
return JSON.stringify(userSome._id) === JSON.stringify(user._id);
})
)
arr = [...arr, { ...user }];
});
return arr;
};
}
module.exports = new Online();