import { Body, Controller, Get, Param, Post, UseGuards, UsePipes, ValidationPipe } from "@nestjs/common"; import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"; import { AfdImportsService } from "./afd-imports.service.js"; import { CreateAfdImportDto } from "./dto/create-afd-import.dto.js"; import { JwtAuthGuard } from "../auth/jwt-auth.guard.js"; import { PermissionGuard } from "../auth/permission.guard.js"; import { RequirePermission } from "../auth/decorators/require-permission.decorator.js"; import { CurrentUser } from "../auth/decorators/current-user.decorator.js"; import type { EdenAuthenticatedUser } from "../auth/jwt-auth.guard.js"; /** * eden.md módulo 6 §4.4/§4.5 — AFD import. See afd-imports.service.ts and * CreateAfdImportDto for this leva's transport simplification (JSON * string body, not multipart) and its documented encoding caveat. */ @ApiTags("hr-timeclock-afd-imports") @ApiBearerAuth() @UseGuards(JwtAuthGuard, PermissionGuard) @UsePipes(new ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true })) @Controller("v1/hr-timeclock/afd-imports") export class AfdImportsController { constructor(private readonly afdImports: AfdImportsService) {} @Post() @RequirePermission("afd-import", "edit") import(@Body() dto: CreateAfdImportDto, @CurrentUser() user: EdenAuthenticatedUser) { return this.afdImports.import(dto, user); } @Get(":id") @RequirePermission("afd-import", "view") get(@Param("id") id: string) { return this.afdImports.getById(id); } }