import { GroupService } from '../services/group.service'; import { Controller, Get, UseGuards, Param, Req } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger'; import { EnableDisableStatusEnum } from '@app/common/constants/days.enum'; import { ControllerRoute } from '@app/common/constants/controller-route'; // Assuming this is where the routes are defined import { PermissionsGuard } from 'src/guards/permissions.guard'; import { Permissions } from 'src/decorators/permissions.decorator'; @ApiTags('Group Module') @Controller({ version: EnableDisableStatusEnum.ENABLED, path: ControllerRoute.GROUP.ROUTE, // use the static route constant }) export class GroupController { constructor(private readonly groupService: GroupService) {} @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('DEVICE_WIZARD_VIEW_DEVICE_WIZARD') @Get(':spaceUuid') @ApiOperation({ summary: ControllerRoute.GROUP.ACTIONS.GET_GROUPS_BY_SPACE_UUID_SUMMARY, description: ControllerRoute.GROUP.ACTIONS.GET_GROUPS_BY_SPACE_UUID_DESCRIPTION, }) async getGroupsBySpaceUuid(@Param('spaceUuid') spaceUuid: string) { return await this.groupService.getGroupsBySpaceUuid(spaceUuid); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('DEVICE_WIZARD_VIEW_DEVICE_WIZARD') @Get(':spaceUuid/devices/:groupName') @ApiOperation({ summary: ControllerRoute.GROUP.ACTIONS.GET_UNIT_DEVICES_BY_GROUP_NAME_SUMMARY, description: ControllerRoute.GROUP.ACTIONS.GET_UNIT_DEVICES_BY_GROUP_NAME_DESCRIPTION, }) async getUnitDevicesByGroupName( @Param('spaceUuid') spaceUuid: string, @Param('groupName') groupName: string, @Req() req: any, ) { const userUuid = req.user.uuid; return await this.groupService.getSpaceDevicesByGroupName( spaceUuid, groupName, userUuid, ); } }