Files
api_directorio/src/Profesor/profesor.controller.ts
T
2024-08-18 22:09:32 -06:00

97 lines
2.5 KiB
TypeScript

import {
Body,
Controller,
Delete,
Get,
HttpException,
Logger,
Param,
ParseIntPipe,
Post,
Put,
Query,
UseGuards
} from "@nestjs/common";
import { ProfesorService } from "./profesor.service";
import { profesorDto, UpdateProfesorImageDto } from "./dto/profesorDto.dto";
import { Roles } from "../permissions/roles.decorator";
import { RolesGuard } from "../permissions/roles.guard";
import { Role } from "../permissions/role.enum";
import { Profesor } from "./entities/profesor.entity";
@Controller("profesor")
@UseGuards(RolesGuard)
export class ProfesorController {
constructor(private profesorService: ProfesorService) {
}
@Post()
@Roles(Role.Responsable, Role.Admin)
async register(@Body() data: profesorDto) {
Logger.debug("register profesor");
return this.profesorService.register(data);
}
@Put(':id_profesor/image')
async updateImage(
@Param('id_profesor') id_profesor: number,
@Body() updateProfesorImageDto: UpdateProfesorImageDto,
): Promise<Profesor> {
const { fotografia } = updateProfesorImageDto;
const profesor = await this.profesorService.findOne(id_profesor);
if (!profesor) {
throw new HttpException('Profesor not found', 404);
}
profesor.fotografia = fotografia;
return this.profesorService.update(profesor);
}
@Get()
findAll() {
Logger.debug("findAllProfesors");
return this.profesorService.findAll();
}
@Get("page")
findAllPaginated(@Query("page") page: number = 1, @Query("limit") limit: number = 10, @Query() filters: any) {
try {
Logger.debug("Page Profesors");
page = page < 1 ? 1 : page;
limit = limit > 10 || limit < 1 ? 10 : limit;
return this.profesorService.findAllPaginated(page, limit, filters);
} catch (err) {
Logger.error("profesor controller ", err.error);
return [];
}
}
@Put(":id_profesor")
@Roles(Role.Responsable, Role.Admin)
async modify(@Param("id_profesor", ParseIntPipe) id_profesor: number, @Body() data: profesorDto) {
Logger.debug("put Profesors by id");
return this.profesorService.modify(id_profesor, data);
}
@Delete(":id_profesor")
@Roles(Role.Responsable, Role.Admin)
async remove(@Param("id_profesor", ParseIntPipe) id_profesor: number) {
Logger.debug("delete Profesors by id");
return this.profesorService.remove(id_profesor);
}
@Get(":id_profesor")
async profile(@Param("id_profesor", ParseIntPipe) id_profesor: number) {
Logger.debug("get Profesors by id");
return this.profesorService.profile(id_profesor);
}
}