64 lines
3.1 KiB
TypeScript
64 lines
3.1 KiB
TypeScript
import { Body, Controller, Delete, Get, Param, ParseIntPipe, Patch, Post, UseGuards } from "@nestjs/common";
|
|
import { ExpenseCodesService } from "../services/expense-codes.service";
|
|
import { ApiTags, ApiBearerAuth, ApiOperation, ApiResponse } from "@nestjs/swagger";
|
|
import { JwtAuthGuard } from "src/modules/authentication/guards/jwt-auth.guard";
|
|
import { ExpenseCodes } from "@prisma/client";
|
|
import { Roles as RoleEnum } from '.prisma/client';
|
|
import { RolesAllowed } from "src/common/decorators/roles.decorators";
|
|
import { CreateExpenseCodeDto } from "../dtos/create-expense-code";
|
|
import { ExpenseCodesEntity } from "../dtos/swagger-entities/expense-codes.entity";
|
|
import { UpdateExpenseCodeDto } from "../dtos/update-expense-code";
|
|
|
|
@ApiTags('Expense Codes')
|
|
@ApiBearerAuth('access-token')
|
|
@UseGuards(JwtAuthGuard)
|
|
@Controller('expense-codes')
|
|
export class ExpenseCodesController {
|
|
constructor(private readonly expenseCodesService: ExpenseCodesService) {}
|
|
|
|
@Post()
|
|
@RolesAllowed(RoleEnum.ACCOUNTING, RoleEnum.ADMIN, RoleEnum.HR)
|
|
@ApiOperation({ summary: 'Create expense code' })
|
|
@ApiResponse({ status: 201, description: 'Expense code created',type: ExpenseCodesEntity })
|
|
@ApiResponse({ status: 400, description: 'Incomplete task or invalid data' })
|
|
create(@Body()dto: CreateExpenseCodeDto): Promise<ExpenseCodes> {
|
|
return this.expenseCodesService.create(dto);
|
|
}
|
|
|
|
@Get()
|
|
@RolesAllowed(RoleEnum.ACCOUNTING, RoleEnum.ADMIN, RoleEnum.HR)
|
|
@ApiOperation({ summary: 'Find all expense codes' })
|
|
@ApiResponse({ status: 201, description: 'List of expense codes found',type: ExpenseCodesEntity, isArray: true })
|
|
@ApiResponse({ status: 400, description: 'List of expense codes not found' })
|
|
findAll(): Promise<ExpenseCodes[]> {
|
|
return this.expenseCodesService.findAll();
|
|
}
|
|
|
|
@Get(':id')
|
|
@RolesAllowed(RoleEnum.ACCOUNTING, RoleEnum.ADMIN, RoleEnum.HR)
|
|
@ApiOperation({ summary: 'Find expense code' })
|
|
@ApiResponse({ status: 201, description: 'Expense code found',type: ExpenseCodesEntity })
|
|
@ApiResponse({ status: 400, description: 'Expense code not found' })
|
|
findOne(@Param('id', ParseIntPipe) id: number): Promise<ExpenseCodes> {
|
|
return this.expenseCodesService.findOne(id);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@RolesAllowed(RoleEnum.ACCOUNTING, RoleEnum.ADMIN, RoleEnum.HR)
|
|
@ApiOperation({ summary: 'Update expense code' })
|
|
@ApiResponse({ status: 201, description: 'Expense code updated',type: ExpenseCodesEntity })
|
|
@ApiResponse({ status: 400, description: 'Expense code not found' })
|
|
update(@Param('id', ParseIntPipe) id: number,
|
|
@Body() dto: UpdateExpenseCodeDto): Promise<ExpenseCodes> {
|
|
return this.expenseCodesService.update(id,dto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@RolesAllowed(RoleEnum.ACCOUNTING, RoleEnum.ADMIN, RoleEnum.HR)
|
|
@ApiOperation({ summary: 'Delete expense code' })
|
|
@ApiResponse({ status: 201, description: 'Expense code deleted',type: ExpenseCodesEntity })
|
|
@ApiResponse({ status: 400, description: 'Expense code not found' })
|
|
remove(@Param('id', ParseIntPipe)id: number): Promise<ExpenseCodes> {
|
|
return this.expenseCodesService.remove(id);
|
|
}
|
|
} |