97 lines
2.5 KiB
TypeScript
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);
|
|
}
|
|
|
|
}
|