1
0
mirror of https://gitlab.com/comunic/comunicapiv2 synced 2024-12-28 14:38:52 +00:00

Can get the list of members of a group

This commit is contained in:
Pierre HUBERT 2019-12-26 14:26:46 +01:00
parent 84a98506dc
commit a258f949c1
3 changed files with 49 additions and 4 deletions

View File

@ -1,7 +1,7 @@
import { RequestHandler } from "../entities/RequestHandler";
import { GroupsHelper, PATH_GROUPS_LOGOS } from "../helpers/GroupsHelper";
import { GroupsAccessLevel, GroupInfo, GroupVisibilityLevel, GroupPostsCreationLevel, GroupRegistrationLevel } from "../entities/Group";
import { GroupMembershipLevels } from "../entities/GroupMember";
import { GroupMembershipLevels, GroupMember } from "../entities/GroupMember";
import { time } from "../utils/DateUtils";
import { LikesHelper, LikesType } from "../helpers/LikesHelper";
import { GroupSettings } from "../entities/GroupSettings";
@ -275,6 +275,20 @@ export class GroupsController {
})
}
/**
* Get the entire list of members of the group
*
* @param h Request handler
*/
public static async GetMembers(h: RequestHandler) {
const groupID = await h.postGroupIDWithAccess("id", GroupsAccessLevel.MODERATOR_ACCESS);
const members = await GroupsHelper.GetListMembers(groupID);
// Parse the list of members
h.send(members.map((m) => this.GroupMemberToAPI(m)));
}
/**
* Turn a GroupInfo object into a valid API object
*
@ -313,4 +327,18 @@ export class GroupsController {
return data;
}
/**
* Convert a {GroupMember} object into an API entry
*
* @param m Group Member to transform
*/
private static GroupMemberToAPI(m: GroupMember) : Object {
return {
user_id: m.userID,
group_id: m.groupID,
time_create: m.timeCreate,
level: GROUPS_MEMBERSHIP_LEVELS[m.level]
};
}
}

View File

@ -104,4 +104,6 @@ export const Routes : Route[] = [
{path: "/groups/upload_logo", cb: (h) => GroupsController.UploadLogo(h)},
{path: "/groups/delete_logo", cb: (h) => GroupsController.DeleteLogo(h)},
{path: "/groups/get_members", cb: (h) => GroupsController.GetMembers(h)},
]

View File

@ -292,6 +292,21 @@ export class GroupsHelper {
return currID < 1 || currID == groupID;
}
/**
* Get the entire list of members of a group
*
* @param groupID Target Group ID
*/
public static async GetListMembers(groupID: number) : Promise<Array<GroupMember>> {
const members = await DatabaseHelper.Query({
table: GROUPS_MEMBERS_TABLE,
where: {
groups_id: groupID
}
});
return members.map((row) => this.DbToGroupMember(row));
}
/**
* Count the number of members of a group
@ -337,12 +352,12 @@ export class GroupsHelper {
* @param row Database entry
* @returns Generated object
*/
private static async DbToGroupMember(row: any) : Promise<GroupMember> {
private static DbToGroupMember(row: any) : GroupMember {
return new GroupMember({
id: row.id,
groupID: row.groups_id,
userID: row.user_id,
timeCreate: row.time_create,
userID: Number(row.user_id),
timeCreate: Number(row.time_create),
level: row.level,
following: row.following == 1
});