import { Controller, Get, Param } from '@nestjs/common';
import { ApiOkResponse, ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger';
import { plainToInstance } from 'class-transformer';
import {
  GetInstitutionBlockParamDto,
  GetInstitutionBlockResponseDto,
} from './institution-block.dto';
import { InstitutionCode } from './institution-block.entity';
import { InstitutionBlockService } from './institution-block.service';

//* 기관 사용중지 안내(팝업 정보)는 정회원/B2C 비로그인 진입 화면에서 모두 조회해야 하므로 인증 가드 미적용
@ApiTags('기관 사용중지')
@Controller('institution-block')
export class InstitutionBlockController {
  constructor(private institutionBlockService: InstitutionBlockService) {}

  @ApiOperation({
    summary: '기관별 현재 사용중지 상태/팝업 조회',
    description: `심평원(HIRA) 또는 국세청(NTS) 기관의 현재 사용중지 여부와 팝업 안내정보를 반환합니다.
                  blocked=false 인 경우 popType/title/content/img/startedAt/endedAt 은 미포함입니다.`,
  })
  @ApiParam({
    name: 'institution',
    enum: InstitutionCode,
    description: '기관코드(HIRA: 심평원 | NTS: 국세청)',
  })
  @Get(':institution')
  @ApiOkResponse({ type: GetInstitutionBlockResponseDto })
  async getStatus(@Param() param: GetInstitutionBlockParamDto) {
    const data = await this.institutionBlockService.getStatusForUser(
      param.institution,
    );
    return plainToInstance(GetInstitutionBlockResponseDto, data, {
      excludeExtraneousValues: true,
    });
  }
}
