Files
dsc-api/src/modules/task-manager/controllers/task-phase.controller.ts
T
2026-07-20 10:16:45 +03:30

48 lines
2.2 KiB
TypeScript

import { Controller, Post, Patch, Delete, Param, Body } from "@nestjs/common";
import { ApiTags, ApiOperation, ApiResponse, ApiParam } from "@nestjs/swagger";
import { TaskPhaseService } from "../providers/task-phase.service";
import { CreateTaskPhaseDto } from "../dto/task-phase/create-task-phase.dto";
import { UpdateTaskPhaseDto } from "../dto/task-phase/update-task-phase.dto";
import { TMTaskPhase } from "../entities/task-phase.entity";
import { AuthGuards } from "../../../common/decorators/auth-guard.decorator";
import { AdminRoute } from "../../../common/decorators/admin.decorator";
import { PermissionsDec } from "../../../common/decorators/permission.decorator";
import { PermissionEnum } from "../../users/enums/permission.enum";
@AuthGuards()
@AdminRoute()
@ApiTags("Task Manager - Task Phases")
@Controller("task-manager/task-phases")
export class TaskPhaseController {
constructor(private readonly taskPhaseService: TaskPhaseService) {}
@Post()
@PermissionsDec(PermissionEnum.TASK_PHASE_CREATE)
@ApiOperation({ summary: "Create a new task phase" })
@ApiResponse({ status: 201, description: "TaskPhase created", type: TMTaskPhase })
@ApiResponse({ status: 404, description: "Project not found" })
create(@Body() body: CreateTaskPhaseDto): Promise<TMTaskPhase> {
return this.taskPhaseService.create(body);
}
@Patch(":id")
@PermissionsDec(PermissionEnum.TASK_PHASE_UPDATE)
@ApiOperation({ summary: "Update a task phase" })
@ApiParam({ name: "id", description: "TaskPhase ID" })
@ApiResponse({ status: 200, description: "TaskPhase updated", type: TMTaskPhase })
@ApiResponse({ status: 404, description: "TaskPhase or Project not found" })
update(@Param("id") id: string, @Body() body: UpdateTaskPhaseDto): Promise<TMTaskPhase> {
return this.taskPhaseService.update(id, body);
}
@Delete(":id")
@PermissionsDec(PermissionEnum.TASK_PHASE_DELETE)
@ApiOperation({ summary: "Delete a task phase" })
@ApiParam({ name: "id", description: "TaskPhase ID" })
@ApiResponse({ status: 200, description: "TaskPhase deleted" })
@ApiResponse({ status: 404, description: "TaskPhase not found" })
remove(@Param("id") id: string): Promise<void> {
return this.taskPhaseService.remove(id);
}
}