import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards, Query } from '@nestjs/common'; import { BusinessService } from './business.service'; import { SetupBusinessDto } from './dto/setup-business.dto'; import { SuperAdminAuthGuard } from '../auth/guards/superAdminAuth.guard'; import { FindBusinessesDto } from './dto/find-businesses.dto'; import { UpdateBusinessDto } from './dto/update-business.dto'; import { AdminAuthGuard } from '../auth/guards/adminAuth.guard'; import { BusinessId } from 'src/common/decorators'; import { ApiBearerAuth } from '@nestjs/swagger'; @Controller() @ApiBearerAuth() export class BusinessController { constructor(private readonly businessService: BusinessService) { } @Get('public/business/:slug') getBusinessBySlug(@Param('slug') slug: string) { return this.businessService.findBySlugOrFail(slug) } @Get('super-admin/business/list') @UseGuards(SuperAdminAuthGuard) findAll(@Query() dto: FindBusinessesDto) { return this.businessService.findAll(dto); } @Get('super-admin/business/:id') @UseGuards(SuperAdminAuthGuard) findOne(@Param('id') id: string) { return this.businessService.findByIdOrFail(id); } @Patch('super-admin/business/:id') @UseGuards(SuperAdminAuthGuard) update(@Param('id') id: string, @Body() updateBusinessDto: UpdateBusinessDto) { return this.businessService.update(id, updateBusinessDto); } @Post('super-admin/business/setup') @UseGuards(SuperAdminAuthGuard) create(@Body() dto: SetupBusinessDto) { return this.businessService.setupAccount(dto); } @Delete('super-admin/business/:id') @UseGuards(SuperAdminAuthGuard) remove(@Param('id') id: string) { return this.businessService.hardDelete(id); } // Admin Routes @Get('admin/business/me') @UseGuards(AdminAuthGuard) me(@BusinessId() businessId: string) { return this.businessService.findByIdOrFail(businessId) } }