import { Controller, Get, Param, Query, UseGuards } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation, ApiParam, } from '@nestjs/swagger'; import { EnableDisableStatusEnum } from '@app/common/constants/days.enum'; import { ControllerRoute } from '@app/common/constants/controller-route'; import { JwtAuthGuard } from '@app/common/guards/jwt.auth.guard'; import { OccupancyService } from '../services/occupancy.service'; import { GetOccupancyDurationBySpaceDto, GetOccupancyHeatMapBySpaceDto, } from '../dto/get-occupancy.dto'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { SpaceParamsDto } from '../dto/occupancy-params.dto'; @ApiTags('Occupancy Module') @Controller({ version: EnableDisableStatusEnum.ENABLED, path: ControllerRoute.Occupancy.ROUTE, }) export class OccupancyController { constructor(private readonly occupancyService: OccupancyService) {} @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('heat-map/space/:spaceUuid') @ApiOperation({ summary: ControllerRoute.Occupancy.ACTIONS.GET_OCCUPANCY_HEAT_MAP_SUMMARY, description: ControllerRoute.Occupancy.ACTIONS.GET_OCCUPANCY_HEAT_MAP_DESCRIPTION, }) @ApiParam({ name: 'spaceUuid', description: 'UUID of the Space', required: true, }) async getOccupancyHeatMapDataBySpace( @Param() params: SpaceParamsDto, @Query() query: GetOccupancyHeatMapBySpaceDto, ): Promise { return await this.occupancyService.getOccupancyHeatMapDataBySpace( params, query, ); } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('duration/space/:spaceUuid') @ApiOperation({ summary: ControllerRoute.Occupancy.ACTIONS.GET_OCCUPANCY_HEAT_MAP_SUMMARY, description: ControllerRoute.Occupancy.ACTIONS.GET_OCCUPANCY_HEAT_MAP_DESCRIPTION, }) @ApiParam({ name: 'spaceUuid', description: 'UUID of the Space', required: true, }) async getOccupancyDurationDataBySpace( @Param() params: SpaceParamsDto, @Query() query: GetOccupancyDurationBySpaceDto, ): Promise { return await this.occupancyService.getOccupancyDurationDataBySpace( params, query, ); } }