sinka/api/src/customers/customers.controller.ts
2026-09-16 04:57:09 +00:00

45 lines
1.5 KiB
TypeScript

import { Body, Controller, Delete, Get, Param, Patch, Post, Req, UseGuards } from '@nestjs/common';
import type { Request } from 'express';
import type { AuthUser } from '../auth/auth.types';
import { CurrentUser } from '../auth/decorators/current-user.decorator';
import { Roles } from '../auth/decorators/roles.decorator';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { RolesGuard } from '../auth/guards/roles.guard';
import { CustomersService } from './customers.service';
import { UpsertCustomerDto } from './dto/upsert-customer.dto';
@Controller('customers')
@UseGuards(JwtAuthGuard, RolesGuard)
export class CustomersController {
constructor(private readonly customers: CustomersService) {}
@Get()
@Roles('ADMIN', 'MANAGER', 'OPERATOR')
list(@CurrentUser() user: AuthUser) {
return this.customers.list(user);
}
@Post()
@Roles('ADMIN', 'MANAGER')
create(@CurrentUser() user: AuthUser, @Body() dto: UpsertCustomerDto, @Req() request: Request) {
return this.customers.create(user, dto, request.ip);
}
@Patch(':id')
@Roles('ADMIN', 'MANAGER')
update(
@CurrentUser() user: AuthUser,
@Param('id') id: string,
@Body() dto: UpsertCustomerDto,
@Req() request: Request,
) {
return this.customers.update(user, id, dto, request.ip);
}
@Delete(':id')
@Roles('ADMIN', 'MANAGER')
remove(@CurrentUser() user: AuthUser, @Param('id') id: string, @Req() request: Request) {
return this.customers.remove(user, id, request.ip);
}
}