Files
pcpuma_unam_api/src/hora-excepcion/hora-excepcion.controller.ts
T
2022-10-24 08:45:59 -05:00

107 lines
2.9 KiB
TypeScript

import {
Body,
Controller,
Delete,
Get,
Post,
Query,
Request,
UseGuards,
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import {
ApiBearerAuth,
ApiBody,
ApiOperation,
ApiQuery,
ApiTags,
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { HoraExcepcionService } from './hora-excepcion.service';
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
import { Operador } from '../operador/entity/operador.entity';
import { CreateHoraExcepcionDto } from './dto/input/create.dto';
import { DeleteHoraExcepcionDto } from './dto/input/delete.dto';
import { GetHoraExcepcionDto } from './dto/input/get.dto';
import { MessageOutputDto } from '../dto/output/message.dto';
import { HoraExcepcionOutputDto } from './dto/output/hora-excepcion.dto';
@Controller('hora-excepcion')
@ApiTags('hora-excepcion')
export class HoraExcepcionController {
constructor(
private horaExcepcionService: HoraExcepcionService,
private validarUsuarioService: ValidarUsuarioService,
) {}
@Serealize(MessageOutputDto)
@Post()
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description: 'Endpoint que crea una hora excepción.',
})
@ApiBearerAuth('jwt')
@ApiBody({
description: 'Todas las variables son obligatorias.',
examples: {
ejemplo: {
value: {
id_institucion_dia: 217,
hora_inicio: ':',
hora_fin: ':',
},
},
},
})
create(@Request() req, @Body() body: CreateHoraExcepcionDto) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarAdmin(admin);
return this.horaExcepcionService.create(
admin,
body.id_institucion_dia,
body.hora_inicio,
body.hora_fin,
);
}
@Serealize(MessageOutputDto)
@Delete()
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description: 'Endpoint que elimina una hora excepción.',
})
@ApiBearerAuth('jwt')
@ApiBody({
description: 'Es obligatorio mandar la variable id_hora_excepcion.',
examples: { ejemplo: { value: { id_hora_excepcion: 1 } } },
})
delete(@Request() req, @Body() body: DeleteHoraExcepcionDto) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarAdmin(admin);
return this.horaExcepcionService.delete(admin, body.id_hora_excepcion);
}
@Serealize(HoraExcepcionOutputDto)
@Get()
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description:
'Endpoint que retorna las horas excepcion de un día de una institución.',
})
@ApiBearerAuth('jwt')
@ApiQuery({
description: 'Id de la institucion día',
name: 'id_institucion_dia',
})
get(@Request() req, @Query() query: GetHoraExcepcionDto) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarAdmin(admin);
return this.horaExcepcionService.findAllByIdInstitucionDia(
parseInt(query.id_institucion_dia),
);
}
}