import { Controller, Get, Query, Post, Body, Req, UseGuards, } from '@nestjs/common'; import { WorkflowMetaService } from '../service/workflow-meta.service'; import { StageMovementData } from '../entity/stage-movement-data.entity'; import { JwtAuthGuard } from 'src/module/auth/guards/jwt.guard'; @Controller('workflow-meta') @UseGuards(JwtAuthGuard) export class WorkflowMetaController { constructor(private readonly workflowMetaService: WorkflowMetaService) {} /** * GET /meta/current-stage?entityType=...&entityId=... */ @Get('current-stage') async getCurrentStage( @Query('entityType') mapped_entity_type: string, @Query('entityId') mapped_entity_id: number, @Req() req: Request & { user: any }, ): Promise { const loggedInUser = req.user.userData; return this.workflowMetaService.getCurrentStage( mapped_entity_type, Number(mapped_entity_id), loggedInUser, ); } /** * GET /meta/next-stage?entityType=...&entityId=... */ @Get('next-stage') async getNextStage( @Query('entityType') mapped_entity_type: string, @Query('entityId') mapped_entity_id: number, @Req() req: Request & { user: any }, ): Promise { const loggedInUser = req.user.userData; const current = await this.workflowMetaService.getCurrentStage( mapped_entity_type, Number(mapped_entity_id), loggedInUser, ); return current ? this.workflowMetaService.getNextStage(current) : null; } /** * POST /meta/move-next-stage * { * "entityType": "lead", * "entityId": 101, * "currentUserId": 5 * } */ @Post('move-next-stage') async moveToNextStage( @Body('entityType') mapped_entity_type: string, @Body('entityId') mapped_entity_id: number, @Body('reason_code') reason_code: string, @Body('remark') remark: string, @Req() req: Request & { user: any }, ): Promise { const loggedInUser = req.user.userData; return this.workflowMetaService.moveToNextStage( mapped_entity_type, Number(mapped_entity_id), loggedInUser, reason_code, remark, ); } }