All files / modules/onboarding onboarding.controller.ts

0% Statements 0/14
100% Branches 0/0
0% Functions 0/3
0% Lines 0/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                                                                                               
import {
  Controller,
  Get,
  Post,
  UseGuards,
  HttpCode,
  HttpStatus,
} from '@nestjs/common';
import {
  ApiTags,
  ApiOperation,
  ApiResponse,
  ApiBearerAuth,
} from '@nestjs/swagger';
import { OnboardingService } from './onboarding.service';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { CurrentUser } from '../auth/decorators/current-user.decorator';
import { RequestUser } from '../auth/strategies/jwt.strategy';
import { OnboardingStatusDto, CompleteOnboardingResponseDto } from './dto';
 
@ApiTags('onboarding')
@Controller('onboarding')
@UseGuards(JwtAuthGuard)
@ApiBearerAuth()
export class OnboardingController {
  constructor(private readonly onboardingService: OnboardingService) {}
 
  @Get('status')
  @ApiOperation({ summary: 'Get onboarding status for current tenant' })
  @ApiResponse({
    status: 200,
    description: 'Current onboarding status',
    type: OnboardingStatusDto,
  })
  @ApiResponse({ status: 401, description: 'Unauthorized' })
  async getStatus(@CurrentUser() user: RequestUser): Promise<OnboardingStatusDto> {
    return this.onboardingService.getStatus(user.tenant_id);
  }
 
  @Post('complete')
  @HttpCode(HttpStatus.OK)
  @ApiOperation({ summary: 'Complete the onboarding process' })
  @ApiResponse({
    status: 200,
    description: 'Onboarding completed successfully',
    type: CompleteOnboardingResponseDto,
  })
  @ApiResponse({ status: 400, description: 'Bad request - Invalid tenant state' })
  @ApiResponse({ status: 401, description: 'Unauthorized' })
  async completeOnboarding(
    @CurrentUser() user: RequestUser,
  ): Promise<CompleteOnboardingResponseDto> {
    return this.onboardingService.completeOnboarding(user.tenant_id, user.id);
  }
}