pcpuma_unam_api/src/modulo-motivo/modulo-motivo.controller.ts
2023-02-27 15:02:17 -06:00

101 lines
3.0 KiB
TypeScript

import { Controller, Get, Query, Request, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import {
ApiBearerAuth,
ApiOperation,
ApiQuery,
ApiTags,
} from '@nestjs/swagger';
import { Serealize } from '../interceptors/serialize.interceptor';
import { ModuloMotivoService } from './modulo-motivo.service';
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
import { Operador } from '../operador/entity/operador.entity';
import { IdInstitucionOptionalDto } from '../dto/input/id-institucion-optional.dto';
import { GetDto } from './dto/input/get.dto';
import { ModuloDto } from '../modulo/dto/input/modulo.dto';
import { ActividadEspecialOutputDto } from './dto/output/actividad-especial';
import { ModuloMotivoOutputDto } from './dto/output/modulo-motivo.dto';
@Controller('modulo-motivo')
@ApiTags('modulo-motivo')
export class ModuloMotivoController {
constructor(
private moduloMotivoService: ModuloMotivoService,
private validarUsuarioService: ValidarUsuarioService,
) {}
@Serealize(ModuloMotivoOutputDto)
@Get()
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description:
'Información de 25 cambios de status de un módulo dependiendo de los filtros enviados.',
})
@ApiBearerAuth('jwt')
@ApiQuery({
description: 'Id del módulo.',
name: 'id_modulo',
type: 'string',
})
@ApiQuery({
description: 'Página en la que se encuentra el admin.',
name: 'pagina',
type: 'string',
})
get(@Request() req, @Query() query: GetDto) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarAdmin(admin);
return this.moduloMotivoService.findAllByIdModulo(
admin,
parseInt(query.id_modulo),
parseInt(query.pagina),
);
}
@Serealize(ModuloMotivoOutputDto)
@Get('reporte')
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description: 'Reporte de todos los cambios de status de un módulo.',
})
@ApiBearerAuth('jwt')
@ApiQuery({
description: 'Id del módulo.',
name: 'id_modulo',
type: 'string',
})
reporte(@Request() req, @Query() query: ModuloDto) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarSuperAdminAdmin(admin);
return this.moduloMotivoService.findAllByIdModulo(
admin,
parseInt(query.id_modulo),
);
}
@Serealize(ActividadEspecialOutputDto)
@Get('reporte-actividad-especial')
@UseGuards(AuthGuard('jwt'))
@ApiOperation({
description: 'Reporte de todos los cambios de status de un módulo.',
})
@ApiBearerAuth('jwt')
@ApiQuery({
description: 'Id de la institución.',
name: 'id_institucion',
type: 'string',
required: false,
})
reporteActividadEspecial(
@Request() req,
@Query() query: IdInstitucionOptionalDto,
) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarSuperAdminAdmin(admin);
return this.moduloMotivoService.findAllActividadEspecial(admin, query);
}
}