import { Controller, Get, Put, Body, UseGuards } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation, ApiResponse, } from '@nestjs/swagger'; import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard'; import { CurrentTenant } from '../../common/decorators/current-tenant.decorator'; import { RequirePermission } from '../../common/decorators/require-permission.decorator'; import { NotificationsService } from './notifications.service'; import { UpdateConfigDto } from './dto/update-config.dto'; @ApiTags('notifications') @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Controller('notifications') export class NotificationsController { constructor(private readonly notificationsService: NotificationsService) {} @Get('config') @RequirePermission('notifications.view') @ApiOperation({ summary: 'Get notification configuration', description: 'Returns notification settings for this license', }) @ApiResponse({ status: 200, description: 'Notification config retrieved successfully', }) async getConfig(@CurrentTenant() licenseId: string) { const config = await this.notificationsService.getConfig(licenseId); return { config }; } @Put('config') @RequirePermission('notifications.manage') @ApiOperation({ summary: 'Update notification configuration', description: 'Update notification settings for this license', }) @ApiResponse({ status: 200, description: 'Notification config updated successfully', }) async updateConfig( @CurrentTenant() licenseId: string, @Body() dto: UpdateConfigDto, ) { const config = await this.notificationsService.updateConfig(licenseId, dto); return { config }; } }