import { BadRequestException, Body, Controller, Get, Param, Post, Query } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { TenantId } from '../common/tenant-id.decorator'; import { ConfirmImportDto, CreateBatchTaskDto, ImportPreviewDto, SendChainService } from './send-chain.service'; @ApiTags('client-send-chain') @Controller('client/send') export class ClientSendChainController { constructor(private readonly sendChain: SendChainService) {} @Post('batch-tasks') createBatchTask(@Body() body: CreateBatchTaskDto) { return this.sendChain.createBatchTask(body); } @Post('imports/preview') previewImport(@Body() body: ImportPreviewDto) { return this.sendChain.previewImport(body); } @Post('imports/confirm') confirmImport(@Body() body: ConfirmImportDto) { return this.sendChain.confirmImport(body); } @Get('batch-tasks') listBatchTasks(@TenantId() tenantId?: string, @Query('status') status?: string) { return this.sendChain.listBatchTasks(requireTenantId(tenantId), status, 'client'); } @Get('batch-tasks/:id') getBatchTask(@TenantId() tenantId: string | undefined, @Param('id') taskId: string) { return this.sendChain.getBatchTask(taskId, requireTenantId(tenantId), 'client'); } @Get('batch-tasks/:id/messages') listTaskMessages(@TenantId() tenantId: string | undefined, @Param('id') taskId: string) { return this.sendChain.listClientTaskMessages(taskId, requireTenantId(tenantId)); } @Post('batch-tasks/:id/cancel') cancelBatchTask(@TenantId() tenantId: string | undefined, @Param('id') taskId: string) { return this.sendChain.cancelBatchTask(taskId, requireTenantId(tenantId), 'client'); } } function requireTenantId(tenantId?: string) { if (!tenantId) { throw new BadRequestException('Tenant context is required'); } return tenantId; }