import { Body, Controller, Delete, Get, HttpCode, Param, Post, Put } from '@nestjs/common'; import { AdminInvoicesService } from './admin-invoices.service'; import { TableQueryDto } from '../admin-table/table-query.dto'; import { CurrentAdmin, RequirePermission } from '../auth/guards'; import type { AuthenticatedAdmin } from '../auth/jwt.strategy'; /** * Legacy endpoints (BranchController's `branch/product` family): * POST branch/product/table * POST branch/product * GET branch/product/{id} * DELETE branch/product/{id} * GET branch/list -> the branch picker */ @Controller('admin/invoices') export class AdminInvoicesController { constructor(private readonly invoices: AdminInvoicesService) {} @Post('list') @HttpCode(200) @RequirePermission('invoice.list') list(@Body() query: TableQueryDto) { return this.invoices.list(query); } @Get('branch-list') @RequirePermission('invoice.create') branchList() { return this.invoices.branchList(); } @Post() @HttpCode(200) @RequirePermission('invoice.create') create( @Body() data: { branch_id?: string; products?: string[]; note?: string }, @CurrentAdmin() admin: AuthenticatedAdmin, ) { return this.invoices.create(data, admin.id); } @Get(':id') @RequirePermission('invoice.list') findOne(@Param('id') id: string) { return this.invoices.findOne(id); } @Put(':id') @RequirePermission('invoice.list') update( @Param('id') id: string, @Body() data: { branch_id?: string; products?: string[]; note?: string }, ) { return this.invoices.update(id, data); } @Delete(':id') @RequirePermission('invoice.list') remove(@Param('id') id: string) { return this.invoices.remove(id); } }