Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import { Controller, Post, Body, Param, UseGuards, Request, } from '@nestjs/common'; import { DeviceIntegrationService } from './device.service'; import { RegisterDeviceDto, DeviceWebhookPayloadDto, MapDeviceEmployeeDto, } from './dto/device.dto'; import { PermissionGuard } from '../../../../platform/permissions/permission.guard'; import { RequirePermission } from '../../../../platform/permissions/permission.decorator'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; @Controller('attendance-devices') @ApiTags('DeviceIntegration') export class DeviceIntegrationController { constructor(private readonly deviceService: DeviceIntegrationService) {} @Post() @UseGuards(PermissionGuard) @RequirePermission('attendance_device', 'create') @ApiOperation({ summary: 'Register device operation' }) @ApiResponse({ status: 201, description: 'Operation successful' }) registerDevice(@Request() req: any, @Body() registerDto: RegisterDeviceDto) { return this.deviceService.registerDevice(req.user.tenantId, registerDto); } @Post(':id/map-employee') @UseGuards(PermissionGuard) @RequirePermission('attendance_device', 'update') @ApiOperation({ summary: 'Map employee operation' }) @ApiResponse({ status: 201, description: 'Operation successful' }) mapEmployee( @Request() req: any, @Param('id') id: string, @Body() mapDto: MapDeviceEmployeeDto, ) { return this.deviceService.mapEmployee(req.user.tenantId, id, mapDto); } // Webhook endpoint (might not use standard JwtAuthGuard in real life, but API key) @Post('webhook/:tenantId') @ApiOperation({ summary: 'Process webhook operation' }) @ApiResponse({ status: 201, description: 'Operation successful' }) processWebhook( @Param('tenantId') tenantId: string, @Body() payload: DeviceWebhookPayloadDto, ) { return this.deviceService.processWebhook(tenantId, payload); } } |