import { Body, Controller, Delete, Get, Param, Patch, Post, Query, UseGuards, } from '@nestjs/common'; import { JwtAuthGuard } from '../auth/jwt-auth.guard'; import { CurrentUser } from '../auth/current-user.decorator'; import { CreateQuoteDto, ListQuotesQueryDto, UpdateQuoteDto, } from './dto'; import { QuotesService } from './quotes.service'; type AuthUser = { organizationId: string; userId: string; role: string }; @Controller('quotes') @UseGuards(JwtAuthGuard) export class QuotesController { constructor(private readonly quotesService: QuotesService) {} @Get() list( @CurrentUser() user: AuthUser, @Query() query: ListQuotesQueryDto, ) { return this.quotesService.list(user.organizationId, user, { q: query.q, status: query.status, dealId: query.dealId, personId: query.personId, page: query.page ?? 1, limit: query.limit ?? 50, }); } @Get(':id') get(@CurrentUser() user: AuthUser, @Param('id') id: string) { return this.quotesService.get(user.organizationId, id, user); } @Post() create(@CurrentUser() user: AuthUser, @Body() dto: CreateQuoteDto) { return this.quotesService.create(user.organizationId, user.userId, dto); } @Patch(':id') update( @CurrentUser() user: AuthUser, @Param('id') id: string, @Body() dto: UpdateQuoteDto, ) { return this.quotesService.update(user.organizationId, id, user, dto); } @Delete(':id') async remove(@CurrentUser() user: AuthUser, @Param('id') id: string) { await this.quotesService.remove(user.organizationId, id, user); return { ok: true }; } }