import {
  Controller,
  Get,
  Post,
  Put,
  Delete,
  Param,
  Body,
  Query,
} from '@nestjs/common';
import { TemplateService } from './template.service';
import { CreateTemplateDto } from './dto/create-template.dto';
import { UpdateTemplateDto } from './dto/update-template.dto';
import { AuditStageName } from './entities/template.entity';

@Controller('templates')
export class TemplateController {
  constructor(private readonly templateService: TemplateService) {}

  @Post()
  create(@Body() dto: CreateTemplateDto) {
    return this.templateService.create(dto);
  }

  @Get()
  findAll(@Query('stage') stage?: AuditStageName) {
    return this.templateService.findAll(stage);
  }

  @Get(':id')
  findOne(@Param('id') id: number) {
    return this.templateService.findOne(id);
  }

  @Put(':id')
  update(@Param('id') id: number, @Body() dto: UpdateTemplateDto) {
    return this.templateService.update(id, dto);
  }

  @Delete(':id')
  remove(@Param('id') id: number) {
    return this.templateService.remove(id);
  }

  @Get('search/by-name')
  findByNameAndStage(
    @Query('name') name: string,
    @Query('stage') stageName: AuditStageName,
    @Query('version') version?: string,
  ) {
    return this.templateService.findByNameAndStage(name, stageName, version);
  }
}
