import {
  Controller,
  Get,
  Post,
  Body,
  Put,
  Param,
  Delete,
  Query,
} from '@nestjs/common';
import { TemplateContentService } from './template_contents.service';
import { CreateTemplateContentDto } from './dto/create-template_content.dto';
import { UpdateTemplateContentDto } from './dto/update-template_content.dto';
import { CreateTemplateContentBulkDto } from './dto/create-template_content-bulk.dto';

@Controller('template-contents')
export class TemplateContentController {
  constructor(
    private readonly templateContentService: TemplateContentService,
  ) {}

  @Post()
  create(
    @Body() createDto: CreateTemplateContentDto | CreateTemplateContentDto[],
  ) {
    if (Array.isArray(createDto)) {
      return this.templateContentService.createMany(createDto);
    }
    return this.templateContentService.create(createDto);
  }

  @Get()
  findAll(@Query('templateId') templateId?: number) {
    return this.templateContentService.findAll(
      templateId ? +templateId : undefined,
    );
  }

  // ✅ MUST COME BEFORE :id
  @Get('schedule/:templateId/by-time')
  getTemplateScheduleByTime(
    @Param('templateId') templateId: number,
    @Query('startTime') startTime: string,
    @Query('endTime') endTime: string,
  ) {
    return this.templateContentService.getTemplateScheduleByTime(
      +templateId,
      startTime,
      endTime,
    );
  }

  // Existing schedule (UI / preview)
  @Get('schedule/:templateId')
  getTemplateSchedule(@Param('templateId') templateId: number) {
    return this.templateContentService.getTemplateSchedule(+templateId);
  }

  // ❗ KEEP THIS LAST
  @Get(':id')
  findOne(@Param('id') id: number) {
    return this.templateContentService.findOne(+id);
  }

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

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

