import {
  Controller,
  Post,
  Body,
  HttpCode,
  HttpStatus,
  UseGuards,
  Logger,
} from '@nestjs/common';
import { FormApprovalIntegrationService } from '../services/form-approval-integration.service';
import { ApprovalCompletedCallbackDto } from '../dto/form-approval-callback.dto';
import { InternalServiceGuard } from '../../../../modules/organization/guards/internal-service.guard';

/**
 * 表单-审批流回调控制器
 * 供审批流引擎回调使用（内部接口）
 */
@Controller('form-instances/_callbacks')
@UseGuards(InternalServiceGuard)
export class FormApprovalCallbacksController {
  private readonly logger = new Logger(FormApprovalCallbacksController.name);

  constructor(
    private readonly approvalIntegration: FormApprovalIntegrationService,
  ) {}

  /**
   * 审批完成回调
   * 由审批流引擎调用
   */
  @Post('approval-completed')
  @HttpCode(HttpStatus.OK)
  async approvalCompleted(@Body() dto: ApprovalCompletedCallbackDto) {
    this.logger.log(`Received approval completed callback: ${dto.approvalInstanceId}`);

    const updated = await this.approvalIntegration.handleApprovalCompleted(dto);

    return {
      success: true,
      data: {
        instanceId: updated.id,
        status: updated.status,
        updatedAt: updated.updatedAt,
      },
    };
  }
}

