import { Controller, Get, Post, Patch, Delete, Param, Body, ParseIntPipe } from '@nestjs/common';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';
import { ClientPricingService } from './client-pricing.service';
import { CreateClientPricingDto } from './dto/create-client-pricing.dto';
import { UpdateClientPricingDto } from './dto/update-client-pricing.dto';

@ApiTags('Client Pricing')
@Controller({ path: 'client-pricing', version: '1' })
export class ClientPricingController {
  constructor(private readonly pricingService: ClientPricingService) { }

  @Post()
  @ApiOperation({ summary: 'Create a new pricing plan' })
  @ApiResponse({ status: 201, description: 'Pricing plan created' })
  create(@Body() createDto: CreateClientPricingDto) {
    return this.pricingService.create(createDto);
  }

  @Get()
  @ApiOperation({ summary: 'Get all pricing plans' })
  findAll() {
    return this.pricingService.findAll();
  }

  @Get(':id')
  @ApiOperation({ summary: 'Get a pricing plan by ID' })
  findOne(@Param('id', ParseIntPipe) id: number) {
    return this.pricingService.findOne(id);
  }

  @Patch(':id')
  @ApiOperation({ summary: 'Update a pricing plan by ID' })
  update(@Param('id', ParseIntPipe) id: number, @Body() updateDto: UpdateClientPricingDto) {
    return this.pricingService.update(id, updateDto);
  }

  @Delete(':id')
  @ApiOperation({ summary: 'Delete a pricing plan by ID' })
  remove(@Param('id', ParseIntPipe) id: number) {
    return this.pricingService.remove(id);
  }
}
