import { Body, Controller, Get, HttpCode, Post, Put } from '@nestjs/common'; import { AgrarmonitorService } from './agrarmonitor.service'; import { AgrarmonitorPollingService } from './agrarmonitor-polling.service'; import { RequirePermissions } from '../auth/permissions.decorator'; import { Permission } from '../auth/permissions.enum'; @Controller('api/agrarmonitor') export class AgrarmonitorController { constructor( private readonly service: AgrarmonitorService, private readonly pollingService: AgrarmonitorPollingService, ) {} @Get('status') @RequirePermissions(Permission.MANAGE_SETTINGS) async getStatus() { return this.service.getStatus(); } @Post('register') @HttpCode(200) @RequirePermissions(Permission.MANAGE_SETTINGS) async registerDevice( @Body() body: { pcName: string; agrarmonitorId: string }, ) { return this.service.registerDevice(body.pcName, body.agrarmonitorId); } @Get('polling-config') @RequirePermissions(Permission.MANAGE_SETTINGS) async getPollingConfig() { return this.pollingService.getPollingConfig(); } @Put('polling-config') @RequirePermissions(Permission.MANAGE_SETTINGS) async updatePollingConfig( @Body() body: { tagFertig: string; tagVerbucht: string; tagHochgeladen: string; linkField: string; tagManuell: string; importWartezeitMinuten: string; notizMarker: string; }, ) { return this.pollingService.updatePollingConfig( body.tagFertig, body.tagVerbucht, body.tagHochgeladen, body.linkField, body.tagManuell ?? '', body.importWartezeitMinuten ?? '10', body.notizMarker ?? 'Agrarmonitor', ); } @Post('run-polling') @HttpCode(200) @RequirePermissions(Permission.MANAGE_SETTINGS) async runPolling() { return this.pollingService.runPolling(); } @Post('process-uploads') @HttpCode(200) @RequirePermissions(Permission.MANAGE_SETTINGS) async processUploads() { return this.pollingService.processVerarbeiteteDocuments(); } @Post('sync-correspondents') @HttpCode(200) @RequirePermissions(Permission.MANAGE_SETTINGS) async syncCorrespondents() { return this.pollingService.syncCorrespondentIds(); } @Post('merge-correspondents') @HttpCode(200) @RequirePermissions(Permission.MANAGE_SETTINGS) async mergeCorrespondents( @Body() body: { keepId: number; deleteId: number }, ) { return this.pollingService.mergeCorrespondents(body.keepId, body.deleteId); } }