import { Body, Controller, Delete, Get, Param, Post, Put, Query, UseGuards } from '@nestjs/common'; import { HqAuthGuard } from '../../common/guards/hq-auth.guard'; import { HqPermissionGuard, RequireHqPermissions } from '../../common/guards/hq-permission.guard'; import { HqOperation } from '../../common/hq-operation/hq-operation.decorator'; import { HqOperationAction } from '../../common/hq-operation/hq-operation.constants'; import { ActivityPosterService } from './activity-poster.service'; import { ActivityPosterQueryDto, UpdateActivityPosterStatusDto, UpsertActivityPosterDto, } from './dto/activity-poster.dto'; @Controller('admin/activity-posters') @UseGuards(HqAuthGuard, HqPermissionGuard) @RequireHqPermissions('activity_posters') export class AdminActivityPostersController { constructor(private readonly service: ActivityPosterService) {} @Get() list(@Query() query: ActivityPosterQueryDto) { return this.service.adminList(query); } @Get(':id') detail(@Param('id') id: string) { return this.service.adminDetail(BigInt(id)); } @Post() @HqOperation({ action: HqOperationAction.ACTIVITY_POSTER_CREATE, refType: 'ACTIVITY_POSTER', refIdField: 'id', includeBody: true, }) create(@Body() dto: UpsertActivityPosterDto) { return this.service.create(dto); } @Put(':id') @HqOperation({ action: HqOperationAction.ACTIVITY_POSTER_UPDATE, refType: 'ACTIVITY_POSTER', refIdParam: 'id', includeBody: true, }) update(@Param('id') id: string, @Body() dto: UpsertActivityPosterDto) { return this.service.update(BigInt(id), dto); } @Put(':id/status') @HqOperation({ action: HqOperationAction.ACTIVITY_POSTER_UPDATE_STATUS, refType: 'ACTIVITY_POSTER', refIdParam: 'id', includeBody: true, }) updateStatus(@Param('id') id: string, @Body() dto: UpdateActivityPosterStatusDto) { return this.service.updateStatus(BigInt(id), dto); } @Delete(':id') @HqOperation({ action: HqOperationAction.ACTIVITY_POSTER_DELETE, refType: 'ACTIVITY_POSTER', refIdParam: 'id', }) remove(@Param('id') id: string) { return this.service.remove(BigInt(id)); } }