This commit is contained in:
xXpuma99Xx 2023-01-18 15:57:38 -06:00
parent d3514a07c3
commit f4f642ba13
4 changed files with 77 additions and 1 deletions

View File

@ -0,0 +1,25 @@
import { Expose, Type } from 'class-transformer';
import { ModuloMinOutputDto } from '../../../modulo/dto/output/modulo-min.dto';
import { OperadorMinOutputDto } from '../../../operador/dto/output/operador-min.dto';
export class ActividadEspecialOutputDto {
@Expose()
id_motivo;
@Expose()
fecha_creacion;
@Expose()
motivo;
@Expose()
numero_alumnos;
@Expose()
@Type(() => ModuloMinOutputDto)
modulo;
@Expose()
@Type(() => OperadorMinOutputDto)
operador;
}

View File

@ -10,8 +10,10 @@ 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')
@ -72,4 +74,29 @@ export class ModuloMotivoController {
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',
})
reporteActividadEspecial(
@Request() req,
@Query() query: IdInstitucionOptionalDto,
) {
const admin: Operador = req.user.operador;
this.validarUsuarioService.validarSuperAdminAdmin(admin);
return this.moduloMotivoService.findAllActividadEspecial(
admin,
parseInt(query.id_institucion),
);
}
}

View File

@ -4,10 +4,12 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { ModuloMotivoController } from './modulo-motivo.controller';
import { ModuloMotivoService } from './modulo-motivo.service';
import { ModuloMotivo } from './entity/modulo-motivo.entity';
import { InstitucionModule } from '../institucion/institucion.module';
import { ModuloModule } from '../modulo/modulo.module';
@Module({
imports: [
InstitucionModule,
forwardRef(() => ModuloModule),
PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([ModuloMotivo]),

View File

@ -6,10 +6,11 @@ import {
Injectable,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { FindManyOptions, Repository } from 'typeorm';
import { FindManyOptions, FindOptionsWhere, Repository } from 'typeorm';
import { Modulo } from '../modulo/entity/modulo.entity';
import { ModuloMotivo } from './entity/modulo-motivo.entity';
import { Operador } from '../operador/entity/operador.entity';
import { InstitucionService } from '../institucion/institucion.service';
import { ModuloService } from '../modulo/modulo.service';
@Injectable()
@ -17,6 +18,7 @@ export class ModuloMotivoService {
constructor(
@InjectRepository(ModuloMotivo)
private repository: Repository<ModuloMotivo>,
private institucionService: InstitucionService,
@Inject(forwardRef(() => ModuloService))
private moduloService: ModuloService,
) {}
@ -40,6 +42,26 @@ export class ModuloMotivoService {
);
}
async findAllActividadEspecial(
admin: Operador,
id_institucion?: number,
): Promise<ModuloMotivo[]> {
const institucion = id_institucion
? await this.institucionService.findById(id_institucion)
: null;
const busqueda: FindOptionsWhere<ModuloMotivo> = {};
if (admin.institucion) busqueda.modulo = { institucion: admin.institucion };
else if (institucion) busqueda.modulo = { institucion: institucion };
return this.repository.find({
join: {
alias: 'mmo',
innerJoinAndSelect: { m: 'mmo.modulo', i: 'm.institucion' },
},
where: busqueda,
});
}
async findAllByIdModulo(
admin: Operador,
id_modulo: number,