63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
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);
|
||
|
|
}
|
||
|
|
}
|