const ResponseHandler = require('../shared/response.handler'); class GroupsController { constructor({ groupsService }) { this.groupsService = groupsService; } async getAllGroups(req, res, next) { try { const groups = await this.groupsService.getAllGroups(req.userId); return ResponseHandler.success(res, groups, 'Groups retrieved successfully'); } catch (error) { next(error); } } async getGroupById(req, res, next) { try { const group = await this.groupsService.getGroupById(req.params.id); return ResponseHandler.success(res, group, 'Group retrieved successfully'); } catch (error) { next(error); } } async createGroup(req, res, next) { try { const group = await this.groupsService.createGroup(req.body, req.userId); return ResponseHandler.created(res, group, 'Group created successfully'); } catch (error) { next(error); } } async updateGroup(req, res, next) { try { const group = await this.groupsService.updateGroup(req.params.id, req.body); return ResponseHandler.success(res, group, 'Group updated successfully'); } catch (error) { next(error); } } async deleteGroup(req, res, next) { try { await this.groupsService.deleteGroup(req.params.id); return ResponseHandler.success(res, null, 'Group deleted successfully'); } catch (error) { next(error); } } async addMembers(req, res, next) { try { const group = await this.groupsService.addMembersToGroup(req.params.id, req.body.userIds); return ResponseHandler.success(res, group, 'Members added successfully'); } catch (error) { next(error); } } async removeMember(req, res, next) { try { const group = await this.groupsService.removeMemberFromGroup( req.params.id, req.params.userId ); return ResponseHandler.success(res, group, 'Member removed successfully'); } catch (error) { next(error); } } } module.exports = GroupsController;