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 { AqiService } from '../services/aqi.service'; import { GetAqiDailyBySpaceDto, GetAqiPollutantBySpaceDto, } from '../dto/get-aqi.dto'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { SpaceParamsDto } from '../dto/aqi-params.dto'; @ApiTags('AQI Module') @Controller({ version: EnableDisableStatusEnum.ENABLED, path: ControllerRoute.AQI.ROUTE, }) export class AqiController { constructor(private readonly aqiService: AqiService) {} @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('range/space/:spaceUuid') @ApiOperation({ summary: ControllerRoute.AQI.ACTIONS.GET_AQI_RANGE_DATA_SUMMARY, description: ControllerRoute.AQI.ACTIONS.GET_AQI_RANGE_DATA_DESCRIPTION, }) @ApiParam({ name: 'spaceUuid', description: 'UUID of the Space', required: true, }) async getAQIRangeDataBySpace( @Param() params: SpaceParamsDto, @Query() query: GetAqiDailyBySpaceDto, ): Promise { return await this.aqiService.getAQIRangeDataBySpace(params, query); } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('distribution/space/:spaceUuid') @ApiOperation({ summary: ControllerRoute.AQI.ACTIONS.GET_AQI_DISTRIBUTION_DATA_SUMMARY, description: ControllerRoute.AQI.ACTIONS.GET_AQI_DISTRIBUTION_DATA_DESCRIPTION, }) @ApiParam({ name: 'spaceUuid', description: 'UUID of the Space', required: true, }) async getAQIDistributionDataBySpace( @Param() params: SpaceParamsDto, @Query() query: GetAqiPollutantBySpaceDto, ): Promise { return await this.aqiService.getAQIDistributionDataBySpace(params, query); } }