66 lines
2.9 KiB
TypeScript
66 lines
2.9 KiB
TypeScript
import { Body,Controller,Delete,Get,Param,ParseIntPipe,Patch,Post,UseGuards } from '@nestjs/common';
|
|
import { Employees, Roles as RoleEnum } from '@prisma/client';
|
|
import { EmployeesService } from '../services/employees.service';
|
|
import { CreateEmployeeDto } from '../dtos/create-employee.dto';
|
|
import { UpdateEmployeeDto } from '../dtos/update-employee.dto';
|
|
import { RolesAllowed } from '../../../common/decorators/roles.decorators';
|
|
import { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
|
|
import { JwtAuthGuard } from 'src/modules/authentication/guards/jwt-auth.guard';
|
|
import { EmployeeEntity } from '../dtos/swagger-entities/employees.entity';
|
|
|
|
@ApiTags('Employees')
|
|
@ApiBearerAuth('access-token')
|
|
@UseGuards(JwtAuthGuard)
|
|
@Controller('employees')
|
|
export class EmployeesController {
|
|
constructor(private readonly employeesService: EmployeesService) {}
|
|
|
|
@Post()
|
|
@RolesAllowed(RoleEnum.ADMIN, RoleEnum.HR, RoleEnum.SUPERVISOR)
|
|
@ApiOperation({summary: 'Create employee' })
|
|
@ApiResponse({ status: 201, description: 'Employee created', type: EmployeeEntity })
|
|
@ApiResponse({ status: 400, description: 'Incomplete task or invalid data' })
|
|
create(@Body() dto: CreateEmployeeDto): Promise<Employees> {
|
|
return this.employeesService.create(dto);
|
|
}
|
|
|
|
@Get()
|
|
@RolesAllowed(RoleEnum.ADMIN, RoleEnum.HR, RoleEnum.SUPERVISOR, RoleEnum.ACCOUNTING)
|
|
@ApiOperation({summary: 'Find all employees' })
|
|
@ApiResponse({ status: 201, description: 'List of employees found', type: EmployeeEntity, isArray: true })
|
|
@ApiResponse({ status: 400, description: 'List of employees not found' })
|
|
findAll(): Promise<Employees[]> {
|
|
return this.employeesService.findAll();
|
|
}
|
|
|
|
@Get(':id')
|
|
@RolesAllowed(RoleEnum.ADMIN, RoleEnum.HR, RoleEnum.SUPERVISOR,RoleEnum.ACCOUNTING )
|
|
@ApiOperation({summary: 'Find employee' })
|
|
@ApiResponse({ status: 201, description: 'Employee found', type: EmployeeEntity })
|
|
@ApiResponse({ status: 400, description: 'Employee not found' })
|
|
findOne(@Param('id', ParseIntPipe) id: number): Promise<Employees> {
|
|
return this.employeesService.findOne(id);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@RolesAllowed(RoleEnum.ADMIN, RoleEnum.HR, RoleEnum.SUPERVISOR,RoleEnum.ACCOUNTING )
|
|
@ApiOperation({summary: 'Update employee' })
|
|
@ApiResponse({ status: 201, description: 'Employee updated', type: EmployeeEntity })
|
|
@ApiResponse({ status: 400, description: 'Employee not found' })
|
|
update(
|
|
@Param('id', ParseIntPipe) id: number,
|
|
@Body() dto: UpdateEmployeeDto,
|
|
): Promise<Employees> {
|
|
return this.employeesService.update(id, dto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@RolesAllowed(RoleEnum.ADMIN, RoleEnum.HR, RoleEnum.SUPERVISOR )
|
|
@ApiOperation({summary: 'Delete employee' })
|
|
@ApiResponse({ status: 201, description: 'Employee deleted', type: EmployeeEntity })
|
|
@ApiResponse({ status: 400, description: 'Employee not found' })
|
|
remove(@Param('id', ParseIntPipe) id: number): Promise<Employees> {
|
|
return this.employeesService.remove(id);
|
|
}
|
|
}
|