import {
  Controller,
  Get,
  Post,
  Body,
  Put,
  Param,
  Delete,
  Query,
  UseGuards,
} from "@nestjs/common"
import { AppContentService } from "./app-content.service"
import { CreateAppContentDto } from "./dto/create-app-content.dto"
import { UpdateAppContentDto } from "./dto/update-app-content.dto"
import { AppContentFilterDto } from "./dto/app-content-filter.dto"
import { ApiTags, ApiOperation } from "@nestjs/swagger"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"

@ApiTags("App Content")
@Controller("app-content")
@UseGuards(AuthGuardMiddleware)
export class AppContentController {
  constructor(private readonly appContentService: AppContentService) {}

  @Post()
  @ApiOperation({ summary: "Create app content" })
  create(@Body() dto: CreateAppContentDto) {
    return this.appContentService.create(dto)
  }

  @Get()
  @ApiOperation({ summary: "List app content with pagination" })
  findAll(@Query() query: AppContentFilterDto) {
    return this.appContentService.findAll(query)
  }

  @Get(":id")
  @ApiOperation({ summary: "Get app content by ID" })
  findOne(@Param("id") id: string) {
    return this.appContentService.findOne(+id)
  }

  @Put(":id")
  @ApiOperation({ summary: "Update app content by ID" })
  update(@Param("id") id: string, @Body() dto: UpdateAppContentDto) {
    return this.appContentService.update(+id, dto)
  }

  @Delete(":id")
  @ApiOperation({ summary: "Soft delete app content by ID" })
  remove(@Param("id") id: string) {
    return this.appContentService.remove(+id)
  }
}
