import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common'; import { CatalogueService } from './catalogue.service'; import { CreateCatalogueDto } from './dto/create-catalogue.dto'; import { UpdateCatalogueDto } from './dto/update-catalogue.dto'; import { FindCataloguesDto } from './dto/find-catalogues.dto'; import { AdminAuthGuard } from '../auth/guards/adminAuth.guard'; import { BusinessId } from 'src/common/decorators'; @Controller() export class CatalogueController { constructor(private readonly catalogueService: CatalogueService) { } // ============= Public Routes ============== @Get('public/catalogue') findAllAsPublic(@Query() queryDto: FindCataloguesDto) { return this.catalogueService.findAll(queryDto); } @Get('admin/catalogue/:id') findOneAsPublic(@Param('id') id: string) { return this.catalogueService.findOne(id); } // ============= Admin Routes ============== @Post('admin/catalogue') @UseGuards(AdminAuthGuard) create(@Body() dto: CreateCatalogueDto, @BusinessId() busId: string) { return this.catalogueService.create(dto, busId); } @Get('admin/catalogue') @UseGuards(AdminAuthGuard) findAll(@Query() queryDto: FindCataloguesDto) { return this.catalogueService.findAll(queryDto); } @Get('admin/catalogue/:id') @UseGuards(AdminAuthGuard) findOne(@Param('id') id: string) { return this.catalogueService.findOne(id); } @Patch('admin/catalogue/:id') @UseGuards(AdminAuthGuard) update(@Param('id') id: string, @Body() dto: UpdateCatalogueDto) { return this.catalogueService.update(id, dto); } @Delete('admin/catalogue/:id') @UseGuards(AdminAuthGuard) remove(@Param('id') id: string) { return this.catalogueService.remove(id); } }