import { Body, Controller, Post } from '@nestjs/common';
import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { CoreGrpcService } from '../core-grpc.service';
import { SendOtpDto, VerifyOtpDto } from '../dto/identity.dto';

@ApiTags('OTP и 2FA')
@Controller('auth/otp')
export class OtpController {
  constructor(private readonly core: CoreGrpcService) {}

  @Post('send')
  @ApiOperation({ summary: 'Отправить OTP код', description: 'Создает одноразовый код в AuthCode. Fallback-доставка пишет код в console.log.' })
  @ApiBody({ type: SendOtpDto })
  @ApiResponse({ status: 201, description: 'Код создан и отправлен' })
  send(@Body() dto: SendOtpDto) {
    return this.core.otp.SendOtp(dto);
  }

  @Post('verify')
  @ApiOperation({ summary: 'Проверить OTP код', description: 'Проверяет одноразовый код, срок жизни и помечает его использованным.' })
  @ApiBody({ type: VerifyOtpDto })
  @ApiResponse({ status: 201, description: 'Код подтвержден' })
  verify(@Body() dto: VerifyOtpDto) {
    return this.core.otp.VerifyOtp(dto);
  }
}
